我想用服务器名执行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,因为它不存在或您没有权限。如何解决这个问题
答案 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;