SQLServer数据库大作业1
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
华东交通大学
《数据库认证》课程大作业
——Northwind数据库综合应用设计方案
专业班级: 09软件工程(+电子商务)2班学院:软件学院
学生姓名:毕文超学号:12
分数:学期: 2011-2012(2)任课教师:刘常昱
2)给出Northwind库的整体ER关系图,给出Employees和Customers表的数据库字典。
图一
这个过程需要密码来重新存储文件,但是使用文本编辑器,这些数据仍然是可以访问的。还有,重新存储不能使用GUI来完成,所以它必须通过T-SQL重新存储命令和密码一起完成任务。
加密存储过程
一种防止你的存储过程被用于查看的方法就是在创建你的存储过程的时候使用“带加密”的选项。这样的话,备份文件中的数据也是经过加密的了。要使用加密来创建一个存储过程,如下所示:
createproceduredbo.testEncryption
withencryption
as
select*FROMproducts
加密数据
另一个选择就是在你把数据存储到你的数据库表中的时候,对数据进行加密。在SQL Server 2000中没有本地的方法来完成,但是有很多工具你可以使用:
针对SQL Server的NetLib Encryptionizer
使用XP_CRYPT加密SQL Server
SQL Server 2005中存在本地加密功能。看看微软的文章<>如何:加密一列数据,那里解释了这个过程。在你加密了数据库中的数据之后,当你创建备份的时候,数据仍然是经过加密的。
保证文件系统的安全
保卫你的备份文件的安全的另一个方法就是在你的服务器或者网络中使用安全目录。你可以限制访问这个目录的权限,这样就只有一小部分受限制的人能够访问你的备份文件。通过在安全目录上使用上述的技术,你就可以创建另一个级别的安全措施了。这仍然不会消除加密的需求,但是它提供了额外的安全措施。
直接备份到磁带
备份的另一个选择就是直接备份到磁带上,以便在你的网络中保证备份文件的安全。这种方法减少了对你的备份文件的不正当访问的问题。用这种方式有一个大问题:我写入的大部分关于备份的内容都是首先写入磁盘的,以便在必要的时候能够快速重新存储,然后再为了长期的存储而归档到磁带上。这种方式消除了你的备份落入坏人之手的机会,但是,不幸的是,它让其他的处理过程变得困难。
加密备份
如果你真的需要保证你的备份文件的安全,最好的方式就是在你创建备份文件的时候对其进行加密。不幸的是,SQL Server中没有工具可以让你完成这个任务,但是看看以下的产品,它们可以让你创建各种级别的密码和加密技术加密备份。
Idera的 SQLsafe
Quest的 SQL LiteSpeed
Red-Gate的 SQL Backup
3)数据库使用中的自定义提示非常重要,它可以更加直观的把一些操作不当的数据库行为提示给用户。利用RAISEERROR语句完成如下的功能:
首先自定义一个错误号为50512的用户自定义错误,错误的严重级别为10,错误的文本消息为’Can’t find the customer ID. ’,另外消息中还要加上表名和输入的CustomerID, 并且当发生消息时将消息写入Microsoft® Windows NT® 应用程序日志中。然后创建一个名为ExistCustomerID的存储过程,以用它来找出SQL SERVER中的northwind数据库的Customer表中,指定的CustomerID是否存在,如果存在返回0,如果不存在返回错误号50512,并将消息写入Microsoft® Windows NT® 应用程序日志中。写出定义错误消息和创建存储过程的语句。
定义自定义错误消息
EXEC sp_addmessage
@msgnum = 50512,
@severity = 10,
@msgtext = 'Can’t find the customer ID:%s at table %s.',
@with_log ='true'
创建存储过程的语句如下
USE NorthWind
GO
CREATE PROC ExistCustomerID
@CustomerID char (5)
AS
SELECT CustomerID
From Customers WHERE CustomerID=@CustomerID
IF @@ROWCOUNT=0
BEGIN
RAISEERROR(50512, 10, 1, @ CustomerID, @DBNAME)
RETURN
END
RETURN 0