Sql server SQL Server代理作业-运行时错误服务器主体“ABC”无法访问数据库“XYZ”

Sql server SQL Server代理作业-运行时错误服务器主体“ABC”无法访问数据库“XYZ”,sql-server,Sql Server,我遇到SQL Server代理作业运行时错误: SQL Server代理作业-运行时错误服务器主体ABC无法在当前安全上下文下访问数据库XYZ。[SQLSTATE 08004]错误916。步骤失败了 我知道这里也有类似的问题,但不一定与SQL Server代理作业相关 我已经阅读了各种web文章,但尚未成功解决 服务器主体无法在当前安全上下文下访问数据库 我正在以指定用户IAM复制的身份运行作业。尝试为登录/服务器主体创建一个数据库用户,并授予足够的权限以查看作业是否有效 --The serv

我遇到SQL Server代理作业运行时错误:

SQL Server代理作业-运行时错误服务器主体ABC无法在当前安全上下文下访问数据库XYZ。[SQLSTATE 08004]错误916。步骤失败了

我知道这里也有类似的问题,但不一定与SQL Server代理作业相关

我已经阅读了各种web文章,但尚未成功解决

服务器主体无法在当前安全上下文下访问数据库


我正在以指定用户IAM复制的身份运行作业。

尝试为登录/服务器主体创建一个数据库用户,并授予足够的权限以查看作业是否有效

--The server principal "ABC" is not able to access the database "XYZ" under the current security context. [SQLSTATE 08004] (Error 916). The step failed.

use XYZ --<-- put the db name here
go

--create a database user for the server principal "ABC"
create user dbuserforABC for login ABC
go

--overly grant permissions to dbuserforABC
alter role db_owner add member dbuserforABC --better revise the dbuser permissions, use this just for poc/troubleshooting
go

--try the job again

我不知道当这不起作用时该怎么办,我仍然会遇到同样的错误/问题?可能是sql*server 2017错误/问题?如果我搜索sql server代理作业-运行时错误,服务器主体无法访问数据库,我会得到50万个结果。。。所以这一定是一个经常发生的问题。我发现了这篇文章:同样。。如果我删除作业中的运行方式,则它将正常工作。。六羟甲基三聚氰胺六甲醚。。。我也尝试过所有同样严厉的安全措施..你发现的文章中公认的答案提供了你出错的原因/解释。当您将运行设置为:以用户身份执行=IAM复制==模拟时。模拟dbuser时,只能在一个/单个数据库的上下文/作用域中工作。如果您试图访问另一个数据库或在另一个数据库上执行模块,则会出现臭名昭著的错误:当前主体无法…在当前安全上下文下出错。当前安全上下文=模拟。如果更改curerntdb SET Trusty,则在谈论代理作业时可以使用模拟运行方式,并从当前数据库访问另一个数据库,这是一种不好的安全做法,并且您确实不必这样做。您可以尝试使用Trusty进行测试,并检查它是否出于教育原因有效,但是,您应该问:我是否需要模拟/运行IAM复制?很可能您不需要这样做。