我很好奇如何设置要作为其他SQL登录帐户执行的SQL作业步骤。看来我需要设置一个需要现有凭据的新代理帐户。创建凭据时,我唯一的选择是使用Windows登录凭据。
我尝试运行的作业如下。还有其他一些语句,但是当我将作业步骤设置为以SQL登录名运行时,它将失败。
insert into [dbo].[TableA]
SELECT
ss.[Ref_ID]
,mm.[studentID]
,mm.[studentPersonID]
,mm.[studentFirstname]
FROM [dbo].[TableB] mm
left outer join [dbo].[TableC] ss on ss.parentPersonID=mm.parentPersonID and mm.studentPersonID = ss.studentPersonID
where ss.Ref_ID is not null;
通过SQL作业步骤运行此命令时,它将失败。
Executed as user: an_admin_account. Access to the remote server is denied because the current security context is not trusted. [SQLSTATE 42000] (Error 15274). The step failed.
当所有这些表都存在于本地数据库中时,我不清楚它为什么要尝试访问远程服务器。
SQL作业步骤已与SQL实例建立连接。因此,您需要更改现有的安全上下文,而不是使用密码进行新连接。如果要创建新连接,可以使用sqlcmd命令或PowerShell脚本,然后可以在脚本中使用SQL登录名和密码作为参数。但是,您应该考虑需要做什么,以及具有其自身上下文的存储过程是否足够。
—
罗布·法利