仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1100|回复: 8
打印 上一主题 下一主题

[学习教程] MSSQL编程:SQL Server 2005加密系统(一)

[复制链接]
简单生活 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:22:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
我们分析上面的两个操作,都有一个“删除数据”的过程。server|加密|系统SQLServer2005加密系统(一)
SQLServer2005中引进了一套完全的加密办法,详细的术语呢就偷个懒不写了,人人能够看BOL么。

大抵的布局呢就是在安装sQLServer2005的时分使用SQLServer服务账号天生一个服务主密钥ServiceMasterKey,然后数据库的办理员能够在数据库上创立DatabaseMasterKey,固然也能够不创立,同时数据库办理员能够为DatabaseUser创立证书、对称密钥大概非对称密钥。这三种工具都能够用于加密用户数据,但一样平常保举使用证书签订代码,使用证书大概非对称密钥加密对称密钥,使用对称密钥加密用户数据。
以下仍是给一段代码,由于思索到我跟王辉兄弟事先在成都宾馆里研讨这个器材就是苦于找不到完全的典范代码,厥后仍是GTEC的徐壮大拿给了个Link,然后我们又东拼西凑才出了一段代码,不敢独享,拿来与人人分享。
先给使用证书签订代码的典范,这段代码的优点是不必给DatabaseUser年夜的权限,就能够让用户修正部分数据,这也是SQLServer2005中权限粒度化的一种体现:
--------------------------------------------------------------------------------
--创立实行用数据库
USEmaster
IFEXISTS(SELECT[name]FROMsys.databasesWHERE[name]=Sales)
DROPDATABASESales
CREATEDATABASESales
IFEXISTS(SELECTprincipal_idFROMsys.server_principalsWHERE[name]=ryanAND[type]=S)
DROPLOGINryan
CREATElOGINryanWITHPASSWORD=P@ssw0rd
IFEXISTS(SELECTprincipal_idFROMsys.server_principalsWHERE[name]=teddyAND[type]=S)
DROPLOGINteddy
CREATElOGINteddyWITHPASSWORD=P@ssw0rd

--创立用户ryan,并创立数据库主密钥
USESales
IFEXISTS(SELECT*FROMsys.database_principalsWHERE[name]=ryanAND[type]=S)
DROPUserryan
CREATEUSERryanFORLOGINryanWITHDEFAULT_SCHEMA=dbo
GO

CREATEMASTERKEYENCRYPTIONBYPASSWORD=P@ssw0rd
GO

--创立证书
IFEXISTS(SELECT[name]FROMsys.certificatesWHERE[name]=CERT_MAINTAIN)
DROPCERTIFICATECERT_MAINTAIN
CREATECERTIFICATECERT_MAINTAIN
WITHSUBJECT=CertificateForDatabaseMaintainance,
START_DATE=01/01/2006,
EXPIRY_DATE=12/31/2015
GO

SELECT*FROMsys.certificates
--使用证书创立数据库用户,并授与该用户办理数据库用户的权限
CREATEUSERUSER_MAINTAINFORCERTIFICATECERT_MAINTAIN
GRANTALTERANYUSERTOUSER_MAINTAIN

--创立存储历程
IFEXISTS(SELECT[name]FROMsys.proceduresWHERE[name]=usp_AddUser)
DROPPROCEDUREdbo.usp_AddUser
GO
CREATEPROCEDUREdbo.usp_AddUser
@UserNamevarchar(50)
AS
IFEXISTS(SELECT*FROMsys.database_principalsWHERE[name]=@UserNameAND[type]=S)
EXEC(DROPUSER+@UserName)

EXEC(CREATEUSER+@UserName)
GO

--完成筹办事情,入手下手测试加密
GRANTEXECONdbo.usp_AddUserTOryan
EXECUTEASLOGIN=ryan
BEGINTRY
EXECdbo.usp_AddUserteddy
ENDTRY
BEGINCATCH
SELECTERROR_MESSAGE()ASErrorMsg
ENDCATCH
REVERT

--使用证书签订存储历程代码
ADDSIGNATURETOdbo.usp_AddUserBYCERTIFICATECERT_MAINTAIN
ALTERCERTIFICATECERT_MAINTAINREMOVEPRIVATEKEY

--在此实验实行剧本
EXECUTEASLOGIN=ryan
EXECdbo.usp_AddUserteddy
REVERT



优化的SQL查询算法,有效地提高查询速度
莫相离 该用户已被删除
沙发
发表于 2015-1-18 17:55:30 | 只看该作者
发几份SQL课件,以飨阅者
第二个灵魂 该用户已被删除
板凳
发表于 2015-1-22 19:54:23 | 只看该作者
原来的计算字段其实和虚拟字段很像。只是管理方面好了而已,性能方面提高不多。但是SQL2005提供了计算字段的持久化,这就提高了查询的性能,但是会加重insert和update的负担。OLTP慎用。OLAP可以大规模使用。
爱飞 该用户已被删除
地板
发表于 2015-1-31 11:21:57 | 只看该作者
varchar(max)\\\\nvarchar(max)类型的引入大大的提高了编程的效率,可以使用字符串函数对CLOB类型进行操作,这是一个亮点。
再见西城 该用户已被删除
5#
发表于 2015-2-6 19:10:13 | 只看该作者
至于淘汰的问题,只能说在你的项目周期之内,微软应该都不会倒闭。
飘灵儿 该用户已被删除
6#
发表于 2015-2-18 09:00:53 | 只看该作者
如果,某一版本可以提供强大的并发响应,但是没有Oracle的相应版本稳定,或者价格较贵,那么,它就是不适合的。
变相怪杰 该用户已被删除
7#
发表于 2015-3-6 04:00:24 | 只看该作者
如果我们从集合论(关系代数)的角度来看,一张数据库的表就是一组数据元的关系,而每个SQL语句会改变一种或数种关系,从而产生出新的数据元的关系(即产生新的表)。
飘飘悠悠 该用户已被删除
8#
发表于 2015-3-12 20:20:48 | 只看该作者
始终遗憾SQLServer的登陆无法分配CPU/内存占用等指标数。如果你的SQLServer给别人分配了一个只可以读几个表的权限,而这个家伙疯狂的死循环进行连接查询,会给你的系统带来很大的负担。
分手快乐 该用户已被删除
9#
发表于 2015-3-20 02:37:31 | 只看该作者
对于数据库来说,查询是数据库的灵魂,那么SQL查询效率究竟效率如何呢?下文将带对SQL查询的相关问题进行讨论,供您参考。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2025-3-13 06:49

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表