我需要查询链接服务器上的数据库,遗憾的是数据库名称包含句点。
这失败了;
select top 10 *
FROM [LINKED_SERVER].[DATABASE_NAME.1].dbo.[TABLE_NAME]
出现此错误:
OLE DB错误跟踪[非接口错误:OLE DB提供程序无法处理对象,因为该对象没有columnsProviderName ='SQLOLEDB',Query =“DATABASE_NAME.1”。“dbo”。“TABLE_NAME” “]。
Msg 7357,Level 16,State 2,Line 2
无法处理对象'“DATABASE_NAME.1”。“dbo”。“TABLE_NAME”'。 OLE DB提供程序“SQLOLEDB”表示该对象没有列。
在数据库名称中没有句点的情况下连接到同一个链接服务器;
select top 10 *
FROM [LINKED_SERVER].[DATABASE_NAME].dbo.[TABLE_NAME]
由于我的控件中有许多对现有数据库名称的引用,我希望找到一种避免永久重命名数据库的解决方案。
我希望能够创建同义词或其他别名,或者找到其他方法来实现这一点。
答案 0 :(得分:0)
通过链接服务器访问的数据库名称中的句点在使用方括号[]进行转义时是完全可以接受的 - 您获得的错误必须是其他错误。
我可以在我的测试台上确认这一点:
有人想过,您使用旧的SQLOLEDB
提供商作为链接服务器,您是否尝试过使用SQLNCLI10
?
答案 1 :(得分:-1)
避免使用标识符中的句点,
e.g。在SSMS中
sp_help [sales.order]
即使使用括号,也行不通