我想创建一个新用户' user1'这将能够查看所有数据库和所有表,并执行SQL语句,程序等。
我唯一想要否认的是创建/删除或更改数据库(重命名,更改属性,创建新数据库或删除现有数据库)。
我该怎么做?
答案 0 :(得分:1)
如果它是开发服务器,我发现在MODEL数据库中创建具有所有权限组合的角色最简单,然后将该角色分配给映射到您需要的登录的用户。创建新数据库时,将自动为该用户分配该数据库的权限。
这里有两个警告:登录必须存在于服务器上,否则您将无法创建新数据库。另一个重要的一点是,默认情况下,用户将拥有完全不必要的权限来读取和写入模型数据库 - 在生产服务器上绝对不是一个好主意。在生产服务器上,只需在model数据库中创建角色,但只为您需要的数据库创建用户。
这是您可以用来创建角色的脚本:
USE [model]
GO
CREATE ROLE [db_data_read_write_execute] AUTHORIZATION [db_securityadmin]
GO
ALTER ROLE [db_datareader] ADD MEMBER [db_data_read_write_execute]
ALTER ROLE [db_datareader] ADD MEMBER [db_data_read_write_execute]
GRANT EXECUTE to [db_data_read_write_execute]
GO
CREATE USER [DML_Only_User] FOR LOGIN [DML_Only_User_Login] WITH DEFAULT_SCHEMA=[dbo]
GO
ALTER ROLE [db_data_read_write_execute] ADD MEMBER [DML_Only_User]