在链接的SQL Server上查询具有句点名称的数据库

时间:2013-01-11 00:14:46

标签: sql-server tsql sql-server-2005

我需要查询链接服务器上的数据库,遗憾的是数据库名称包含句点。

这失败了;

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] 

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

我希望能够创建同义词或其他别名,或者找到其他方法来实现这一点。

2 个答案:

答案 0 :(得分:0)

通过链接服务器访问的数据库名称中的句点在使用方括号[]进行转义时是完全可以接受的 - 您获得的错误必须是其他错误。

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

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

有人想过,您使用旧的SQLOLEDB提供商作为链接服务器,您是否尝试过使用SQLNCLI10

答案 1 :(得分:-1)

避免使用标识符中的句点,

e.g。在SSMS中

sp_help [sales.order] 
即使使用括号

也行不通