问题描述
- 已创建指向源数据库服务器的链接服务器,并且安全性是“使用登录名的当前安全上下文进行”
- 该凭据是使用AD服务帐户创建的
- 通过选中“操作系统(CmdExec)”创建代理,
- 存储过程在insert / select命令中使用了链接服务器。当我在SSMS中执行存储过程时,该存储过程运行良好。
但是,当我使用sqlCMD从“ sql Server代理作业”步骤运行存储过程时,它不起作用。
这是我的存储过程的示例:
USE [MyDatabaseName]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[TEST_LINKED_SERVER]
AS
BEGIN
INSERT INTO MyDatabaseName.dbo.MyTableName
SELECT *
FROM [linkedservername].sourceDatabaseName.dbo.sourceTableName
END
GO
创建存储过程后,我从SSMS-存储过程中执行了该过程。我做得很好。
MyTableName
从SourceTableName
插入了数据。
- 步骤1:运行存储过程,截断
MytableName
中的数据 - 步骤2:运行“ TEST_LINKED_SERVER”存储过程,通过使用链接服务器将链接服务器/数据库/表中的数据插入另一台服务器,将数据更新为
Mytablename
。
步骤2的设置如下:
- 类型:操作系统(CmdExec)
- 运行方式:ProxyName
- 命令:sqlCMD -Q“ EXEC dbo.TEST_LINKED_SERVER”
作业成功完成。但是MytableName
没有任何数据。它是空的。数据未插入MyTableName
。
你有什么主意吗?我需要更新我的sqlCMD吗?又如何?
非常感谢您的帮助。
解决方法
我找到了解决方案并成功了:
SQLCMD -E -S MyServerName -D MyDatabaseName -Q“ EXEC dbo.TEST_LINKED_SERVER”