Sql 服务器代理作业无法执行存储过程
Sql Server Agent job failing to execute stored procedure
我有一个可以在 SSMS 中使用非域 SQL 服务器用户执行的存储过程。
此存储过程从一个数据库 (DB1) 中的 table 中选择数据截断并选择到 DB2 中的 table 中。
用户拥有两个数据库的数据读取器、数据写入器和数据库所有者。
问题:
当我以用户身份通过 SS 代理执行存储过程时,出现以下错误
The server principal [user] is not able to access the database [DB1]
under the current security context.
到目前为止采取的行动:
到目前为止,我已尝试通过以下方式解决此问题:
- 为两个数据库打开数据库链接
- 从 DB1 中删除用户并重新添加
- 使用
EXEC sp_change_users_login @Action=’Report’
检查用户是否孤立。因为这是一个数据库,它是一个实时数据库的恢复。但是我在恢复后添加了用户。 用户未被列为孤儿
如果您不想让所有者成为 sa,一个可能的解决方法是让用户成为 msdb 的成员并授予 msdb 中的 SQLAgentOperatorRole。看看是否有效。
不过老实说,要么用sa,要么用权限足够的专用服务账号。如果作业在该上下文下运行会更好。
我有一个可以在 SSMS 中使用非域 SQL 服务器用户执行的存储过程。
此存储过程从一个数据库 (DB1) 中的 table 中选择数据截断并选择到 DB2 中的 table 中。
用户拥有两个数据库的数据读取器、数据写入器和数据库所有者。
问题:
当我以用户身份通过 SS 代理执行存储过程时,出现以下错误
The server principal [user] is not able to access the database [DB1] under the current security context.
到目前为止采取的行动:
到目前为止,我已尝试通过以下方式解决此问题:
- 为两个数据库打开数据库链接
- 从 DB1 中删除用户并重新添加
- 使用
EXEC sp_change_users_login @Action=’Report’
检查用户是否孤立。因为这是一个数据库,它是一个实时数据库的恢复。但是我在恢复后添加了用户。 用户未被列为孤儿
如果您不想让所有者成为 sa,一个可能的解决方法是让用户成为 msdb 的成员并授予 msdb 中的 SQLAgentOperatorRole。看看是否有效。
不过老实说,要么用sa,要么用权限足够的专用服务账号。如果作业在该上下文下运行会更好。