预习报告

时间:2024.5.8

预习报告 实验一 一、实验目的 学习MS SQL Server 2005 的安装、启动方法,注册SQL Server 服务器 的方法。 熟悉SQL Server 的工作环境 掌握使用向导和命令建立数据库的方法 掌握数据库常用选项的设置方法 掌握建立数据表的方法。

二、实验内容 采用SQL 语句创建数据库 CREATE DATABASE OrderMag2 ON PRIMARY(NAME=OrderMag2_Data, FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL\data\OrderMag2_Data.ndf', SIZE=10MB, MAXSIZE=200MB, FILEGROWTH=10%) LOG ON (NAME=OrderMag2_Log, FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL\data\OrderMag2_Log.LD', SIZE=3MB, MAXSIZE=100MB, FILEGROWTH=10%) GO 三 回答问题 创建Store、Customer 、Order1 三个表 use OrderMag2 create table Store( Pno char(6) primary key not null, Pname varchar(20) not null, Ptype char(2), Pnum int ) create table Customer( Cno char(6) primary key not null, Cname varchar(20) not null, Ctel varchar(12) not null, Caddr varchar(50), Czip varchar(6) ) create table Order1( Ono char(6) primary key not null, Cno char(6), Pno char(6), Onum int, Osum int, Odate datetime ) alter table Order1 add constraint fk_customer_id foreign key(Cno) references Customer(Cno); alter table Order1 add constraint fk_Store_id foreign key(Pno) references Store(Pno); alter table Order1 add constraint check_Onum check(Onum>=0 and Onum <=100) alter table Order1 add constraint check_Osum check(Osum>0) 操作过程中遇到的问题是“order”是数据库中的一个关键字,不能把它作为表 的名字,所以在创建order 表的时候在其后面加上数字或其他字母来以示区别。 四 实验小结 通过本次实验学会了MS SQL Server 2005 的安装、启动方法,注册 SQL Server 服务器的方法;和如何使用向导和命令建立数据库和数据库常用 选项的设置方法及建立数据表的方法。 实验二、数据维护及简单查询 一、实验目的: 学习使用查询分析器 掌握使用Insert、Update、Delete 命令维护数据表的数据的方法 熟练掌握简单SQL 命令的使用 二、实验内容: 1. INSERT 命令输入数据 使用Insert 命令分别向OrderMag 数据库中的三个表中输入如下5 条数 据。

1) Store(Pno, Pname, Ptype, Pnum) 库存(零件号,零件名称,零件类别,零件数量) Pno Pname Ptype Pnum P1 齿轮 传动 200 P2 蜗杆 传动 30 P3 螺栓 标准 120 P4 垫圈 标准 500 P5 螺母 标准 1020 2) Order(Ono, Cno, Pno, Onum, Osum, Odate) 订单(订单号,顾客号,定购零件号,定购数量,订单金额,签订日期) Ono Cno Pno Onum Osum Osum O1 C2 P2 100 1000 2006-4-8 O2 C3 P3 10 100 2008-5-2 O3 C1 P2 20 200 2007-4-5 O4 C1 P4 2 20 2009-2-4 O5 C3 P5 1 10 2009-3-1 3) Customer(Cno, Cname, Ctel, Caddr, Czip) 顾客(顾客号,顾客名称,电话,地址,邮编) C no Cname Ctel Caddr Czip C 1 北京联合大学 010-64900310 北京 100101 C 2 上海贝尔 021-23232323 上海 C 3 LG 0755-2325123 深圳 412100 C 4 华为(北京) 北京 C 5 香港航空 852-56545236 香港 142553 先修改Store 表的列Ptype 的长度,再进行插入操作,如下 ALTER TABLE Store ALTER COLUMN Ptype char(10) INSERT INTO Store (Pno, Pname, Ptype, Pnum) VALUES ('P1','齿轮','传 动',200) INSERT INTO Store (Pno, Pname, Ptype, Pnum) VALUES ('P2','蜗杆','传 动',30) INSERT INTO Store (Pno, Pname, Ptype, Pnum) VALUES ('P3','螺栓','标 准',120) INSERT INTO Store (Pno, Pname, Ptype, Pnum) VALUES ('P4','垫圈','标 准',500) INSERT INTO Store (Pno, Pname, Ptype, Pnum) VALUES ('p5','螺母','标 准',1020) INSERT INTO Customer(Cno, Cname, Ctel, Caddr, Czip) VALUES ('C1','北京联合大学','010-64900310','北京','100101') INSERT INTO Customer(Cno, Cname, Ctel, Caddr, Czip) VALUES ('C2','上海贝尔','021-23232323','上海','') INSERT INTO Customer(Cno, Cname, Ctel, Caddr, Czip) VALUES ('C3','LG','0755-2325123','深圳','412100') INSERT INTO Customer(Cno, Cname, Ctel, Caddr, Czip) VALUES ('C4','华为(北京)', null,'北京','') INSERT INTO Customer(Cno, Cname, Ctel, Caddr, Czip) VALUES ('C5','香港航空','852-56545236','香港','142553') INSERT INTO Order1(Ono, Cno, Pno, Onum, Osum, Odate) VALUES ('O1','C2','P2',100,1000,'2006-4-8') INSERT INTO Order1(Ono, Cno, Pno, Onum, Osum, Odate) VALUES ('O2','C3','P3',10,100,'2008-5-2') INSERT INTO Order1(Ono, Cno, Pno, Onum, Osum, Odate) VALUES ('O3','C1','P2',20,200,'2007-4-5') INSERT INTO Order1(Ono, Cno, Pno, Onum, Osum, Odate) VALUES ('O4','C1','P4',2,20,'2009-2-4') INSERT INTO Order1(Ono, Cno, Pno, Onum, Osum, Odate) VALUES ('O5','C3','P5',1,10,'2009-3-1') 2.把store 表中所有零件的数量增长一倍 UPDATE Store SET Pnum=Pnum*2 3.把order 表中签订日期在2005 年之前的数据删除。 delete from order1 where Odate<'2005'

4.向store 表中添加一列:零件颜色(Pcolour); ALTER TABLE Store ADD Pcolour varchar(20) 5.查询三个表中

的内容 SELECT * FROM Store SELECT * FROM Customer SELECT * FROM Order1 6.查询所有订单的金额,并按照金额的降序排列 SELECT Osum FROM Order1 ORDER BY Osum DESC 7.查询签订日期在2009 年的所有订单的信息。 SELECT * FROM Order1 WHERE Odate<'2009' 8.查询顾客姓名中含有“北京”的顾客姓名和电话。 SELECT * FROM Customer WHERE Cname LIKE '%北京%' 9.查询库存数量少于100 的零件号和名称。 SELECT Pno ,Pname FROM Store WHERE Pnum<100 10.查询邮编为空的顾客的情况。 SELECT * FROM Customer WHERE Ctel is null

三、 回答问题 1) 使用Insert 命令需要注意哪些问题 答:1)插入一条记录时最好一次性插进去,避免主键列报错。或者把主键 列设置为自动增长,这样就不用考虑主键那报错了 2)尽量不用关键字做列 的名子,即使要用也要在其外面加[]。 2)Alter 与Update 语句有什么区别 答:Alter 用于修改表结构,而Update 用于修改表中内容 四、 实验小结 通过本实验学会了如何运用 Insert、Update、Delete 命令对表中内容进行修改。 实验中遇到的问题是区别邮编为空(null)的情况和空字符串(’’),。 实验三、SQL 命令使用(二) 一、实验目的: (1)学习、掌握分组与汇总的函数的使用 (2)学习、掌握在SQL 语句中使用函数的方法 (3)学习、掌握连接查询的方法 (4)学习、掌握子查询的方法 二、实验内容: 1.查询订单金额大于100 的顾客的名称和电话; SELECT Cname,Ctel FROM Customer ,Order1 WHERE Order1.Cno=Customer.Cno AND Order1.Osum>100 2.查询所有签订订单的顾客的名称和邮编; select Cname,Czip from Customer where Cno in(select distinct Cno from Order1) 3.统计每类零件的数量分别为多少; select Pno,sum(Onum) from Order1 group by Pno 4.统计每个顾客签订订单的次数; select Cno,count(*) from Order1 group by Cno 5.查询所有顾客签订订单的情况(包括没有签订订单的顾客); select * from Customer left outer join Order1 on(Customer.Cno=Order1.Cno) 6.查询没有卖过一次的零件号(没有订单); select Pno from Store where Pno not in(select distinct Pno from Order1) 7.查询每个顾客签订订单的金额总数; select Cno,sum(Osum) from Order1 group by Cno 8.查询所有订单金额的平均值; select avg(Osum) from Order1 9.查询至少签订过两次订单的顾客信息。 select Cno,count(*) times from Order1 group by Cno having count(*)>=2 三、完成实验报告并回答问题 1) 外连接与内联接的区别在哪里 答:外连接是指把舍弃的元组也保存在结果关系中,而在其他属性上填 空值。 内连接是指只有满足连接条件的元组才能作为结果输出。 2)使用子查询需要注意哪些事项 答:a. 一个子查询必须放在圆括号中。 b.子查询的select 语句中不能使用order by 子句,order by 子句只能 对最终查询结果排序。 c.带有In 谓词的子查询中,当In 中为单一值时可用“=”代替,否 则不可。 d.带有比较运算符的子查询,将子查询放在比较条件的右边以增加 可读性。 f.子查询返回单值时可以用比较运算符,但返回多值时要用Any 或 All 谓词修饰,而使用Any 或All 时必须同时使用比较运算符。例>Any,!=All g.带有Exists 谓词的子查询不返回任何数据,只产生逻辑真值‘True’ 或逻辑假值‘False’。使用存在量词 Exists 后,若内层查询结果非空,则外 层的where 子句返回真值,否则返回假值;与Exists 相对应的是Not Exists, 使用Not Exists 时,若内层查询结果为空,则外层的where 子句返回真值, 否则返回假值。由 Exists 引出的子查询,其目标列表达式通常用*,因为带 Exists 的子查询只返回真值或假值,给出列名无实际意义。一些带 Exists 或 Not Exists 的子查询不能被其他形式的子查询等价替换,但所有带In 谓词, 比较运算符,Any 和 All 谓词的子查询都能用带Exists 谓词的子查询等价替 换。 四、 实验小结 通过本实验学会了如何使用分组与汇总函数,对连接查询和子查询有了深 入的了解。 实验四.视图和索引 一、实验目的: (1)掌握建立、维护索引的方法 (2)掌握建立、使用视图的方法 二、实验内容: 1.使用Create View Wizard 创建视图 通过企业管理器的Create View Wizard 创建视图 1)在企业管理器中,单击菜单“工具”下面的“向导” 2)展开“数据库”后,双击下面的“创建视图向导” 3)单击“下一步”后,选择数据库OrderMag,选择表order 4)选择字段Ono, Cno, Pno, Onum。 5)输入条件语句WHERE Onum >1000,

6)输入视图名称v_order 8)在企业管理器中的“数据库” OrderMag视图下查看视图v_order。 9)在查询分析器中输入并执行语句SELECT * FROM v_order 10)结果如何?显示的字段是否为前面自己定义的字段? 答,显示出满足条件的结果,显示的字段为当前自己定义的字段。 11)删除视图v_order。 Drop View v_order 2. 在查询分析器中创建视图 1) 建立一个视图,包括订单号、零件名称、顾客名称、订单金额等信息 create view is_osc(Ono,Pname,Cname,Osum) as select Order1.Ono,Store.Pname,Customer.Cname,Order1.Osum from Order1,Customer,Store where Order1.Pno=Store.Pno and Order1.Cno=Customer.Cno 2)建立一个视图,查询订单金额大于10000 元的大客户信息。 create view is_c as SELECT Cname, Osum FROM is_osc WHERE (Osum > 10000) 3)建立一个视图,查询每个顾客签订订单的总金额 create view is_sum as select Cno,sum(Osum)Ssum from

Order1 group by Cno 3. 察看系统提供的示例数据库 pubs 上有哪些索引,是什么类型的,列 表记录下来。 表名 索引名 索引类型 authors aunmind 唯一 employee employee_ind 唯一 roysched titleidind 唯一 sales titleidind 唯一 titleauthor auidind 唯一 titleidind 唯一 titles titleind 唯一 4.为OrderMag 数据库设计索引,并建立到表上。 Create unique index cnoind on Customer(Cno); Create unique index onoind on Orders(Ono); Create unique index pnoind on Store(pno); 三、完成实验报告并回答问题 1) 视图的建立有哪些需注意的问题 答:A 在CREATE VIEW 语句中,不能包括ORDER BY,COMPUTE 或者COMPUTE BY 子句也不能出现INTO 关键字 B 创建视图所参考基表的列数最多为1024 列 C 创建视图不能参考临时表 D 尽量避免使用外连接创建视图 E在一个批处理语句中,CREATE VIEW 语句不能和其他TRANSACT-SQL 语句混合使用 2)索引的作用是什么?有什么分类?每类有什么特点? 答:1)创建索引可以大大提高系统的性能。 第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。 第二,可以大大加快 数据的检索速度,这也是创建索引的最主要的原因。 第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特 别有意义。 第四,在使用分组和排序 子句进行数据检索时,同样可以显著减少查询中分 组和排序的时间。 第五,通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的 性能。 2)根据索引的顺序与数据表的物理顺序是否相同,可以把索引分成两 种类型。一种是数据表的物理顺序与索引顺序相同的聚簇索引,另一种是数 据表的物理顺序与索引顺序不相同的非聚簇索引。 3)聚集索引 (1)首先指出一个误区,主键并不一定是聚集索引,只是在 SQL SERVER 中,未明确指出的情况下,默认将主键定义为聚集,而 ORACLE 中则默认是非聚集,因为SQL SERVER 中的ROWID 未开放使用。 (2)聚集索引适合用于需要进行范围查找的列,因为聚集索引的叶子 节点存放的是有序的数据行,查询引擎可根据WHERE 中给出的范围,直接 定位到两端的叶子节点,将这部分节点页的数据根据链表顺序取出即可; (3)聚集索引尽量建立在值不会发生变更的列上,否则会带来非聚集 索引的维护; (4)尽量在建立非聚集索引之前建立聚集索引,否则会导致表上所有 非聚集索引的重建;

(5)聚集索引应该避免建立在数值单调的列上,否则可能会造成IO 的 竞争,以及B 树的不平衡,从而导致数据库系统频繁的维护B 树的平衡性。 聚集索引的列值最好能够在表中均匀分布。 2、非聚焦索引 (1)非聚集索引适合用于需要进行等值查找的列,因为非聚集索引的 叶子节点存放的是有序的索引列与书签的映射行,查询引擎可根据 WHERE 中给出的值,得到书签,继而定位到数据行; (2)覆盖索引(Covering Index),是非聚集索引的一种特殊且高效的 应用,就是将需要返回的数据列设计成组合索引,在SELECT 时只查询索引 中存在的数据列,这样就能形成索引覆盖,因为索引行中已经包含了想到的 数据,不需要再进行书签查找; 在SQL SERVER 2005 及以上版本中,提供了INCLUDED 关键字,可以 在非聚集索引中包含更多列,也是覆盖索引的一个有效引申; (3)非聚集索引建立在值具有单调性的列上,比如:自增列(单调递 增),可以减少索引的外部碎片及索引结构的维护; 四、 实验小结 通过本实验,学会了如何建立,删除视图,并对索引有了一定的了 解和掌握。 实验五.用户自定义函数(2 学时) 实验目的: 学习、掌握用户自定义函数的建立和使用 实验内容: 1、 创建自定义函数 创建一个用户自定义函数,并测试、查看函数返回值。 1)输入并执行下面语句 USE Northwind GO CREATE FUNCTION fn_TaxRate (@ProdID INT) RETURNS numeric(5,4) AS BEGIN RETURN (SELECT CASE CategoryID WHEN 1 THEN 1.10 WHEN 2 THEN 1 WHEN 3 THEN 1.10 WHEN 4 THEN 1.05 WHEN 5 THEN 1 WHEN 6 THEN 1.05 WHEN 7 THEN 1 WHEN 8 THEN 1.05 END FROM Products WHERE ProductID = @ProdID) END GO 2)此函数中输入变量是什么?返回值类型?如何定义的返回值? 答:此函数输入变量是@ProdID,返回值类型是numeric(5,4) 返回值是这样定义的 SELECT CASE CategoryID WHEN 1 THEN 1.10 WHEN 2 THEN 1 WHEN 3 THEN 1.10 WHEN 4 THEN 1.05 WHEN 5 THEN 1 WHEN 6 THEN 1.05 WHEN 7 THEN 1 WHEN 8 THEN 1.05 END FROM Products WHERE ProductID = @ProdID

3)输入并执行语句测试函数 SELECT ProductName, UnitPrice,Northwind.dbo.fn_TaxRate(ProductID) AS TaxRate,UnitPrice * Northwind.dbo.fn_TaxRate(ProductID) AS PriceWithTax FROM Products 查看结果 注意: 函数可以在Select 子句后面调用。 2、返回值为多值的自定义函数 创建函数返回多列多值。 1)输入并执行下面语句 USE Northwind GO CREATE FUNCTION fn_LargeFreight (@FreightAmt money) RETURNS TABLE AS RETURN ( SELECT S.ShipperID, S.CompanyName, O.OrderID, O.ShippedDate, O.Freight FROM Shippers AS S JOIN Orders AS O ON S.ShipperID = O.ShipVia WHERE O.Freight > @FreightAmt ) 函数中输入变量是什么?返回值类型?如何定义的返回值? 答:函数中输入变量是@FreightAmt,返回值类型是money SELECT S.ShipperID, S.CompanyName, O.OrderID, O.ShippedDate, O.Freight FROM Shippers AS S JOIN Orders AS O ON

S.ShipperID = O.ShipVia WHERE O.Freight > @FreightAmt 2)输入并执行语句测试函数 SELECT * FROM fn_LargeFreight(600) 查看结果 3、返回值为多值的自定义函数 本实验创建的函数也是返回多列多值,注意与上面实验的差别。 1)输入并执行下面语句 USE Northwind GO CREATE FUNCTION fn_FindReports (@InEmployeeID char(5)) RETURNS @reports TABLE (EmployeeID char(5) PRIMARY KEY, Name nvarchar(40) NOT NULL, Title nvarchar(30), MgrEmployeeID int, processed tinyint default 0) AS BEGIN INSERT @reports SELECT EmployeeID, Name = FirstName + ' ' + LastName, Title, ReportsTo, 0 FROM EMPLOYEES WHERE ReportsTo = @InEmployeeID RETURN END GO 此函数中输入变量是什么?返回值类型是什么?如何定义的返回值? 答:此函数中输入变量是@InEmployeeID,返回值类型是TABLE, 这样定义的返回值 INSERT @reports SELECT EmployeeID, Name = FirstName + ' ' + LastName, Title, ReportsTo, 0 FROM EMPLOYEES WHERE ReportsTo = @InEmployeeID 3)输入并执行语句测试函数 SELECT EmployeeID, [Name], Title, MgrEmployeeID FROM dbo.fn_FindReports(5) 查看结果。 4.设计一个函数,在OrderMag 数据库中,输入零件类别,返回该类别 零件的平均存量、最高存量和该类零件的总数量。 CREATE FUNCTION fund_Pno (@Pptype char(10)) RETURNS TABLE AS RETURN ( SELECT avg(Pnum) Avgp,max(Pnum) Maxp,sum(Pnum) Sump FROM Store WHERE Ptype= @Pptype ) select * from fund_Pno('传动') 5.设计一个函数,在OrderMag 数据库中,输入订单号,返回该订单所 涉及的零件名称和类别。 USE OrderMag GO CREATE FUNCTION fpname (@fOno varchar(60)) RETURNS TABLE AS RETURN ( select O.Ono,S.Pname,S.Ptype from Store AS S join Orders As O On O.Pno=S.Pno where O.Ono= @fOno ) select * from fpname('O1') 6.设计一个函数,在OrderMag 数据库中,根据零件库存量的大小,大 于500 的认为是充足,在100-500 之间的是均衡,小于100 的为面临缺货。 USE OrderMag GO CREATE FUNCTION fpnum4() RETURNS Table AS RETURN (SELECT 'Pnum Range'= CASE WHEN Pnum>500 THEN '充足' WHEN Pnum BETWEEN 100 and 500 THEN '均衡' WHEN Pnum<100 THEN '面临缺货' END FROM Store ) select * from fpnum4() 7.设计一个函数,根据输入的数值,计算从1 加到该数的和(如输入5, 则计算1+2+3+4+5=15,输出为

15)。 create function sumn(@num int) returns int as begin declare @i int; declare @s int; set @i=1; set @s=0; while (@i<=@num) begin set @s=@s+@i; set @i=@i+1; end return @s end print '从1 加到该数的和是:'+cast(dbo.sumn(5) as varchar) 8.完成实验报告 (1)用户自定义函数在定义与使用上有何需要注意的问题?与存储过 程有何不同? 答:在SQL SERVER 中调用自定义函数时,必须在自定义函数前加上创 建此函数的用户 存储过程: 存储过程可以使得对数据库的管理、以及显示关于数据库及其用户信息的工 作容易得多。存储过程是 SQL 语句和可选控制流语句的预编译集合,以一 个名称存储并作为一个单元处理。存储过程存储在数据库内,可由应用程序 通过一个调用执行,而且允许用户声明变量、有条件执行以及其它强大的编 程功能。 存储过程可包含程序流、逻辑以及对数据库的查询。它们可以接受参数、输 出参数、返回单个或多个结果集以及返回值。 可以出于任何使用 SQL 语句的目的来使用存储过程,它具有以下优点: 1、可以在单个存储过程中执行一系列 SQL 语句。 2、可以从自己的存储过程内引用其它存储过程,这可以简化一系列复杂语 句。 3、存储过程在创建时即在服务器上进行编译,所以执行起来比单个 SQL 语 句快。用户定义函数:Microsoft SQL Server 2000 允许创建用户定义函数。 与任何函数一样,用户定义函数是可返回值的例程。根据所返回值的类型, 每个用户定义函数可分成以下三个类别: 1、返回可更新数据表的函数 如果用户定义函数包含单个 SELECT 语句且该语句可更新,则该函数返回 的表格格式结果也可以更新。 2、返回不可更新数据表的函数 如果用户定义函数包含不止一个 SELECT 语句,或包含一个不可更新的 SELECT 语句,则该函数返回的表格格式结果也不可更新。 3、返回标量值的函数 用户定义函数可以返回标量值。 四、 实验小结 通过本实验掌握了自定义函数的建立及用法 实验六.安全性管理(2 学时) 一、实验目的: (1) 了解SQL Server 的认证模式,安全管理的主要内容和方法 (2) 掌握用户管理、访问权限管理的基本方法 二、实验内容: SQL Server、数据库、对象等不同级别的安全性设置与管理。 1.设置身份验证模式 1)在SSMS 中,选择服务器实例 2)单击右键,选择“属性”,在属性对话框中选择“安全性”选项卡 3)将身份验证模式设定为“仅Windows ” 4)单击“确定”,SQL SERVER 重新启动服务后更改验证模式 5)重新启动服务,登陆SSMS 时选择SQL SERVER 验证,然后输入sa 用户登录 6)能否登录?为什么? 不能,因为此时的访问权限仅限于Windows 7)重复1-3 步骤,将身份验证模式设定为混合模式。 注意:实验完成后应该将其重新设定为混合认证模式;只有重新启动服 务,验证模式才生效。 2.添加SQL SERVER 登录帐号 添加SQL SERVER 登录帐号TestSQL。 1)在SSMS 中,展开“安全性”,选择“登录名”,

选择“新建登录名” 2)选择SQL Server 身份验证, 3)输入用户名TestSQL 及密码TestSQL,单击“确定” 4)打开数据库引擎查询页,输入登录帐号TestSQL 和密码TestSQL,单 击“确定”,此时数据库引擎查询页是以TestSQL 身份登录。 5)输入并执行查询语句SELECT * FROM master.dbo.sysDatabases 6)在查询页中输入“Use OrderMag”T-SQL 语句,切换当前数据库。 7)切换是否成功? 为什么? 答:不成功,因为系统没有对TestSQL 开放访问数据库的权限。 3、添加数据库用户帐号 授权SQL SERVER 登录帐号TestSQL 访问数据库OrderMag。 1)在SSMS 中,展开数据库OrderMag 中的“安全性”,选择右键单击 “用户”,选择“新建用户” 2)在“登录名”中选择TestSQL,然后单击“确认” 3)打开数据库引擎查询页,输入登录帐号TestSQL 和密码TestSQL,单 击“确认”。 4)此时查询就是以TestSQL 身份登录 5)在查询页中输入“OrderMag”T-SQL 语句,切换当前数据库。 6)切换是否成功?为什么? 答,不成功,因为虽然对用户开放了数据库,但用户对数据库中的表仍 没有访问权限。 注意:User Name 与Login 的名称可以相同,也可以不同,但是建议采 用相同的名称以方便维护管理。 4、给角色分配语句权限 基于自定义角色分配语句许可权限。在完成以上练习的基础上完成此练 习。 1)使用TestSQL 帐号登录到查询分析器中 2)将当前数据库切换到OrderMag,执行语句SELECT * FROM Customer 3)执行结果为什么? 拒绝了对对象 'Customer' (数据库 'OrderMag',所有者 'dbo')的 SELECT 权限,没有授予TestSQL 用户对OrderMag 数据库中表的SELECT 权限。 4)在SSMS 中,双击角色DBRole,单击“权限”按钮 5)在表Customer 所对应的行中,选择“Select” 6)再使用TestSQL 帐号登录到查询分析器中 7)将当前数据库切换到OrderMag,执行语句SELECT * FROM Customer

8)执行结果?为什么? 答:获得Customer 表中的信息,因为用户TestSQL 对表Customer 有查 询的权限 5、给登录帐号分配固定服务器角色 给帐号分配固定服务器角色,让帐号有管理SQL Server 权限。 1) 创建一个新的SecurityAdmin 登录帐号 2)双击SecurityAdmin 帐号,选择“服务器角色”选项卡 3)选择Security Administrators 固定服务器角色,“确定” 4)SecurityAdmin 拥有什么权限? 登录,查看master 数据库 6、给用户帐号分配固定数据库角色 给用户帐号分配固定数据库角色,让帐号有备份数据库的权限。 1)创建新的登录帐号BackupAdmin 2)在数据库OrderMag 上创建用户帐号BackupAdmin 3)BackupAdmin 帐号, 4)选择db_backupoperator 固定数据库角色,单击“确定”。 5)BackupAdmin 拥有什么权限? 备份数据库权限 7.完成实验报告 (1)描述系统的安全机制。 答:在计算机系统中,安全措施是一级一级层层设置的。例如用户 在进入计算机系统时,系统首先根据输入的用户标识进行身份鉴定,只有合 法的的用户才准许进入计算机系统,对已进入系统的用户,DBMS 还要进行 存取控制,只允许用户执行合法操作。操作系统一级也会有自己的保护措施, 数据最后还可以以密码形式存储到数据库中。 (2)用户帐号的概念,用户帐号与登录帐号的区别。 答:当用户通过身份验证,以某个登录帐号连接到SQL Server 以后, 还必须取得相应数据库的“访问许可”,才能使用该数据库。这种用户访问 数据库权限的设置是通过用户帐号来实现的。 登录帐号是属于服务器的层面。而登录者要使用服务器中的数据库数据

更多相关推荐:
预习报告范例

电容反馈LC振荡器实验预习报告学号姓名实验台号一实验目的1学会数字频率计的使用方法2掌握常用正弦波振荡器的工作原理及其特点3掌握正弦波振荡器的基本设计分析和测试方法4研究反馈系数静态工作点负载变化对振荡器的起振...

预习报告与实验报告要求

预习报告与实验报告要求预习要求1.课前必须认真预习将要做的实验。认真看理论课讲义与实验指导教材,了解实验要点(包括实验原理、实验方法、使用仪器、实验步骤);2.实验教学大纲规定需写预习报告的实验,必须认真撰写预…

预习报告格式

预习报告格式学生在进实验室之前必须仔细阅读实验书中有关的实验及基础知识明确本次实验中测定什么量最终求算什么量用什么实验方法使用什么仪器控制什么实验条件在此基础上将实验目的操作步骤记录表和实验时注意事项写在预习报...

实验预习报告格式

验证性实验预习报告格式手写电子科学与工程系实验预习报告课程名称实验教师预习成绩专业班级实验地点实验日期学生姓名学号同组者姓名实验项目名称一实验目的和要求二实验原理三实验方法与步骤四实验数据记录表格五预习遇到的问...

预习报告

预习报告姓名黄世东班级食品科学与工程学号11014150241院系生化学院三色鸽南阳三色鸽食品有限公司创办于19xx年经过21年的发展公司目前注册资金1200万并拥有独立研发生产营销运输等员工500余名20xx...

预习报告

预习报告姓名王紫薇学号20xx10404127专业通信工程141班实习目的通过实习让我们学会从实习地获得直接的和间接地生产实践经验积累相关的生产知识通过认识实习学习通信工程专业方面的生产实践知识为专业课学习打下...

预习报告

一实验任务1低碳钢拉伸试件1弹性性能E2规定微量塑性伸长应力指标00102采用引伸计法和做图法3屈服性能指标屈服点上屈服点下屈服点4强度性能指标5断后伸长率6断面收缩率Z2铸铁拉伸试件1弹性性能E2强度性能指标...

乙酰水杨酸实验预习报告

乙酰水杨酸有机化学实验报告实验项目名称乙酰水杨酸的制备一实验目的1了解和熟悉乙酰水杨酸的基本方法2巩固抽滤的操作技术二实验基本原理或主副反应式主反应OHCH3CO2OCH3COOHOH3副反应OHOH2OHH2...

生产实习 预习报告

宏科电子主要生产生产多功能电子陶瓷材料陶瓷电容器半导体陶瓷电容器等电子材料是指在电子技术和微电子技术中使用的材料包括介电材料半导体材料压电与铁电材料导电金属及其合金材料磁性材料光电子材料以及其他相关材料电子材料...

《关于课前预习的问卷调查分析报告》

关于课前预习的问卷调查分析报告一调查背景小学生对课前预习现状及需求的调查问卷是基于当今教育课堂教学的有效性被教育同仁们普遍关注背景下提出的目前小学生课前预习的习惯较差学习情绪有不积极和部分消积因素针对这样的现象...

高频实验预习报告20xx

高频实验预习报告实验一调幅发射系统实验一实验目的图1为实验中的调幅发射系统结构图通过实验了解与掌握调幅发射系统了解与掌握LC三点式振荡器电路三极管幅度调制电路高频图1调幅发射系统结构图二预习内容1给出完整的调幅...

预习报告--磁聚焦测定荷质比

实验预习报告姓名张伟楠同组姓名班级F0703028实验日期20xx0414学号5070309108实验成绩指导老师批阅日期磁聚焦法测定电子荷质比原理简述原理图主要公式1零电场测定电子荷质比L2D2kn2lNeU...

预习报告(40篇)