主题 : SQL 2008如何引诱我们升级?
你懒得理,我皇家马德里
级别: 六行秋雁

UID: 12
精华: 0
发帖: 12662
威望: 11038 点
无痕币: 2689 WHB
贡献值: 271 点
在线时间: 6151(时)
注册时间: 2008-05-30
最后登录: 2024-04-29

0 SQL 2008如何引诱我们升级?

      微软终于发布了它的新版企业级关系数据库管理系统——SQL Server 2008,虽然它的到来略微有些晚点,不过这也在我们多数人的意料之中,毕竟这是微软一贯的作风,相比它的很多其它产品,SQL Server 2008已经算够“准时”的了。  相比SQL Server 2005,微软的这个新版SQL Server数据库具有很多重要的功能和改进。不过,由于主要是对功能上进行了完善和改进,而并非对其引擎或工具集进行改革创新,很多朋友可能会认为,SQL Server 2008不过是SQL Server 2005版本2而已。那么,DBA们该怎么办?现在是立即升级到这个最新、最强大的新数据库?还是暂时观望,依然停留在现在的SQL Server 2005或2000的环境呢?
    不要急于给出答案,先看看它到底有什么重要的改进,再结合自己的实际情况,做出最佳决策。如果你认为它的许多新功能可以让你的工作和生活更轻松,或者你使用到的某些功能在新版该数据库中比现有SQL Server环境具有更高的性能,那么你可能会考虑升级到SQL Server 2008。那么,它到底有哪些功能会“引诱”人们来使用它呢?下面让我们一起走近她,了解她。

  丰富功能一览
     首先,SQL Server 2008为我们带来了一些更强大的审计功能;或许其中最重要的一个就是变更数据捕获(CDC)。使用CDC,你能够捕获和记录发生在你数据库中的任意INSERT、UPDATE或DELETE等操作。一旦你为一个数据库启用了CDC功能,你可以对该数据库中的一个表进行跟踪记录。SQL Server会记录对这些表进行修改的信息,并将其写到启用CDC功能的数据库的某些系统表中。当一个用户针对你的数据表运行INSERT、UPDATE或UPDATE操作时,相关操作事务和相关数据就会被记录下来。对于INSERT来说,插入的数值会被记录,而对于DELETE来说,被删除的值同样也会被记录。UPDATE的操作略微有点不同。更新前后的数据都会被记录。通过使用CDC功能,你不仅可以知道对数据进行了何种操作,你还可以恢复因误操作或错误的程序所造成的丢失数据。这是SQL Server非常强大的一个新增功能,它为数据审计提供了一个非常有用的功能,在此以前,我们一般要借助于第三方工具来实现这一功能。
  SQL Server 2008还包含许多新安全功能。透明数据加密(TDE)可以让你的数据更加安全。通过使用TDE功能,你的数据库文件和它们的备份可以使用一个服务器主密钥来进行加密。这可以确保该数据库只能在具有密钥的服务器上打开或访问其中的数据。即使一个准黑客得到了你的数据库文件,但是因为他没有密钥,所以也不能使用其它SQL Server打开它们。在保护敏感数据方面,这个功能所起的作用非常大。而且从这个功能的名字你也可以看出,该功能完全透明。你可以在你的数据库上打开TDE功能,而用户和应用程序不会感觉到有什么不同。这意味着你无需花时间来修改已经写好的程序,也无需因为想用这个功能而去培训用户。
    最近在SQL Server社区讨论的最多的一个话题就是数据压缩问题。SQL Server 2008也给我们带来一个强大的数据压缩功能,从而节约了磁盘空间。这个功能并没有引入太多的技术,SQL Server中的数据可以被在页面级别上进行压缩。这意味着,当你压缩一个表的时候,它实际上每次将其做成一个页。不过,我建议你根据具体情况来选择使用数据压缩功能。对于这个功能所带来的好处,以及它带来的开支的增加,一直存在很大的争论。在这儿我不会去支持争论的任何一方,但是我需要指出的是,在选择执行一个压缩之前,你应该确认你亲自进行一下研究和测试。也就是说,当磁盘空间更重要的时候,你可以使用这个功能来压缩存储更多的数据,反之则不建议使用它。
 
  强大的备份功能
    在数据备份方面,SQL Server 2008提供了备份压缩功能。和使用数据压缩所不同的是,我强烈推荐大家使用这个备份压缩功能。节省存储数据的硬盘空间固然非常伟大,但是让单独备份的数据库文件体积更小则更美妙。你是否有过需要把一个大数据库文件从一个服务器拷贝到另一个服务器的经历?或许你现在正在进行一个备份数据库文件的复制,或者搭建一个测试环境,或者是在服务器挂了后进行数据恢复,这时候你或许在为通过网络拷贝一个500G大小的数据库文件而发愁。最简单的一个常识是,拷贝的文件体积越小,拷贝完成的速度就越快。在此之前,你或会通过将这个数据库文件压缩成zip文件,使其体积更小,更便于携带。而现在,通过备份压缩功能,你就可以节省备份数据库文件的体积。
    要想使用备份压缩功能,你只需要简单的在BACKUP DATABASE语句后简单的加上一个WITH COMPRESSION选项即可,如下例所示:
BACKUP DATABASE Adventureworks2008
TO DISK = 'D:\Backup\AdventureWorks.bak'  
WITH COMPRESSION   如果你想知道这个备份压缩功能究竟可以为你节省多少空间,这儿有一个例子。在不使用备份压缩功能的情况下,我对一个965MB的数据库进行了备份,得到了一个大小为636MB的备份数据库文件。但是如果使用了压缩功能,相同的数据库所得到的备份文件大小只有147MB。不同数据库的压缩比率可能会有所不同,但是正如上面例子所示,你总可以获得比较大的压缩效果。

  学会使用Merge语句
    在SQL Server 2008中,有一个新的MERGE语句让我有一点点激动。SQL Server开发者在编写修改表的存储过程时,会非常喜欢这个新的T-SQL语法。使用“IF-THEN”来决定一个数据行是否需要被插入、更新或删除的时代已经过去了。MERGE让我们可以一次搞定所有的逻辑和修改。而且,你可以一次就能搞定整个数据集的对比,不用再逐行进行对比。以下是使用MERGE语句的一个例子:
MERGE tbl_address AS current_addresses
USING (
SELECT customer_objid = address_label,
addressline1, addressline2, city, region, country, zip
code, is_deleted
FROM @addresses)
AS
source_addresses(address_label, addressline1,
addressline2, city, region, country, zipcode,
is_deleted)
ON
(
current_addresses.address_label
= source_address
es.address_label
)
WHEN NOT MATCHED THEN
INSERT (address_label, addressline1, addressline2,
city, region, country, zipcode)
VALUES (source_addresses.address_label,
source_addresses.addressline1,
source_addresses.addressline2,
source_addresses.city, source_addresses.region,
source_addresses.country, source_addresses.zipcode)
WHEN MATCHED AND source_addresses.is_deleted
= 1
THEN DELETE
WHEN MATCHED THEN
UPDATE
SET address_label=source_addresses.address_label,
addressline1
=source_addresses.addressline1,
addressline2
=source_addresses.addressline2,
city
=source_addresses.city, region=source_address
es.region, country
=source_addresses.country,zip
code
=source_addresses.zipcode   我们简单的对上述例子进行一下点评。USING部分定义了新数据,在这个例子中是一个表变量。ON部分定义了新数据和现有数据之间的联接。最后,它通过一系列的MATCHED语句来进行相应操作,其中包括WHEN NOT MATCHED的时候进行插入操作,WHEN MATCHED的时候执行更新操作,或WHEN MATCHED且符合一些其它条件的时候进行删除操作。这是一个真正让你省心省力的功能,其语法更干净,且符合我们习惯的思维逻辑。
 
  强大的基于策略管理
    好戏总要压轴,我也把SQL Server 2008中最好的新功能之一放到了最后,它就是基于策略的管理。你是否有过这样的想法,希望通过建立一系列的策略,来控制用户可以对你的SQL Server进行什么操作?现在你能实现你的想法了,你可以使用SQL Server 2008的策略管理功能。
    要想使用一个策略,首先你必须建立一个条件。条件会告诉策略需要查看你的数据库中的什么内容。你可以应用条件到不同的方面、服务器上的对象或数据库中的对象。方面就是策略要应用的对象,常见的方面包括数据库、表、视图、存储过程和用户等。当然我提到的只是其中一部分,只是让你明白,在定义一个条件时,你可以对哪些属性进行判断。
    一旦你选择好了策略的方面后,你需要定义一个表达式来告诉策略,需要在方面上查找什么。举个例子来说,如果你选择了表来做为你的方面,你可以在你的表达式中使用许多域。你可以查看其创建日期、名称、所有者、行数量,以及它是否有一个触发器,甚至于你还可以查看它最后一次修改的数据。再次声明,这儿提到的不是它的全部功能。举个例子来说,如果你不希望用户在表名中使用“table”这个词,你就应该使用Table作为方面,并对其设定一个表达式 @Name NOT LIKE "table."
     现在剩下的就是创建一个使用这个条件的策略了。当你创建了一个策略,并对其应用了条件后,你还可以为其指定要查看的特定对象。你可以查看所有的表,或者在全部数据库或特定数据库中的特定表。
    最后,你需要为策略定义一个评估模式,来告诉SQL Server如何应用这个策略。默认情况下,它会选择按需评估模式,这意味着只有你请求对该策略进行审计的时候,它才会生效。你还可以按计划来定期使用该策略进行评估,这样你可以收到违反你策略的对象的报告。另外,你也可以选择在发生变更的时候使用该策略进行评估,那么策略将在对象被创建或修改的时候被评估。当一个策略被违反的时候,你可以选择对其进行记录,或者甚至阻止其修改发生。
     我们在这儿只是对策略管理进行了简单的介绍,不过或许你也已经看到,对于审计和控制你的数据库对象来说,它是一个非常强大的工具。


  做出适合自己的决策
   不管怎么样,SQL Server 2008已经真实的走到我们面前,你现在必须做出决定,是否升级到微软这个最新版的关系数据库管理系统。其内置引擎并没有发生重大变化,因此是否进行升级,要看其新功能是否能够吸引你。
   我希望这篇文章能够让你简单的了解一下SQL Server 2008,不过需要指出的是,本文中提到的只是其中一部分功能。
   因此最合适的做法是,熟悉一下SQL Server 2008的新选项和新功能,然后根据自己的情况来决定是否进行升级。如果其中有些功能让你的生活更简单,或者有一些新功能可以让你受益,那么你可能会考虑现在升级到这个版本。否则,你可能暂时观望,等发现了值得你升级的地方后,再考虑进行升级。
  ☆  attitudetrip推广 
Total 0.037121(s) query 3, Time now is:05-04 20:01, Gzip enabled 粤ICP备07514325号-1
Powered by PHPWind v7.3.2 Certificate Code © 2003-13 秋无痕论坛