Wes*_*olf 6 sql-server security database-permissions sql-server-2008
我刚刚从SQL2000迁移到SQL2008,并且我已经开始在使用sp_OACreate的存储过程中获得执行权限问题.
系统的其余部分可以正常使用已经设置并添加到数据库的db登录.
我试过了:
USE master
GO
GRANT EXEC ON sp_OACreate TO [dbuser]
GO
Run Code Online (Sandbox Code Playgroud)
但是这失败了以下错误:
消息15151,级别16,状态1,行1无法找到用户'dbuser',因为它不存在或您没有权限.
我以完全权限登录到sa服务器.我可以执行类似的sql语句并将权限应用于服务器角色,但不是登录/用户.
如何将更改应用于特定用户/登录?
我可以将权限应用于公共角色,它可以解决我的问题; 但是这对我来说似乎是一个安全问题,我真的不想应用于实时服务器.
该错误表明主数据库中不存在用户“ dbuser”。
我假设用户存在于master数据库中?
您可以使用以下T-SQL进行检查
USE MASTER;
GO
SELECT *
FROM sys.sysusers
WHERE name = 'dbuser'
Run Code Online (Sandbox Code Playgroud)
如果该用户不存在,则只需使用CREATE USER语句并创建一个名为“ dbuser”的用户。如果存在,则该用户将自动映射到同名登录名。
在John的回答中,我检查了主数据库上的用户列表,但我的用户不在那里.是否已删除或丢失了一些我不知道的内容.将dbs迁移到新服务器实例时可能会有些疯狂.
无论如何; 重新创建用户并将其与特定登录相关联使我能够在master数据库上运行以下语句,以允许执行存储过程.
USE MASTER
GO
GRANT EXECUTE ON [sys].[sp_OADestroy] TO [dbuser]
GO
GRANT EXECUTE ON [sys].[sp_OACreate] TO [dbuser]
GO
GRANT EXECUTE ON [sys].[sp_OAMethod] TO [dbuser]
GO
GRANT EXECUTE ON [sys].[sp_OASetProperty] TO [dbuser]
GO
Run Code Online (Sandbox Code Playgroud)
感谢所有的帮助和指示.希望这有助于将来的其他人.
| 归档时间: |
|
| 查看次数: |
22954 次 |
| 最近记录: |