【发布时间】:2009-01-19 02:07:35
【问题描述】:
在 SQL Server 中为用户分配 db_datareader 和 db_datawriter 角色的确切 SQL 是什么?
用户名为MYUSER,数据库为MYDB。
【问题讨论】:
标签: sql-server tsql
在 SQL Server 中为用户分配 db_datareader 和 db_datawriter 角色的确切 SQL 是什么?
用户名为MYUSER,数据库为MYDB。
【问题讨论】:
标签: sql-server tsql
在 SQL Server 2012、2014 中:
USE mydb
GO
ALTER ROLE db_datareader ADD MEMBER MYUSER
GO
ALTER ROLE db_datawriter ADD MEMBER MYUSER
GO
在 SQL Server 2008 中:
use mydb
go
exec sp_addrolemember db_datareader, MYUSER
go
exec sp_addrolemember db_datawriter, MYUSER
go
同时分配执行数据库所有存储过程的能力:
GRANT EXECUTE TO MYUSER;
分配执行特定存储过程的能力:
GRANT EXECUTE ON dbo.sp_mystoredprocedure TO MYUSER;
【讨论】:
从 SQLServer 2012 开始更优雅alter role:
use mydb
go
ALTER ROLE db_datareader
ADD MEMBER MYUSER
go
ALTER ROLE db_datawriter
ADD MEMBER MYUSER
go
【讨论】:
最好先创建一个新角色,然后授予该角色执行、选择...等权限,最后将用户分配给该角色。
创建角色
CREATE ROLE [db_SomeExecutor]
GO
授予此角色的权限
GRANT EXECUTE TO db_SomeExecutor
GRANT INSERT TO db_SomeExecutor
添加用户数据库>安全>>角色>数据库角色>属性>添加(右下角)你可以搜索AD用户然后添加
或
EXEC sp_addrolemember 'db_SomeExecutor', 'domainName\UserName'
请参考post
【讨论】: