我已将一组SQL 2000数据库迁移到SQL 2008.大多数都运行良好,但我有一些存储过程由SQL Server代理作业调度和运行,这给我带来了麻烦。 许多计划的存储过程都有效,但访问默认数据库以外的数据库的存储过程失败,并显示以下消息:
以用户身份执行:XYZ \ YadaYada。服务器主体:“XYZ \ YadaYada”无法访问当前安全上下文下的数据库“MyOtherDatabaseOnSameServer”。 [SQL STATE 08004](错误619)步骤失败。
显然,我更改了名字以保护有罪。
该帐户是所有相关数据库中的用户,并且是db_owner,db_datareader和db_datawriter的成员。
当我使用相同的帐户从SMS的查询窗口运行这些相同的程序时(我尝试了很多),它们工作正常。
我错过了什么?
答案 0 :(得分:0)
你可能会看到的东西:
答案 1 :(得分:0)
这看起来像是跨数据库所有权链接问题。
检查:
希望有所帮助。
答案 2 :(得分:0)
迁移用户时,您是再次设置用户还是只是从恢复/附加操作中获取用户?
您可能需要在相关数据库上运行exec sp_change_users_login 'Auto_Fix', '<username>'
,其中<username>
是用户的实际名称。