调用了使用链接服务器的存储过程的SQL Server代理作业不起作用



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

  • 链接服务器是指向源数据库服务器创建的,安全性是";使用登录的当前安全上下文">
  • 凭据是使用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";

相关内容

最新更新