Stored procedures 称为使用链接服务器的存储过程的SQL Server代理作业不起作用

Stored procedures 称为使用链接服务器的存储过程的SQL Server代理作业不起作用,stored-procedures,proxy,credentials,linked-server,sql-agent-job,Stored Procedures,Proxy,Credentials,Linked Server,Sql Agent Job,我有一个使用链接服务器的存储过程: 链接服务器是指向源数据库服务器创建的,可以使用登录的当前安全上下文进行安全保护 凭据是使用AD服务帐户创建的 代理是通过检查操作系统CmdExec创建的 存储过程在insert/select命令中使用了链接服务器bame。当我在SSMS中执行存储过程时,它运行良好。 但是,当我使用SQLCMD从SQLServer代理作业步骤运行存储过程时,它不起作用 下面是我的存储过程的示例: USE [MyDatabaseName] GO SET ANSI_NULLS O

我有一个使用链接服务器的存储过程:

链接服务器是指向源数据库服务器创建的,可以使用登录的当前安全上下文进行安全保护 凭据是使用AD服务帐户创建的 代理是通过检查操作系统CmdExec创建的 存储过程在insert/select命令中使用了链接服务器bame。当我在SSMS中执行存储过程时,它运行良好。 但是,当我使用SQLCMD从SQLServer代理作业步骤运行存储过程时,它不起作用

下面是我的存储过程的示例:

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插入数据

然后,我通过两个步骤创建了一个SQL Server代理作业:

步骤1:运行存储过程,截断MytableName中的数据 步骤2:运行TEST_LINKED_SERVER存储过程,将数据更新为Mytablename,方法是使用链接服务器在另一台服务器上插入链接服务器/数据库/表中的数据。 步骤2的设置如下所示:

类型:操作系统CmdExec 运行方式:ProxyName 命令:SQLCMD-Q EXEC dbo.TEST\u LINKED\u SERVER 作业已成功完成。但是MytableName没有任何数据。它是空的。未将数据插入MyTableName

你知道吗?我需要更新我的SQLCMD吗?怎么做


非常感谢您的帮助。

我找到了解决方案,而且效果很好: SQLCMD-E-S MyServerName-D MyDatabaseName-Q EXEC dbo.TEST\u LINKED\u SERVER