登录(Login)用于登陆SQL Server,用户(User)用于访问数据库。创建Login之后,该Login能够登录到SQL Server实例,但是,仅仅被授予public角色,在访问数据库时,必须基于Login创建相应的数据库用户,Login和User通过SID关联。
一,创建Login
根据验证类型,Login分为SQL Server登录和Windows域登录,在创建登录时,可以设置默认数据库(Default Database),指定Login登录的默认数据库,默认值是master数据库。
1,创建SQL Server 登录
CREATE LOGIN login_name WITH PASSWORD = { 'password' } ,DEFAULT_DATABASE = database
2,创建Windows域登录
如果创建Windows域登录,映射到一个Windows域账户,登录名必须使用Windows域格式: [<domainName><login_name>].
CREATE LOGIN [<domain_Name><login_name>] FROM WINDOWS
WITH DEFAULT_DATABASE = database
二,创建数据库用户(User)
在SQL Server中,通常情况下,User的创建都是基于master 数据库中的Login,该Login的来源有三种:基于Windows 域用户,Windows 域用户组,或SQL Server 验证。
1,创建User
CREATE USER user_name FOR LOGIN login_name WITH DEFAULT_SCHEMA = schema_name
参数解释:
- user_name:是创建的数据库用户的名字,该名字在数据库中是唯一的,用于唯一标识一个用户;
- login_name:是用户登录SQL Server实例的登录名,分为Windows域登录名和SQL Server登录名。Windows域登录名的格式是:[<domainName><loginName>] 通过SID将登录名(Login)和用户名(User)关联在一起。
- WITH DEFAULT_SCHEMA = schema_name:指定用户默认的架构(Schema),默认的Schema是指用户在引用数据库对象时,如果省略框架名,那么SQL Server将首先从默认框架下进行查找数据库对象。
在创建新的用户时,没有指定用户默认的架构,有三种处理方式:
- 如果该用户是某一个Windows 用户组的成员,该组有默认的架构,那么该用户默认的架构是组的默认架构;
- 对于sysadmin角色(Fixed Server Role)的成员,其默认的架构始终是dbo,忽略Create User命令的设置;
- 如果用户不属于组,也不是sysadmin角色的成员,SQL Server不能确定该用户的架构,设置默认的架构名dbo;
2,创建用户名,基于SQL Server登录
CREATE LOGIN WanidaBenshoof WITH PASSWORD = '8fdKJl3$nlNv3049jsKK'; USE AdventureWorks2012; go CREATE USER Wanida FOR LOGIN WanidaBenshoof WITH DEFAULT_SCHEMA = Marketing;
3,创建用户名,基于Windows 域登录
CREATE USER [Domain1WindowsUserBarry] FOR LOGIN [Domain1WindowsUserBarry]; use database_name go CREATE USER [Domain1WindowsGroupManagers] FOR LOGIN [Domain1WindowsGroupManagers];
参考文档: