sql server 2008 r2“无法找到该对象,因为它不存在或您没有权限”

时间:2011-09-13 19:04:56

标签: sql-server-2008

我想用服务器名执行sql命令。这是一些示例查询

 SELECT * FROM [SYSTEM1\SQLEXPRESS].Sample1.dbo.table1 
 INSERT INTO [SYSTEM1\SQLEXPRESS].Sample1.dbo.table1 values('BALA')

以上两个成功执行。在我的table1 id字段中是自动增量所以 当我执行以下命令时,它返回错误消息

 SET IDENTITY_INSERT [SYSTEM1\SQLEXPRESS].Sample1.dbo.table1 ON
 INSERT INTO [SYSTEM1\SQLEXPRESS].Sample1.dbo.table1 values(2,'KARTHIK')
 SET IDENTITY_INSERT [SYSTEM1\SQLEXPRESS].Sample1.dbo.table1 OFF

找不到对象[SYSTEM1 \ SQLEXPRESS] .Sample1.dbo.table1,因为它不存在或您没有权限。如何解决这个问题

2 个答案:

答案 0 :(得分:4)

Looks like this is a known issue with linked servers.解决方法是:

exec [Server-SQL].MyDatabase.dbo.sp_executesql N'SET IDENTITY_INSERT 
Sample1.dbo.table1 ON;
INSERT dbo.table1 values(2,''KARTHIK'');
SET Sample1.dbo.table1 OFF;'

基本上将命令作为RPC而不是直接查询运行。

答案 1 :(得分:3)

AFAIK您需要在本地执行命令。为什么不创建执行此操作的存储过程,然后存储过程可以说:

SET IDENTITY_INSERT dbo.Table1 ON;

您可以使用以下方法调用该程序:

EXEC [SYSTEM1\SQLEXPRESS].Sample1.dbo.MyProcedure;