我有一个使用链接服务器的存储过程:
- 链接服务器是指向源数据库服务器创建的,安全性是";使用登录的当前安全上下文">
- 凭据是使用AD服务帐户创建的
- 该代理是在";操作系统(CmdExec(">
- 存储过程在insert/select命令中使用了链接的服务器bame。当我在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存储过程中执行它。我工作得很好。
CCD_ 1具有从CCD_ 2插入的数据。
然后,我用两个步骤创建了一个SQL Server代理作业:
- 步骤#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";