创建一个额外的 SQL Server 登录
有时需要为数据库创建一个额外的 SQL Server 登录名(用户)。这是一个小的 T-SQL 片段,它为 SQL Server 中包含的数据库创建这样的登录并添加成员资格。
使用包含的数据库用户在数据库级别对 SQL Server 和 SQL 数据库连接进行身份验证。包含的数据库是与其他数据库以及承载该数据库的 SQL Server/SQL 数据库(和主数据库)实例隔离的数据库。SQL Server 支持包含的数据库用户进行 Windows 和 SQL Server 身份验证。
在下面的示例中,我有一个 SQL Server 数据库“yabooo”、一个用户“yabooo”和一个我知道的密码(“yabooo_password”)。使用此 T-SQL 创建一个额外的 SQL Server 用户(登录名)和成员资格。用您的值替换示例值:
USE [yabooo]
CREATE USER [yabooo] WITH PASSWORD=N'yabooo_password', DEFAULT_SCHEMA=[dbo]
ALTER ROLE [db_datareader] ADD MEMBER [yabooo]
ALTER ROLE [db_datawriter] ADD MEMBER [yabooo]
ALTER ROLE [db_ddladmin] ADD MEMBER [yabooo]
ALTER ROLE [db_securityadmin] ADD MEMBER [yabooo]
GO
GRANT EXECUTE ON SCHEMA::dbo TO [yabooo]
GO
简而言之,这是做什么的:
在数据库 yabooo 中创建一个新用户,称为 yabooo;
新用户的默认模式是dbo 模式;
用户被添加为以下固定数据库角色的成员:
db_datareader:db_datareader 固定数据库角色的成员可以读取所有用户表和视图中的所有数据。用户对象可以存在于除 sys 和 INFORMATION_SCHEMA 之外的任何模式中。
db_datawriter:db_datawriter 固定数据库角色的成员可以在所有用户表中添加、删除或更改数据。在大多数用例中,此角色将与 db_datareader 成员资格结合使用,以允许读取要修改的数据。
db_ddladmin:db_ddladmin 固定数据库角色的成员可以在数据库中运行任何数据定义语言 (DDL) 命令。该角色的成员可以通过操纵可能在高权限下执行的代码来提升他们的权限,并且他们的行为应该受到监控。
db_securityadmin:db_securityadmin 固定数据库角色的成员只能修改自定义角色的角色成员资格并管理权限。该角色的成员可能会提升他们的特权,他们的行为应该受到监控。
新创建的用户 yabooo 获得了 dbo 模式的执行权限;
ALTER ROLE您还可以使用sp_addrolemember存储过程来代替语句:
exec sp_addrolemember @membername = [yabooo], @rolename = [db_datareader]
exec sp_addrolemember @membername = [yabooo], @rolename = [db_datawriter]
exec sp_addrolemember @membername = [yabooo], @rolename = [db_ddladmin]
exec sp_addrolemember @membername = [yabooo], @rolename = [db_securityadmin]