目的和要求
1.了解数据库备份和还原的基本方法,掌握完全备份和还原的基本技术;
2.掌握SQL Server2000提供了三种封锁机制;
3.掌握SQL Server2000中有关用户、角色及操作权限的管理方法;
4.掌握约束、规则和默认值的概念及实施方法。
内容和步骤
一、数据库恢复
1.数据库的备份
SQL Server2000有数据库完全备份、数据库差异备份、事务日志文件备份、文件及文件组备份等四种形式。本实验主要介绍数据库完全备份。
1) 利用企业管理器进行备份
当完成备份设备的创建后,便可以进行数据库的备份。若没有创建任何备份设备,则打开备份数据库程序时,此时会提醒用户必须先创建备份设备。
l 在所创建的“数据库备份”项目上,单击鼠标右键,选择“备份数据库”
图1 选择“备份数据库”命令
l 打开“SQL Server2000 备份”属性设置页。
图2 “SQL Server2000 备份”属性设置页
l 示范“booksale”的备份。而且选择完整数据库备份的方式。
l 默认值为“文件名”的方式,更改为“备份设备”的方式。(学生帐户不能创建备份设备)
图3 选择备份目的
选择创建的“数据库备份”设备。选择设备后,按“确定”按钮
l
图4 选择备份设备
在最下面的“调度”项目中,设置备份计划,假设在“调度”前打勾,系统就会有一个默认的备份计划。
图5 设置备份计划
l 除了系统默认值外,也可以按右下角的“更改”按钮,去改变备份时间。
图6 改变备份时间
l 可以看到系统调度的时间,同时也可以更改成自己的时间设置。
图7 编辑作业调度
l 另外,也可以查看SQL Server2000 备份的“选项”属性设置页。在系统中的选项设置上,选择了 “ 检查媒体集名称和备份集是否到期时间”。
图8 查看SQL Server2000 备份的“选项”属性设置页
l 经过前面步骤的设置,当我们按下“确定”按钮后,马上可以进行备份。
图9 完成步骤设置
l 正在进行“营销”的备份
图10 正在进行备份
l 备份完成。
图11备份完成
学生可以备份文件,但不能创建备份设备。备份文件创建后,可以复制到其他地方,也可以改名。(
2) 利用Transact-SQL命令进行备份
备份数据库的命令的语法是:
DUMP DATABASE{dbname|@dbname_var}
TO dump_device1[,dump_device2[,…,dump_device32]]
[WITH options]
·dbname|@dbname_var指定要备份的数据库;
·dump_device1[,dump_device2[,…,dump_device32]]指定转储设备;
·options指定一些备份时使用的选项,如UNLOAD、NOUNLOAD等。
2.数据库的还原
1) 利用SQL Server2000 Enterprise Manager进行还原
l 选择“SQL Server2000企业管理器”的菜单中“工具”→“还原数据库”的选项。
图12 选择“还原数据库”的选项
l
于是系统打开了“还原数据库”的设置项目页。
图13 “还原数据库”的设置项目页
l 首先,我们选择要还原的数据库(营销),然后再选择要还原哪一次备份。
图14 选择要还原哪一次备份
l 针对备份记录,在上一步中,可以按下“属性”按钮,查看更详细的备份记录。另外,也可以改变还原的备份设备。
图15 查看备份级属性
l
下图为选择还原设备,这里选择数据库备份。
图16 选择还原设备
l
接下来查看“还原数据库——选项”设置页。在此可以看到还原的数据库文件为“营销_Data.MDF”与“营销_Log.LDF”两个文件。必要时,可以选择“在现有的数据库上强制还原”。
图17 “还原数据库——选项”设置页
l 按下“确定”按钮后,SQL Server2000 便开始进行还原数据库的操作。
图18 开始还原数据库
l 还原数据库完成。
图19还原数据库完成
关于 权限问题:还原操作要求登录用户具有sysadmin和dbcreate的固定服务器脚色,方可进行。只有db_owner权限的用户是不能进行还原操作的。
2)用Transact-SQL命令进行还原
还原数据库的命令的语法是:
Restore DATABASE{dbname|@dbname_var}
From backup_device1[,backup_device2[,…,backup_device32]]
[WITH options]
·dbname|@dbname_var指定要还原的数据库;
·backup_device1[,backup_device2[,…,backup_device32]]指定备份设备;
·options指定一些还原时使用的选项,如UNLOAD、NOUNLOAD等。
二、并发控制 ( 了解为主,不要求掌握)
1.SQL Server2000提供了三种封锁机制
为了保证数据的一致性,并且允许最大量的并发用户,SQL Server2000提供了三种封锁机制,即独占封锁、共享封锁和更新封锁。封锁的对象可以是表格、页或者记录。
1)共享封锁
共享封锁是为读操作设置的一种封锁,目的是想读到一组不变的数据,也就是在读数据的过程中,不允许其他用户对该数据进行任何修改操作。
2)更新封锁
当需要对一个记录或一组记录进行更新时 (只是修改,不包括插入和删除)使用更新封锁,该封锁的目的是防止其他用户在同一时刻修改同一记录。已经实施更新封锁的记录,拒绝来自其他用户的更新封锁或独占封锁。
3)独占封锁
独占封锁也叫排他封锁,这是最严格的一类封锁。当需要对表实施插入、删除或修改操作时,应该使用独占封锁。已经实施独占封锁的表,拒绝来自其他用户的任何封锁,但不拒绝其他用户的一般读操作。
所有的封锁都将在事务结束(提交或撤消)时自动释放。
SQL Server2000 使用SELECT语句完成封锁操作,在指定选择的表的同时在FROM子句中指定对表所实施的封锁。
2.SQL Server2000的封锁命令
SQL Server2000的封锁操作是在相关语句的“WITH (table_hint)子句中完成的,可用在SELECT、INSERT、UPDATE、DELETE等语句中指定表级锁定的方式和范围。常用的封锁关键词有:
TABLOCK:对表施加共享锁,在读完数据后立即释放封锁,它可以避免读“脏”数据,但可能引起不可重复读问题。
HOLDLOCK:与TABLOCK一起使用,可将共享锁保留到事务完成,而不是在读完数据后立即释放,它可以保证数据的可重复读。
NOLOCK:不施加任何封锁,仅用于SELECT语句,它会引起读“脏”数据。
TABLOCKX:对表施加排它锁。
UPDLOCK:对表中指定元组施加更新锁,这时其他事务可对同表中的其他无组也施加更新锁,但不能对表施加任何锁。
3.SQL Server2000的隔离级别
SQL Server2000支持标准SQL中定义的4种隔离级别:
l 未提交读(READ UNCOMMITED):事务隔离的最低级别,仅可保证不读物理损坏的数据。
l 提交读(READ COMMITED):SQL Server2000的默认级别,可以保证不读“脏”数据。
l 可重复读(REPEATABLE READ):可以保证读一致性。
l 可串行化(SERIALIZABLE):事务隔离的最高级别,事务之间完全隔离,在该级别上可以保证并发事务均是可串行的。
事务必须运行在可重复读或更高隔离级别上才可防止丢失更新
设置隔离级别的命令是:
SET TRANSACTION ISOLATION LEVEL
{READ COMMITED | READ UNCOMMITED | REPEATABLE READ| SERIALIZABLE}
例1:对学生表Student实施一个共享封锁,并且保持到事务结束时再释放封锁,相应的命令是:
SELECT * FROM Student (TABLOCK HOLDLOCK)
例2:现在再来考虑一下火车票售票系统,显然采取更新封锁最为合适。
假设售票信息存放在关系R(日期,车次,座别,座位号,状态)中,其中座别说明是软卧(RW)、硬卧(YW)、软座(RZ)或硬座(YZ),状态表明车票是否售出,初值为NULL。
下面是相应的程序段:
DECLARE @d datetime,@t char(6),@s char(2),@n char(10)
BEGIN TRANSACTION
SELECT @n=座位号 FROM R (UPDLOCK)
WHERE 日期 = @d AND车次 = @t AND 座别 = @s AND 状态 IS NULL
IF…
UPDATE R SET 状态 =“Y”
WHERE 座位号 = @n AND 日期 = @d
AND 车次 = @t AND 座别 =@s
COMMIT TRANSACTION
ELSE
ROLLBACK TRANSACTION
…
本程序段只包含了和封锁及更新有关的核心语句,其他语句都省略了。其中的SELECT语句查询并封锁一条车票记录,UPDATE语句完成更新操作。如果完成更新则提交事务并自动释放封锁,否则就撤消事务并自动释放封锁。
三、数据库的安全性控制
1.SQL Server2000的安全模式
SQL Server2000提供了三种安全管理模式,即标准模式、集成模式和混合模式,数据库设计者和数据库管理员可以根据实际情况进行选择。
SQL Server2000的默认安全模式是标准模式,在这种安全模式下,由SQL Server2000独立来管理自己的数据库安全。
集成安全模式是将Windows NT的安全管理集成到SQL Server2000下,即用户只要登录到Windows NT,就可以通过信任连接直接连接到SQL Server2000。也就是说,集成模式使用的是信任连接,Windows NT的用户就是SQL Server2000的用户。
设置SQL Server2000的安全模式可以在安装SQL Server2000时完成,也可以在安装后以系统管理员的身份注册,然后使用SQL Enterprise Manager工具的有关选项进行设置。如果选择的是标准模式或混合模式,则必须创建用户和用户组。
2.创建用户和用户组
如果选用的是集成模式,则在Windows NT下创建的用户就是SQL Server2000的用户;否则就必须在SQL Server2000下创建用户和用户组,这些工作可以在SQL Server2000 Enterprise Manager中完成,也可以利用sp_addgroup、sp_addlogin、sp_adduser等系统存储过程以命令交互方式来完成。
在安装SQL Server2000之初,只有两个用户,一个是sa(系统管理员),另一个是guest(系统安装时创建的一个可以对样板数据库作最基本查询的用户)。Sa作为系统管理员或数据库管理员,在SQL Server2000上有至高无上的权利,可以做任何事情。
1)为SQL Server2000增加用户
为SQL Server2000增加新的用户,可以执行系统存储过程sp_addlogin,它的格式如下:
Sp_addlogin login_id[,passwd[,defdb[,deflanguage]]]
其中:Login_id为注册标识或SQL Server2000用户名;
Passwd为口令,默认口令是NULL,用户可以在任何时候使用;
sp_password系统存储过程改变自己的口令;
Defdb指定用户在注册时连接到的默认数据库,如果没有指定默认数据库,则默认数据库是master;
Deflanguage说明用户注册到SQL Server2000时使用的默认语言代码。
2)为数据库增加用户
只要是数据库所有者,就可以指定数据库用户
学生上机时,可以将邻桌用户作为自己的一般用户(即只有public)
数据库拥有者可以将访问或连接到自己的数据库的权限授予其他用户,即为自己的数据库增加新的用户。这可以用系统存储过程sp_adduser来完成,它的格式是:
sp_adduser login_id[,username[,grpname]]
3)使用组
创建组的系统存储过程是sp_addgroup,它的格式是:sp_addgroup grpname
4)口令
口令用来确认一个注册用户名是否正确,只有通过注册名和口令的验证才可以登录到SQL Server2000并连接到数据库。
系统管理员在创建SQL Server2000用户时可以同时为之分配一个口令,用户可以在任何时候利用系统存储过程sp_password来修改自己的口令,它的格式是:
sp_password old_passwd,new_passwd[,login_id]
3.权限管理
在SQL Server2000上权限管理分为语句权限管理和对象权限管理两类。语句权限管理是对用户执行语句或命令的权限的管理;对象权限管理是系统管理员、数据库拥有者、数据库对象拥有者对数据库及其对象的操作权限的控制。
1)授权
SQL Server2000的授权包括语句授权和对象授权两类,语句授权决定被授权的用户可以执行哪些语句命令,对象授权决定被授权的用户在指定的数据库对象上的操作权限。
l 语句授权 : 学生上机时不能完成
语句授权的命令格式是:
GRANT{ALL|statement_list}TO{PUBLIC|name_list}
·ALL即全部语句,只有系统管理员可以使用此选项,因为只有系统管理员可 以授予或收回CREATE DATABASE的权限;
·statement_list给出授权的语句列表,这些语句可以是CREATE DATABASE (如果执行这个语句的用户是系统管理员)、CREATE DEFAULT、CREATE PROCEDURE、CREATE RULE、CREATE TABLE、CREATE VIEW、DUMP DATABASE和DUMP TRANSACTION等;
·PUBLIC说明这些语句的执行权限将授予所有的用户;
·name_list是数据库用户名或组名,说明这些语句的执行权限授予哪些用户或组。
SQL Server2000对每类用户都有特定的默认语句执行权限,如果要想执行默认语句权限之外的语句,则必须获得授权。
例1.系统管理员授予注册名为zhang的用户CREATE DATABASE的权限。
GRANT CREATE DATABASE TO zhang
例2.数据库拥有者zhang将创建表和创建视图的权限授予用户名为lin的用户。
GRANT CREATE TABLE,CREATE VIEW TO lin
l 对象授权:学生上机可以完成 ,通过对所加入的用户权限的操作来体会安全性的控制
数据库对象的授权命令格式是:
GRANT{ALL|Permission_list}ON{table_name[(colume_list)]|view_name[(column_list)]| stored_procedure_name|extended_stored_procedure_name}
TO {PUBLIC|name_list}
其中:
·ALL说明将指定对象的所有操作权限都授予指定的用户;
·permission_list是权限列表,当授权对象是表或视图时,它还可以包括SELECT、 INSERT、DELETE和UPDATE;当授权对象的表时,它还可以包括 REFERENCES,该项允许被授权的用户建立外部关键字约束来引用其他的表; 当授权对象是存储过程时,这里只能是EXECUTE;当在授权的表或视图上指定 列时,这里只能是SELECT和UPDATE;
·table_name[(column_list)]给出在当前数据库要授权的表名,如果需要可以通过 column_list将授权限制到某些列;
·view_name[(colume_list)]给出在当前数据库要授权的视图名,如果需要可以通过 column_list将授权限制到某些列;
·stored_procedure_name或extenden_stored_procedure_name给出当前数据库要授权的存储过程或扩展存储过程名,在一条 GRANT语句中,只能对一个存储过程 或扩展存储过程授权;
·PUBLIC说明将这些对象的使用权限授予所有的用户;
·name_list数据库用户名或组名,说明将这些对象的使用权限授予哪些用户或组。 数据库对象的所有默认权限自然归数据库对象拥有者所有,他可以把对这些数据库对象的操作权限按照需要授予其他用户。
例3.将对student表的查询权限授予用户名为xu、li和wang的用户。
GRANT SELECT ON student TO xu,li,wang
例4.将对student表的插入和删除的权限授予用户名为wang的用户。
GRANT INSERT,DELETE ON student TO wang
例5.将对student表的age和grade列的修改权限授予用户名为wang的用户。
GRANT UPDATE ON student(age,grade) TO wang
例6.将执行存储过程sp_upd_student的权限授予用户名为wang的用户。
GRANT EXECUTE ON sp_upd_student TO wang
2)收回权限
授权是为了使被授权者能够执行某些命令或操作某些数据库对象,授权者在任何时候者可以收回对其他用户的授权,收回授权是数据库安全性控制的重要内容。收回授权的命令的REVOKE,同样分为收回语句授权和收回对象授权。
l
收回语句授权的命令格式是:
REVOKE {ALL|statement_list}FROM{PUBLIC|name_list}
其中各选项的含义同样相应的GRANT命令。
收回对象授权的命令格式是:
REVOKE{ALL|permission_list}
ON{table_name[(column_list)]|view_name[(column_list)]|
stored_procedure_name|extended_stored_procedure_name}
FROM {PUBLIC|name_list}
其中各选项的含义同相应的GRANT命令。
例7.从用户名为lin的用户收回创建表和创建视图的权限。
REVOKE CREATE TABLE,CREATE VIEW FROM lin
例8.从用户名为xu和li的用户收回对student表的查询权限。
REVOKE SELECT ON Student FROM xu,li
四、数据库的完整性控制
数据的完整性是指数据的正确性和有效性,它是为防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的。
数据完整性可以分为以下3类:
域完整性:是指一个列的输入有效性,是否允许为空值。
实体完整性:是指将行定义为特定表中的唯一实体。
参照完整性:也叫引用完整性,是指在输入或者删除记录时,保持表之间已经定义的关系。它涉及到多表之间数据一致性的维护。
1.约束的概念及实施
约束是强制数据完整性的第一选择。约束有:检查约束、缺省约束、唯一约束、非空约束、主键约束和外键约束等6种。
1)使用企业管理器实施约束
⑴ 为teacher表的 “职称”字段创建一个缺省约束,缺省值为‘讲师’
启用企业管理器,单击“数据库”、test、“表”,企业管理器在右边显示所有在test中的表。用鼠标右键单击要设置缺省表teacher,在系统弹出的快捷菜单中单击“设计表”,单击设置缺省值的字段,将弹出如图20所示窗体,在下边属性设置栏的默认值输入框中输入响应的默认值即可。
图20 Teacher 表结构创建
⑵ 为教工表teacher的“所在专业”字段创建一个检查约束,使得“所在专业”的值必须是‘计算机软件’、‘计算机体系结构’或‘计算机网络’之一。
在图21中,单击‘管理约束’图标,选择CHECK约束,将弹出下图所示对话框,
图21 “Check约束”选项卡视图
单击‘新建’按钮,系统给出默认的约束名,在约束表达式窗体输入约束条件 ([所在专业] = '计算机网络' or [所在专业] = '计算机系统结构'or [所在专业] = '计算机软件' ),然后单击‘关闭’,CHECK约束创建完毕。如要删除已创建的约束,只要选择要删除的约束再单击‘删除按钮’即可。
⑶ 将teacher表的教工号字段设置为主键
在图20中,用鼠标右键单击要设置主键的字段,在系统弹出的快捷菜单中选择‘设置主键’,单击‘关闭’按钮,主键设置完成。如要取消主键设置,只需在已设为主键的字段上单击鼠标右键,并在系统弹出的快捷菜单中单击‘设置主键’,即可取消此字段的主键设置。
⑷ 为teacher表的姓名字段创建唯一性说明
在图21中,单击‘索引/键’标签,弹出下图所示对话框,单击‘新建’按钮,系统给出默认的唯一性约束名,在‘列名’下拉框中选择要创建的唯一性约束的列姓名,再单击‘创建UNIQUE’复选框和‘约束’单选按钮。单击‘关闭’按钮,唯一性约束创建结束。如要删除已创建的唯一性约束,再单击‘删除’按钮即可。
图21 “索引/键”选项卡视图
⑸ 进入企业管理器,按下面表格创建教师教授课程表teacher_course。
教工号 |
教授课程 |
2111 |
数据库原理及应用 |
2112 |
大型数据库概论 |
2113 |
Unix操作系统 |
2114 |
数据结构 |
2115 |
汇编语言 |
将teacher_course表的教工号设置为外键,该外键参考表teacher中的主键教工号。
在图20中,鼠标右键单击‘关系’,系统将弹出窗体,单击‘新建’按钮,系统给出默认的关系名,选择要参考主键的表名teacher及表中的主键教工号,要设置外键的表名teacher_course及外键列名教工号,单击‘关闭’按钮,外键约束创建完成。
2)使用T-SQL语句实施约束
⑴ 创建教工表teacher的“所在专业”字段创建一个检查约束,使得“所在专业”的值必须是‘计算机软件’、‘计算机体系结构’或‘计算机网络’之一。
Alter table teacher
Add constraint Sjk_check
Check (所在专业 in ('计算机软件','计算机体系结构','计算机网络'))
⑵ 为teacher表的 “职称”字段创建一个缺省约束,缺省值为‘讲师’
Alter table teacher Add constraint default_zc
Default '讲师' for 职称⑶
⑶ 为teacher表的“姓名”字段增加一个唯一性约束
Alter table teacher Add constraint tt unique nonclustered (姓名)
⑷ 在企业管理器中去掉teacher表中教工号的主键约束,然后用T-SQL为教工号加入一个名字pkey的主键约束。
Alter table teacher Add constraint primarykey Primary key nonclustered (教工号)
⑸ 创建外键约束
为teacher_course建立外键依赖于teacher表的fk_t_c约束并录入数据检查外键的有效性。
Alter table teacher_course Add constraint fk_t_c Foreign key(教工号) References teacher(教工号)
⑹禁止及启用teacher的“所在专业”的CHECK约束,执行下面的脚本,禁止/启用teacher表的zy_check约束,然后向表中插入数据行或修改数据行,检查CHECK约束是否被禁止或启用。
Alter table teacher Nocheck constraint zy_check
2.默认值的概念及实施
默认值是数据库对象之一,它指定在向数据库中的表插入数据时,如果用户没有明确给出某列的值,SQL Server2000将自动指定该列使用默认值。
⑴ 使用企业管理器设定一个默认值
使用企业管理器创建已个默认的邮政编码字段,默认值为222000,具体步骤如下:
n 启动企业管理器,分别单击‘数据库’,‘test’;用鼠标右键单击‘默认’,在系统弹出的快捷菜单中单击‘新建默认’,系统将弹出如图22所示‘默认属性’窗体。在‘名称’对应的输入框中输入默认值的名称‘邮政编码’,在值对应的输入框中输入222000;单击‘确定’按钮,即完成默认值的创建。
图22 默认属性
n 将默认值绑定到teacher表的邮政编码字段,然后解除绑定。
在图22中,点击‘绑定’,选择待绑定的默认值,再点击‘绑定列’,选择待绑定的表和字段,最后点击‘确认’,可将默认值绑定到指定表的列,如图23所示:
图23 将默认值绑定到列
n 删除默认值邮政编码
删除默认值前必须解除该默认值的所有绑定:启动企业管理器,分别单击‘数据库’,‘test’;用鼠标右键单击‘默认’,再用鼠标右键单击右边窗格里的邮政编码默认值,在系统弹出的快捷菜单中单击‘删除’按钮即可。
⑵ 使用T-SQL语句设定默认值
为teacher表创建一个名为postdefault、值为222000的默认值。
CREATE DEFAULT 邮政编码 AS 222000
将默认值绑定到列
sp_bindefault postdefault,’teacher.邮政编码’
解除表teacher的邮政编码的默认绑定。
Sp_undindefault ‘teacher.邮政编码’
删除默认值postdefault
drop default postdefault
3.规则的概念及实施
规则是数据库对象之一。它指定向中某列插入或更新数据时,限制输入新值的取值范围。规则可以是值的清单、值的范围或值必须满足的条件。
1)使用企业管理器创建规则
n 使用企业管理器为teacher的教工号创建一个规则rule1,使rule1的值大于2000且小于4000。
启动企业管理器,单击‘数据库’、‘test’,用鼠标右键单击‘规则’,在系统弹出的快捷菜单中单击‘新建规则’,系统将弹出如图24所示‘规则属性’窗口;在‘名称’输入框中输入规则名称rule1,在‘文本’输入框中输入规则的文本:@教工号>=2000 and @教工号<=4000,单击‘确定’按钮,即可完成规则的创建。
图24 规则属性
n 将规则绑定到指定的字段上
在上图中,点击‘绑定’选择预绑定的规则,然后点击‘绑定列’图表,得到如图25所示的窗体,在‘表’中选择对应的表,然后在左边的窗格中选择欲被捆绑规定的列,点击‘添加’按钮,最后选择‘确定’,完成规则的绑定。
图25 将规则绑定到列
n 将规则rule1删除
启动企业管理器,单击‘数据库’、‘test’,用鼠标右键单击‘规则’,用鼠标右键单击右边窗格里的规则rule1,单击‘删除’按钮即可。
2)使用T-SQL语句实施规则
n 用like语句为teacher表的教工号创建一个规则rule1,使rule1的值大于2000且小于4000。
create rule rule1 as @教工号>=2000 and @教工号<=4000
n 将规则rule1绑定到表teacher的教工号字段。
Sp_bindrule rule1,’teacher.教工号’
n 解除规则rule1到教工号的绑定
sp_unbindrule rule1
n 将规则rule1删除
drop rule rule1
练习题
练习1:针对学生成绩管理数据库GM进行备份和还原。
练习2:添加一个数据库用户,使之拥有对数据库GM的一切权力,练习对其他用户的授权及权限收回。
练习3:根据以前创建一个教工表Teacher,完成下列操作:
(1)将其教工号设为主键,同时为性别字段创建DEFAULT约束,默认值为‘男’
(2) 用T-SQL创建默认的对象phone:CREATE DEFAULT phone AS ‘00000000’, 这个默认对象phone绑定到教工表的电话字段Tel上。
(3)取消默认对象phone的绑定并删除默认对象。
(4) 利用T-SQL创建规则YGH,使得教工号Tno必须在0到10000之间, 把规则YGH绑定到教工表的教工号字段Tno上。
练习4:数据库安全性练习
两个学生为一组(设名称为A、B,A为原来的数据库用户),对以前完成的student数据库进行安全性控制:
1、将B添加为A数据库的用户:sp_grantdbaccess ‘用户名’,....
2、B用户打开A的数据库进行简单的数据操作,能否进行?为什么?
3、授与B创建表的权限:grant 语句 to 用户名,B用户试验能否创建表?
4、收回B的权限
5、授与B具有对Student表的查询权与更新权,B用户试验。
6、收回B的权限
7*、添加一个新的数据库角色(sp_addrole 角色名),并将用户B添加到角色中