安全用户图形化操作

1:先创建安全-登录名

2:再创建指定数据库用户创建自定义架构和数据库用户名一样并绑定刚创建的登录名

3:为数据库用户授予表的操作权限

SQL Server 2008 安全性
在数据库系统的设计和管理中,安全性通常是最有挑战性的一个方面。数据库管理员总
是希望服务器能尽可能地安全,同时又不必投入大景资金或是牺牲用户功能。遗憾的是,很
多管理员和应用程序开发人员对安全性的好处有所怀疑,认为他们不会受到任何侵害。事实
上,只要用户能够访问数据,就会有安全漏洞。那怎么办呢?使 SQL Server脱机,把它锁在 一个只有您能够进入的屋子里,要求所有数据库请求都由您手动处理?
安全性并不是保证系统完全不受攻击,而是减少风险,对风险采取应对措施,以及保
证您采取必要的步骤来减小受攻击的范围。记住,给予用户通过网络访问数据库的权限就
会引入风险因素。本章从外到内介绍了 SQL安全性。通过本章的学习,您可以了解到可用
的不同类型的帐户和主体,如何控制对数据库对象的访问,以及如何加密和保护数据。本
章还包括一些指导原则,帮助为部署和管理SQL Server提供一个安全的解决 方 案 。
因为SQL Server 2008被设计为与Windows Server 2008 一起使用,所以本章的一些示 例在其他操作系统(如Windows Vista、Windows X P或 Windows Server 2003)中的行为可能
有些不同。本章的所有示例以Windows Server 2008为基?| 。另外,记得用您自己的服务器 名称替换本书中使用的服务器名称。
6.1 SQL Server身份验证模式
Microsoft SQL Server 2008提供了两种对用户进行身份验证的模式。默认模式是Windows
身份验证模式,它使用操作系统的身份验证机制对需要访问服务器凭据进行身份验证,从
而提供了很髙的安全级别。另一种模式是SQL Servei•和 Windows身份验证模式,允许基 于 Windows的和基于SQL的身份验证。因此,它有时被称为混合模式。虽然Windows身 份验证模式所提供的安全性要好于SQL Server和 Windows身份验证模式,但是您的应用 程序设计可能要求基于SQL的登录名。
Windows身份验证模式允许使用存储在本地计算机的安全帐户管理器(SAM)数据库中 的现有帐户,或者,如果该服务器是活动目录域的一个成员,则可以使用Microsoft Windows 活动目录数据库中的帐户。使 用 Windows身份验证模式的好处包括允许SQL或数据库管 理员使用已经存在的帐户,从而减少管理开销,以及允许他们使用更强大的身份验证协议,
例如 Kerberos 或 Windows NT LAN Manager (NTLM)O

在Windows身份验证模式中,SQL并不存储或需要访问用于身份验证的密码信息。Windows 身份验证提供程序将负责验证用户的真实性。
混合模式允许创建SQL Server独有的登录名,这些登录名没有相应的Windows或活 动目录帐户。这可以帮助那些不属于您的企业的用户通过身份验证,并获得访问数据库中
安全对象的权限。当使用SQL登录名时,SQL Server将用户名和密码信息存储在master 数据库中,它负责对这些凭据进行身份验证。
在决定身份验证方式时,需要确定用户将如何连接到数据库。如果SQL Server和数据 库用户属于同一个活动目录森林,或是属于共享一个信任的不同森林,那么使用Windows 身份验证可以简化创建和管理登录名的过程。不过,如果SQL Server不在活动目录域上, 或数据库用户不在组织内部,则可以考虑使用基于SQL的登录名清楚区分安全上下文。
在第2 章中,您学习了如何安装Microsoft SQL Server2008,而且选择了使用何种身份
验证方式。如果在安装后想改变身份验证方式,那么需要重新启动SQL Server服务。
6.1.1 通 过 Management Studio更改身份验证模式
要在Management Studio中更改身份验证模式,可遵循以下步骤:
(1) 启动 SQL Server Management Studio。
(2) 在 “对象资源管理器”中选择要更改的服务器。
(3) 右击服务器,然后选择“属性”命令,这将会打开“服务器属性”界面,如图6-1
所示。
(4) 在 “选择页”窗格下,选择“安全性”页。
(5) 在 “服务器身份验证”部分,选择或査看合适的身份验证模式。

SQL SERVER数据库安全图片 sql server安全性是什么_SQL SERVER数据库安全图片

6 .1 .2 使 用 xpjnstance_regwrite矿展存储过程
只要对本地服务器有管理权限,也可以采用xpjnstance_regwrite扩展存储过程来更改身

份验证模式。下面的例子将显示如何把身份验证身份验证模式改为SQL Server和 Windows 身份验证模式:
USE m aster
EXEC xp_instance_regwrite N •HKEY_LOCAL_MACHINE', N*Software\Microsoft:\MSSQLServer\MSSQLServer•, N •LoginMode•, REG_DWORD, 2
也可以通过把DWORD值改为1 ,把身份验证模式改为Windows身份验证模式。如下
例所示:
USE master EXEC xp_instance_regwrite N*HKEY_LOCAL_MACHINE *, N ’Software\Microsof t:\MSSQLServer\MSSQLServer’,N 1LoginMode *, REG_DWORD, 1
在安装SQL Server时,sa帐户默认是禁用的。如果将Windows身份验证模式改为SQL Server
和Windows身份验证模式,帐户仍是禁用的,并保持在安装向导中指定的密码不变。建议不要 在生产环境中使用sa帐户,特别是如果有多人具有SQL Server的管理权限时更是如此,因为 这样无法问责。如果多人可使用sa帐户登录,就不能将审核操作与特定的人关联起来。
6 . 2 主体
主体(Principal)这个术语用于描述将与SQL Server交互的个人、组和进程。主体可用的资 源取决于它们的位置。Microsoft SQL Server支持几种不同类型的主体,它们定义在3 个不同 的级别上:Windows级别、SQL Server级别和数据库级别。在这里可看到每种主体类型以及 它们的使用方式。为了练习本章中的示例,您需要创建一些本地的Windows帐户,如下所示: (1) 在 “开始”菜单中,右 击 “我的电脑”,选 择 “管理”命令。
(2) 在 “服务器管理器”窗口中,展 开 “配置”节点,然后展开“本地用户和组”节
点(如图6-2所示)。

(3) 右 击 “用户”文件夹,然后选择“新用户”命令。
(4) 在 “用户名”框中,输 入Bob。 (5) 在 “密码”和 “确认密码”框中,输入P@sswOrd。 (6) 取消选择“用户下次登录时须更改密码”复选框。
(7) 单 击 “创建”按钮。

(8) 在 “用户名”框中,输 入 CarolStreet。
(9) 在 “密码”和 “确认密码”框中,输入P@ssw0rdo (10) 取消选择“用户下次登录时须更改密码”复选框。
(11) 单 击 “创建”按钮。
(12) 在 “用户名”框中,输入Alice。 (13) 在 “密码”和 “确认密码”框中,输入P@ssw0rd。 (14) 取消选择“用户下次登录时须更改密码”复选框。
(15) 单 击 “创建”按钮。
(16) 单 击 “关闭”按钮。
(17) 右 击 “组”文件夹,选 择 “新建组”。
(18) 在 “组名”框中,输入 G Northwest Sales。
(19) 单 击 “创建”按钮。
(20) 单 击 “关闭”按钮。
(21) 关 闭 “服务器管理器”窗口。
6 .2 .1 登录名
Microsoft SQL Server 2008为身份验证提供了两种登录名。Windows登录名和存储在活
动目录或本地安全帐户管理器(SAM)数据库中的用户或组帐户相关联。SQL登录名用来表
示没有Windows帐户的个人或实体,必须依赖SQL Server存储和管理帐户信息。 无论表示的是个人还是组,Windows登录名都受限于帐户所在的域或SAM的密码策 略。当为Windows用户或组创建登录名时,SQL Server中不会存放密码信息。Windows登 录名的密码存储为NULL,即使用值填充了这个字段,该值也往往被忽略。在连接到SQL
Server之前,Windows登录名也需要身份验证。这就意味着在连接SQL Server时,活动目 录或操作系统已经确认了主体的身份。
当为一个组创建Windows登录名时,该组的所有成员都能被SQL Server成功进行身 份验证,而不必为每个用户创建登录名。
不过,SQL Server登录名必须进行身份验证。这样SQL Server就要负责确认用户的 身份。SQL将登录名和密码哈希值存储在master数据库中。SQL登录名的密码坚持最佳 安全实践(如启用复杂性要求、禁止永不过期密码、要求密码定期更换等)是非常重要的。
事实上,Microsoft SQL Server 2008中的选项允许基于Windows或活动目录策略对SQL
登录名的密码复杂性和期限做出要求。复杂的密码至少要具有以下4 类字符中的3 类:
* 大写字母字符
• 小写字母字符
• 非负整数(0〜9)
• 特殊字符($、%、*、&)
注意:
如果SQL Server是活动目录域的一个成员,那么密码策略通常定义在一个链接到该域 的组策略对象中。对于SQL登录名或基于本地Windows帐户的登录名来说,这可能会被

链接到一个组织单元的组策略对象所取代。如 果 SQL Server不是活动目录域的成员,密码 策略则定义在本地组策略对象或本地安全策略(这是本地组策略对象的子集)中。
和 SQL以前的版本不同,SQL Server 2008并不自动为[BUILTINXAdministrators]组创建
登录名,以免使服务器上具有本地管理权限的任何人都可以登录进该SQL Server。相反, 必须在安装向导中设置帐户时添加管理员(参 见 第 2 章),或在安装后将管理员添加到
sysadmin角色(本章稍后讨论)> 同时还创建了一个SQL登 录 名 sa。sa帐户对于所有的SQL 功能拥有完全管理访问权限。在安装时,系 统 会 提 示 为 s a 帐户指定密码。不管是使用 Windows身份验证模式还是混合模式 安 装 SQL Server, sa帐户都被禁用,并在您选择启用 该帐户之前保持禁用状态。
SQL Server 2008中另一新功能是通过GUI创建映射到证书或非对称密钥的SQL Server
登录名。SQL Server 2005只允许 通 过 T-SQL创建这种映射。这种映射必须在登录名创建过 程中指定,而证书或非对称密钥必须在映射前创建。有关创建和管理证书和对称密钥的内
容将在本章后面介绍。
1. 在 Management Studio中创建登录名
要 使 用 Management Studio创建登录名,步骤如下:
(1) 在 “对象资源管理器”中展开服务器。
(2) 展 开 “安全性”文件夹。
(3) 右 击 “登录名”文件夹,选 择 “新建登录名”命令。
(4) 在 “登 录 名 -新建”对话框(如图6-3所示)中,输入想要添加的登录名,或单击“搜
索 ”按钮浏览Windows帐户。

SQL SERVER数据库安全图片 sql server安全性是什么_SQL SERVER数据库安全图片_02

(5 )如果创建SQL登录名,那么选择“SQL Server身份验证”单选按钮。 ⑹ 在选择“SQL Server身份验证”单选按钮时,可以选择不强制实施密码策略。 (7)也可以改变用户的默认数据库和语言。
为 Alice新 建 一 个 登录名
要为Alice新建一个登录名,步骤如下: (1) 在 “对象资源管理器”中展开服务器。
(2) 展开“安全性”文件夹。
(3) 右击“登录名”文件夹,选择“新建登录名”命令。
(4) 在 “登录名-新建”对话框中,单击“搜索”按钮。
(5) 在 “选择用户或组”对话框中,输入Alice并单击“确定”按钮。
(6) 选择AdventureWorks2008作为默认数据库。
⑺ 单 击 “确定”按钮。
2 . 使 用 T-SQL创 建 登录名
另外,也可以使用CREATE LOGIN语句。CREATE LOGIN允许创建Windows登录名
或 SQL登录名。该语句取代了先前版本的SQL所使用的两个存储过程:sp_grantlogin和 sp_addlogin。在 SQL Server 2008中,为了向后兼容,这两个存储过程仍可用,但它们己被 废弃,并且可能将在未来版本的SQL中删除。可以使用下列CREATE LOGIN语句格式:
CREATE LOGIN [name] {WITH <options> FROM <source>}
表 6-1和表6-2分别列出了该语句中可用的选项和源。

SQL SERVER数据库安全图片 sql server安全性是什么_SQL SERVER数据库安全图片_03

SQL SERVER数据库安全图片 sql server安全性是什么_SQL SERVER数据库安全图片_04

注 意 :
在将密码存储到数据库之前,SQL Server会自动将其哈希化.使用HASHED选项时 要小心,除非可以肯定您提供的密码已经被SQL Server哈 希了。例如,如果输入如下语句:
CREATE LOGIN Bill WITH PASSWORD = ,P@ssw0rd, HASHED
SQL会假定P@ssw0rd是另一个值的哈希值。所以当Bill试图使用P@ssw0rd登录时,身 份验证会失败。可 以使用loginproperty函数来获取一个现有用户的密码的哈希值,如下例所示:
SELECT LOGINPROPERTY(•bill', 'passwordhash')
3 .管理登录名
SQL Server Management Studio提供了几个用于配置登录名的属性页,本章稍后将进行
介绍。除 “常规”属性页之外,您应该比较熟悉“状态”属性页,该属性页允许启用或禁
用登录、解锁登录,以及授予或拒绝连接至该SQL Server的访问。 在 “常规”属性页中,可以更改下列属性:
• 密码
• 密码策略
• 密码过期
• 强制用户在下次登录时更改密码

• 默认数据库
• 默认语言
也可以使用ALTER LOGIN语句管理登录名。除了先前列出的CREATE LOGIN语句
的选项之外,ALTER LOGIN语句使用如下格式:
ALTER LOGIN name {<status> I WITH <options>}
/
表 6-3描述了该语句t 用的选项。

SQL SERVER数据库安全图片 sql server安全性是什么_SQL_05

4 . 使用 CREATE LOGIN 语句
要用Transact-SQL创建一个新的登录名,可以使用CREATE LOGIN语句。下面的例
f 为 AughtEight服务器上一个名为Bob的用户帐户创建一个新的登录名:
CREATE LOGIN [AughtEight\Bob] from Windows;
GO
要为一个Windows组创建一个新的登录名,o了使用下列代码:
CREATE LOGIN [AughtEight\G Northwest Sales] from Windows;
GO
要为Carol创建一个新的SQL Server登录名,可以使用下列语法:
CREATE LOGIN Carol WITH PASSWORD = ,This 1$I\/丨yP@ssw0rd,; GO

要 想 将 Carol的密码改为全部小写的newpassword,可使用如下命令:
ALTER LOGIN Carol WITH PASSWORD =•newpassword•, CHECK_POLICY=OFF;
GO
要删除现有登录名,可 使 用 DROP LOGIN语句。例如,如果想要删除Bob的登录名(Bob 有一个基于Windows的登录名),可使用如下命令:
DROP LOGIN [AughtEightXBob]; GO
5 .更多信息
为了向后兼容,Microsoft SQL Server 2008支 持 表 6-4中列出的用于管理登录名的存储
过程。由于这些存储过程已被废弃,您应该使用CREATE LOGIN和 ALTER LOGIN语句。

SQL SERVER数据库安全图片 sql server安全性是什么_SQL_06

6 .2 .2 凭据
Microsoft SQL Server 2008还包括一个将SQL Server登录名映射到外部Windows帐户
的功能。如果需要允许SQL Server登录名与SQL Server本身范围之外的资源(如链接服务 器或本地文件系统)交互,这个功能很有帮助。它们还可与为EXTERNAL_ACCESS权限配
置的程序集一起使用。
凭据可以配置为一对一映射,也可以配置为多对一映射,允许多个SQL Server登录名 使用一个共享Windows帐户进行外部访问。在 SQL Server 2008中,登录名可与多个凭据 相关联,而 SQL Server 2005只 允 许 一 个登录名映射到一个凭据。也可将凭据配置为使用 EKM提供程序。
1 .创建一个新凭据
创建一个新凭据的步骤如下所示:
(1) 在 “对象资源管理器”中展开服务器。
(2) 展 开 “安全性”文件夹。
(3) 右 击 “凭据”文件夹,选 择 “新建凭据”命令,这 将 打 开 “新建凭据”窗口(如图
6-4所示)。

SQL SERVER数据库安全图片 sql server安全性是什么_Server_07

 

(4) 输入凭据的名称。
(5) 在 “标识”部分,输入一个Windows帐户的名称,或者单击“…”按钮浏览并选 择一个帐户。
(6) 输入帐户的密码。
(7) 再次输入以确认密码。
(8) 启 用 “使用加密提供程序”复选框(如果需要的话)。
(9) 选择一个有效的EKM提供程序(如果选择f 上面的选项)。 (10) 单 击 “确定”按钮。
2 . 使用 Transact-SQL
也可以使用CREATE CREDENTIAL语句创建一个新的SQL凭据对象。其语法如下所示:
CREATE CREDENTIAL name WITH IDENTITY = * identity_name' [, SECRET ® 1 secret* ] [FOR CRYPTOGRAPHIC_PROVIDER provide rename]
同样,ALTER CREDENTIAL语句可用于修改凭据的名称、与凭据关联的身份以及密
码。一旦不再需要凭据,就可以使用DROP CREDENTIAL命令将其删除,如下所示:
DROP CREDENTIAL name
试一 试 为 Windows账户创建— 新凭据
本章前面创建了一个名为CarolStreet的 Windows帐户,其密码是P@ssw0rd。现在要

为该用户创建一个新的名为StreetCred的凭据。运行下面的脚本时,使用您自己的服务器名
称替代 AughtEight: USE m aster
CREATE CREDENTIAL StreetCred WITH IDENTITY = 'AughtEight\CarolStreet', SECRET = ,P@ssw0rd,; GO
然后就可以把Carol的 SQL Server登录名和StreetCred凭据相关联:
ALTER LOGIN Carol WITH CREDENTIAL =StreetCred; GO
6 .2 .3 服务器角色
Microsoft SQL Server 2008定义了 8 个可用于简化SQL登录名管理(和委托管理)的服务
器级别角色。这些角色通常被称为固定服务器角色,因为对于这些角色,唯一能更改的只
是成员资格。固定服务器角色可以基于角色的用途,为一个登录名自动指派一组通用权限。
另外,SQL Server 2008还包含一个public服务器角色。除了定制public服务器角色的成
员列表外,还可为表格格式;数据流(TDS,Tabular Data Stream)端点定义协议所特定的权限。第 7 章将更详细地介绍这些端点。默汄情况下,所有登录名都是public服务器角色的成员。
1 .使用固定服务器角色
表 6-5按照出现在服务器上的顺序列出了固定服务器角色。

SQL SERVER数据库安全图片 sql server安全性是什么_SQL SERVER数据库安全图片_08

要向固定服务器角色添加一个登请名,可使用sp_addsrvrolemember存储过程。该存储 过程的格式如下所示:

sp_addsrvrolemember [ @loginame= ] * login1 , [ @rolename = ] 'role1
只要提供登录名和角色名。要将Ted添加到securityadmin角色,可使用下列命令:
USE master CREATE LOGIN Ted WITH PASSWORD ='P@ssw0rd*; GO
EXEC sp_adds rvrolemembe r 'Ted1, 1securityadmin *; GO
使 用 sp dropsrvrolemember可从一个固定服务器角色中删除一个登录名,其语法和
sp addsrvrolemember存储过程类似,如下所示:
USE master EXEC sp_dropsrvrolemember 'Ted1, * securityadmin *; GO
2 .更多信息
可以査询安全目录视图(Security Catalog Views),找到有关服务器作用域上的主体的更 多信息。表 6-6列出了标识服务器级别主体的视图。

SQL SERVER数据库安全图片 sql server安全性是什么_Server_09

6 .2 .4 数据库用户
数据库用户是Microsoft SQL Server 2008采用的安全模型的另一组成部分。用户可直 接或通过一个或多个数据库角色中的成员关系访问安全的数据库对象。用户也可与表、视
图和存储过程之类的对象的所有权相关联。
在创建登录名时,除非它是拥有所有数据库管理权限的固定服务器角色的一个成员,
否则该登录名在附加到服务器的各数据库中没有显式权限。此时,该登录名和来宾数据库
用户关联在一起,并继承该用户帐户的权限。
在 用 SQL Server Management Studio管理数据库用户时,有几个选项可供选择。在 “常
规”属性页(如图6-5所示)上,可以为用户指定一个名称,并将该用户和一个现有的登录名
关联起来。注意,用户名不一定要和登录名匹配。为方便管理,最好的做法是使用一致的
命名约定,但这并不是强制要求。另外,可注意到有一些单选按钮,显示用户是否映射到
登录名、证书、密钥,或是没有任何关联。通过该图形用户界面(GUI),只能创建映射到

一个登录名的用户。在下一节中,您将看到如何创建带有其他映射的用户。

SQL SERVER数据库安全图片 sql server安全性是什么_Windows_10

在 “常规”页上可以配置的其他选项包括指定用户的默汄架构、该用户所拥有的架构
(如果有的话),以及该用户所属的数据库角色。在 “安全对象”页上,可以列出用户对其
拥有权限的所有安全对象,以及他们所拥有的权限。最后,在 “扩展属性”页上,可以指
定或査看该用户的其他元数据信息。
试一试 创建一个新用户和默认架构
本例将在AdventureWorks2008数据库中为Carol创建一个新的数据库用户,并将她的 默认架构设置为Sales架构。 (1) 在 “对象资源管理器”中展开“数据库”节点。
(2) 展开 AdventureWorks2008 节点。
(3) 展 开 “安全性”节点。
(4) 右 击 “用户”文件夹,选 择 “新建用户”命令,如图6-6所示。
(5) 在 “用户名”框中输入Carol。 (6) 在 “登录名”框中输入Carol,或者使用“…”按钮选择她的登录名。 (7) 在 “默认架构”框中输入Sales。 (8) 单 击 “确定”按钮。
Carol在 AdventureWorks2008数据库中有了一个数据库用户帐户后,她就继承了授予 公共数据库角色的权限。数据库角色和权限的内容将在本章稍后介绍。

SQL SERVER数据库安全图片 sql server安全性是什么_Server_11

CREATE USER 语句
我们也可以使用CREATE USER语句创建新的数据库用户。和 GUI相比,CREATE
USER语句对如何创建用户提供了更多的选择。例如,可以基于现有证书或密钥创建用户,
或甚至创建一个与登录名无关联的用户。虽然很少需要实现这些类型的用户,但他们不必
与某一特定登录名关联便可以直接访问数据库对象。这些用户可以用来访问有特定安全要
求的资源。例如,一个存储过程可能含有EXECUTE AS子句,在这种情况下,通过与某一
特定证书或非对称密钥关联的用户运行该存储过程。但是要注意,这些用户只在创建了它
们的数据库中才有效。如果他们试图访问另一个数据库的资源,就会作为guest访问其他数 据库。如果其他数据库禁用guest用户,他们将无法访问这些数据库。

每个数据库都默认创建两个用户。dbo用户(也称为数据库所有者)拥有在数据库中进行 任何操作的全部权限。固定服务器角色sysadmin的成员以及sa帐户都映射到dbo.

sysadmin 创建的任何对象都自动为dbo所有。dbo用户还是默认架构的所有者,该架构的名称也是 

dboo dbo用户不能被删除。
guest帐户也存在于每个数据库中,但默认是禁用的。当一个人能够登录访问SQL Server,但是对数据库没有显式用户访问权限时,通常就会使用guest帐户。如果数据库有 一个guest帐户,且该帐户被激活,那么登录名就使用来宾访问连接到数据库。guest是public 角色的一个成员,拥有所有赋予该角色的权限,但也可以授予guest访问安全对象的显式 权限。
您可能注意到其他两个“用户”:sys和 INFORMATION_SCHEMA。虽然常规意义上 它们不是用户,但是它们确实拥有数据库中的对象,主要用于存储和检索数据。这些用户

没有映射到任何登录名,而且默认是禁用的。
CREATE USER语句的语法和选项如下所示:
CREATE USER name [{{FOR | FROM} source | WITHOUT LOGIN}] [WITH DEFAULT_SCHEMA = schema_name]
表 6-7和表6-8介绍了可用的选项。

SQL SERVER数据库安全图片 sql server安全性是什么_SQL_12

 

 

创建一个新用户
现在看一下CREATE USER语句的实际使用。在之前的例子中,我们在AdventureWorks2008
数据库中创建了一个名为C arol的 新 的 SQL Server登录名和一个关联用户。如果想在 tempdb数据库中为Carol创建一个用户,可以执行如下语句:
USE tempdb; CREATE USER Carol;
GO
创建一个新用户就是这么简单。
再看另外一个例子。如果之前执行了 DROP LOGIN [AughtEight\Bob]语句,那么就需
要重新创建他的登录名。这个例子中将创建一个名为BillyBob的数据库用户,它将映射到 Bob的登录名,并将BillyBob的默认架构设置为Sales架构:

USE master; CREATE LOGIN [AughtEight\Bob] FROM WINDOWS; USE AdventureWorks2008; CREATE USER BillyBob FOR LOGIN [AughtEight\Bob] WITH DEFAULT_SCHEMA = sales;
最后的例子将显示如何通过现有证书创建-个新的用户。本章稍后会介绍证书,但在
这个例子中,首先创建证书,然后创建用户:
USE AdventureWorks2008; CREATE CERTIFICATE SalesCert ENCRYPTION BY PASSWORD ='P@ssw0rd'
WITH SUBJECT = fSales Schema Certificate、 EXPIRYDATE =•12/31/2010•;
GO
CREATE USER SalesSecurity FOR CERTIFICATE SalesCert; GO
也可以使用ALTER USER语句来更改用户帐户。这里再次体现了 Transact-SQL的灵活性
比 Management Studio 大得多。ALTER SCHEMA 可用于修改 name 属性和 DEFAULT SCHEMA
属性。如果希望更改帐户所关联的Windows或 SQL登录名,也可以使用LOGIN=选项。 要知道,LOGIN选项只能用于将用户与和其最初创建时同类型的登录名相关联。对于作为
证书或密钥创建的用户,这个选项并不适用。下面的例子演示了这些选项:
USE AdventureWorks2008 ALTER USER SalesSecurity WITH NAME =SalesSchem.aSecurity;
GO
USE AdventureWorks2008 ALTER USER BillyBob WITH DEFAULT^SCHEMA =Production;
GO
--Create a new login USE master CREATE LOGIN TempCarol WITH PASSWORD = *MyPassword*, CHECK_POLICY =OFF;
GO
USE tempdb ALTER USER Carol WITH Login =TempCarol;
GO
最后,一旦一个用户不再有用,可以使用DROP USER语句把它从数据库中删除。DROP
USER语句很简单,如下所示:
USE AdventureWorks2008 DROP USER BillyBob; GO