Stored procedures 称为使用链接服务器的存储过程的SQL Server代理作业不起作用
我有一个使用链接服务器的存储过程: 链接服务器是指向源数据库服务器创建的,可以使用登录的当前安全上下文进行安全保护 凭据是使用AD服务帐户创建的 代理是通过检查操作系统CmdExec创建的 存储过程在insert/select命令中使用了链接服务器bame。当我在SSMS中执行存储过程时,它运行良好。 但是,当我使用SQLCMD从SQLServer代理作业步骤运行存储过程时,它不起作用 下面是我的存储过程的示例: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
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