1

我需要在链接服务器上查询数据库,不幸的是数据库名称包含一个句点。

这失败了;

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"']。
消息 7357,级别 16,状态 2,第 2 行
无法处理对象 '"DATABASE_NAME.1"."dbo"."TABLE_NAME"'。OLE DB 提供程序“SQLOLEDB”指示该对象没有列。

连接到数据库名称中没有句点的同一个链接服务器有效;

select top 10 * 
FROM [LINKED_SERVER].[DATABASE_NAME].dbo.[TABLE_NAME] 

由于我无法控制对现有数据库名称的许多引用,我希望找到一种避免永久重命名数据库的解决方案。

我希望能够创建同义词或其他别名,或者找到其他方法来使其正常工作。

4

2 回答 2

0

当用括号 [] 转义时,通过链接服务器访问的数据库名称中的句点是完全可以接受的 - 你得到的错误一定是别的东西。

我可以在我的测试台上确认这一点:

http://www.heavencore.co.uk/filehub/uploaded/LinkedServerWithPeriod.jpg

一个想法,您为链接服务器使用旧SQLOLEDB提供程序,您是否尝试过使用SQLNCLI10

于 2013-01-11T00:32:24.573 回答
-1

避免标识符中的句点,

例如在 SSMS

sp_help [sales.order] 

即使有括号也不行

于 2015-07-23T16:00:27.267 回答