2015-04-01 51 views
1

因此,我在SQL SERVER中有一个链接服务器(访问mdb数据库)。我在那里有一个名为XX2 Sectors的表格(是的,我知道表名/列中的空格是一种不好的做法,但在这种情况下我没有任何控制权)。在链接服务器表上运行更新查询时,SQL SERVER - 定界标识符[]不起作用

当我在表格上这个表上运行SELECT查询

SELECT * FROM [Server_Name]...[XX2 Sectors] 

它工作完全正常,但是当我运行和UPDATE查询例如

UPDATE [Server_Name]...[XX2 Sectors] SET Column_Name = 'Variable' WHERE  
Column_Name = 'whatever'` 

I get an error: OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "Server_Name" returned message "The Microsoft Access database engine cannot find the input table or query 'XX2'. Make sure it exists and that its name is spelled correctly."

- >所以basicaly它切断的空白点​​,这[]应防止表名......但是,如果我重命名表,从XX2 SectorsXX2_Sectors - >有效去除空白那么UPDATE查询工作正常。

有什么想法?我想我试了一切,我现在处于亏损状态......

谢谢。

+0

您应该包括四个名称refereence的所有部分:UPDATE [server]。[database]。[schema]。[table]。 。 。' – 2015-04-01 11:30:46

+0

这是一个访问数据库,在那里只有服务器和表名。正如之前所说的,当我使用SELECT语句或重命名表格时没有空格,它工作正常 - >以便消除这个可能的问题。 – uFlock 2015-04-01 11:33:32

回答

0

更新:所以答案是,由于某些原因,当您使用链接的服务器SQL Sever的(错误或不我不知道),但如果你尝试更新在链接的数据表(它是访问)根据字段的值,它将无法工作,除非你更新其他的东西,或选择另一个标准。例如:

UPDATE TABLE SET FIELD1 = Z WHERE FIELD1 = X 

将无法​​正常工作,但

UPDATE TABLE SET FIELD1 = Z WHERE FIELD2 = X 

OR

UPDATE TABLE SET FIELD1 = Z, FILED2 = F WHERE FIELD1 = Y 

OR

UPDATE TABLE SET FIELD1 = Z, FIELD2 = FIELD2 WHERE FIELD1 = X 

将正常工作。

-------- OLD回答以下------

3小时后,我发现这个问题的解决方案,它不幸意味着有作为问题解决本身我后无解启动...

+0

很高兴听到解决它的问题本身就是大声笑。祝你好运。 – 2015-04-01 12:52:49

+1

是的,我认为问题在于SQL管理工作室中的查询选项卡变成了越野车(因为它通常发生在微软的一切中)并且打开一个新的查询标签可能会解决它或者它只是一个奇怪的巧合。 – uFlock 2015-04-01 13:20:27

0

尝试使用QUOTENAME

Returns a Unicode string with the delimiters added to make the input string a valid SQL Server delimited identifier.

QOUTENAME(XX2 Sectors)而不是[XX2 Sectors]

+0

如果我使用'UPDATE [DR2_SECTORS] ... QOUTENAME(DR2 Sectors)'',那么我有en错误'附近的'Sectors'语法不正确.'但是如果我使用UPDATE [DR2_SECTORS] ... [QOUTENAME(DR2 Sectors) ]'我得到一个错误'链接服务器“Server_Name”的OLE DB提供程序“Microsoft.ACE.OLEDB.12.0”不包含表“QOUTENAME(XX2 Sectors)”。该表或者不存在,或者当前用户对该表没有权限。' – uFlock 2015-04-01 11:17:30

+0

如果问题本身解决了,最好使用'QOUTENAME'而不是'[]' – 2015-04-01 13:27:28