我在链接服务器上创建了一个不明智的表名,并且能够毫无问题地访问它。在目标服务器上:
USE dbname;
GO
CREATE TABLE dbo.[report.datasetstatus](status INT);
然后在运行查询的服务器上:
SELECT [status] FROM [server].dbname.dbo.[report.datasetstatus];
这没有问题。如果您收到类似 table not found 之类的错误消息,则可能是因为您没有权限,您拼写错误的 table,或者它与dbo
. 例如,如果表实际上在report
模式中,那么您不应该同时指定dbo
:
SELECT [status] FROM [server].dbname.report.datasetstatus;
当然,如果您的表名为report.datasetstatus
,则更聪明的解决方案是首先不使用如此糟糕的表名,无论是否涉及链接服务器。解决此问题的一种方法是.
将名称中的 替换为_
:
EXEC [server name].[database]..sp_rename
@objname = N'dbo.[report.datasetstatus]',
@newname = N'report_datasetstatus',
@objtype = N'OBJECT';