用SQL Server Enterprise Manager 管理SQL Server 登录

在SQL Server中通过SQL Server Enterprise Manager，执行以下步骤来管理SQL Server登录：

启动SQL Server Enterprise Manager，单击登录服务器紧邻的标志；

单击安全性文件夹旁边的+标志；

右击Logins图标，从弹出菜单中选择NewLogin选项，SQL Server 将弹出SQL Server Properties- New Login对话框，如图6-2所示：

图6-2 SQL Server Properties - New Login 对话框

在Name单行编辑框中输入登录名，如上图6-2 所示。

在Authentication下的选项栏中，选择身份认证模式。如果正在使用SQL Server认证模式，那么再选择SQL Server authentication单选按钮之后必须在password中输入密码。如果正在使用NT认证模式，那么再选择Windows NTauthentication单选按钮之后，则必须在Domain中输入域名；

在Default下的两个选项框中指出用户在登录时的默认数据库以及默认的语言；

单击确定按钮创建登录。

使用Transact_SQL 管理SQL Server登录

在SQL Server中一些系统过程提供了管理SQL Server 登录功能，主要包括：

sp_granlogin sp_revokelogin sp_denylogin sp_addlogin sp_droplogin sp_helplogins

下面将对这些系统过程如何管理登录进行逐一介绍：

1.sp_addlogin

创建新的使用SQL Server认证模式的登录账号，其语法格式为：

sp_addlogin [@loginame =] 'login' [ ,[@passwd =] 'password'] [ ,[@defdb =] 'database'] [,[@deflanguage =] 'language'] [ ,[@sid =] 'sid'] [,[@encryptopt =] 'encryption_option']

其中：

（1）@loginame： 登录名；

（2）@passwd： 登录密；

（3）@defdb： 登录时缺省数据库；

（4）@deflanguage： 登录时缺省语言；

（5）@sid： 安全标识码；

（6）@encryptopt： 将密码存储到系统表时，是否对其进行加密；

（7）@encryptopt： 参数有三个选项；

（8）NULL： 表示对密码进行加密；

（9）skip_encryption： 表示对密码不加密；

（10）skip_encryption_old：只在SQL Server升级时使用，表示旧版本已对密码加密。

例1：创建一个新登录用户：

exec sp_addlogin '江枫' 'UGV' 'pubs' 'us_english' @encryptopt ='skip_enctyption'

－－－－－－－－－－－－－

2.sp_droplogin

SQL Server 中删除该登录账号，禁止其访问SQL Server，其语法格式为：

sp_droplogin [@loginame =] 'login'

例2：删除SQL Server登录者‘小张’

exec sp_droplogin ‘小张’

注意：

不能删除系统管理者sa以及当前连接到SQL Server的登录。

如果与登录相匹配的用户仍存在数据库sysusers表中，则不能删除该登录账号：

sp_addlogin 和sp_droplogin 只能用在SQL Server 认证模式下。

3.sp_granlogin

设定一Windows NT用户或用户组为SQL Server登录者；其语法格式为：

sp_grantlogin [@loginame =] 'login'

例3将Windows NT用户MIS96\XJ设定为SQLServer登录者：

exec sp_grantlogin 'MIS96\XJ’

－－－－－－－－－－－－－－

4. sp_denylogin

拒绝某一 NT 用户或用户组连接到 SQL Server，其命令格式为：

sp_grantlogin [@loginame =] 'login'

例4拒绝NT用户MIS96\XJ登录到SQL Server：

exec sp_denylogin 'Corporate\GeorgeW'

5.sp_revokelogin

用来删除NT用户或用户组在SQL Server上的登录信息：其语法格式为：

sp_revokelogin [@loginame =] 'login'

删除NT 用户MIS96\XJ登录到SQL SERVER的登录信息：

exec sp_revokelogin 'Corporate\GeorgeW'

使用sp_revokelogin并不能完全拒绝某一用户登录到SQL Server，比如：对于NT用户XJ来说，其归属于组GROUP1，则只要该NT用户组具有登录SQL Server的权限，即使执行了上例中的语句，用户XJ仍可以登录到SQL Server上。同理只要用户XJ的登录信息没有被删除，即使GROUP1的登录信息被删除，则该用户仍能登录到SQLServer上。

6.sp_helplogins

sp_helplogins 用来显示SQL Server所有登录者的信息，包括每一个数据库里与该登录者相对应的用户名称。其语法格式为：

sp_helplogins [[@LoginNamePattern =] 'login']

如果未指定@LoginNamePattern，则当前数据库中所有登录者的信息包括NT登录者都将被显示。

例5显示登录者江枫的登录信息：

sp_helplogins @LoginNamePattern = '小张'

输入信息为：

LoginName SID DefDBName DefLang Name User ARemote --------------------------------------------------------------------------------------------

小张0x2188373E9B5CD411950630064AC10000 pubs us_english yes no 1 row s affected LoginName DBName UserName UserOrAlias

--------- -------- ---------------- -----------

小张 my db_owner MemberOf

小张 my dbo User

小张 pubs db_owner MemberOf

小张 pubs ugv User
4 row s affected

-------------------------