圣诞之夜,班级聚餐.
丁丁冬冬,觥筹交错.同学友人,轮番轰炸.可惜状态不在,不胜酒力.小脑已很难平稳身体,幸好大脑强健,清醒依旧.
酒后K歌,专挑高音.张雨生,张信哲,飚的撕心裂肺.逐获一鸦号:”飚…飚…飚哥”.
我们仅以花天酒地,庆祝耶叔重生!
外国人的节日,有两个在中国发扬光大的,一个情人节,一个是圣诞。无疑它们都是快乐的节日。情人节是情人们的专利,而圣诞则给了更多人快乐。
晚上和朋友出去吃饭,因为是圣诞,所以才有理由。街上人很多,小贩们卖各种和圣诞有关的小礼物,平安果、小彩球,喜气洋洋的。走了好几家饭店,终于找到空位。饭店生意也很好,食客很快乐,老板也是。豆捞味道很不错。我们边吃边聊,谈身边的朋友,谈未来的打算,很快乐。其间收到不少短信,都是祝福的言语。虽然也有“圣诞快乐,快点还钱”之类的,还是觉得快乐。因为在这个叫做圣诞的节日里,有四面八方的人在想念你、为你祝福,有什么比这个更让人快乐呢?
好吧,进来的你,祝你圣诞快乐。
话说某年某月某日,笔者给一单位做了个网站,服务器提供的各种服务是用Windows 2000 Server自带的IIS,本来很简单的事,可惜他们单位的网管是个新手,还喜欢经常在服务器上乱改,出了问题就找我们,老板看了我们的工作日志后,还以为是我们的水平不好,要我三天内解决这些问题,要不就和他说拜拜。呜,呜,呜……. 好在功夫不负有心人,经过俺三个日夜的苦思冥想终于搞定了这个问题。
有很多文章都介绍过怎么样去备份IIS,但大多数都是用软件来实现的,其实,IIS本身自带了备份和恢复IIS设置的功能。在恢复IIS设置之前需要备份IIS。备份的过程很简单:在Windows 2000 Server中找到”开始”菜单中的”管理工具”,点击其中的”Internet服务管理器”,在服务器名称上右击,在弹出的菜单中点击”备份/还原配置”,会出现如图1所示的窗口。点击[创建备份]按钮,会出现输入IIS配置备份名称的对话框,这里我们输入”黄迎2004415″。点击[确定]按钮,IIS的备份就完成了。
我就是这样做的,自从教了那个网管后,客户再也没有打过电话了,噢!!对了差点走题了,还要给大家说说么样恢复。做了备份后,如果你的IIS的配置被改了后,你就可以选择恢复到你当时备份时的配置了。同上面一样打开”Internet服务管理器”,也是在原来的服务器名称上右击,在弹出的菜单中点击”备份/还原配置”,会出现图2:
原来的备份(如”黄迎2004415″)就会出现在列表框里。点击[还原]按钮,系统会弹出询问窗口,提示用户”还原是一项耗时的操作(这是为了防止有两个用户同时在恢复网站,就你是数据库的锁功能),它将覆盖所有当前的设置并导致全部服务的停止和重新启动,您确定要继续吗?”。点击[是]进行IIS配置的恢复。在点击[是]按钮之后,系统会把当前IIS中所有的配置删除,把原来备份的配置恢复过来,这个过程要看IIS本身站点配置的数量而定,一两分钟就可以完成了。如果你做了N个虚拟站点和FTP,那就另当别论了,此外,虽然系统可以保存多个备份文件,但是每个备份恢复之后,就会覆盖以前的配置,千万要注意保证你要恢复的配置操作的准确性呀!最好像我一样,每次做备份的文件取名为日期,不过名字不能含有破折号,取名的时候要注意名字书写规则。
另外,还有一个办法,那就是用ghost,备份整个系统盘。不过这样的话,连系统其它的相关配置也就覆盖了,而且对硬盘不好,得不偿失,至于你喜欢用哪个就看你自几了!!!!!
如果你在IT业工作,那么你很可能听说过XML;但如果你的工作主要与SQL Server有关,那么你可能并没有直接运用过XML。XML已经是Web编程环境中的普遍的数据格式了,而且它也是.NET Framework中主要的底层技术之一。SQL Server以两种方式来支持XML:通过SQL Server本身的功能,以及通过发布称为SQLXML的额外的功能。SQLXML扩展了SQL Server,并提供了XML兼容性。在本月的专栏中,我将讲述SQL Server对XML的内置的支持,并讲述通过发布SQLXML而增加的一些功能(见 图1)。SQL Server支持XML就意味着,我们可以更有效地更新和读取数据了;我们不再需要将XML数据转换成数据库可以理解的另一种格式,或将XML数据从数据库转换成XML。而且,可供开发人员选择的方法也更多了,就是说,他们在访问数据方面更灵活了。
对XML的宣传已经有很多了,所以重要的一点是要意识到它只是一门简单的技术。本质上,它是用来描述数据的一个标准的文件格式。从发布SQL Server 2000的最初版本以来,对XML的支持就已经是SQL Server的一部分了。SQL Server不是通过提供一个方法保存XML文件来支持XML的,而是提供了一个到关系数据的接口,使你可以在表和其它数据库对象中读写XML数据。SQL Server所固有的XML功能包括:可以通过HTTP、模板查询、FOR XML子句和OPENXML()函数来访问SQL Server。接下来,我将讲述这些功能是如何运作的,以及它们可以如何使你的企业受益。

要通过HTTP访问一个SQL Server数据库,你必须首先设置一个虚拟目录。这个虚拟目录在HTTP协议和一个特定的数据库之间提供了一个链接。设置虚拟目录时,我们需要用“Configure SQL XML Support In IIS”菜单条目,你可以在Window的Start菜单中的SQL Server菜单条目找到该项。通过该菜单条目,你就可以指定虚拟目录的名称、物理路径、服务器名称、数据库名称和注册信息。一旦你创建了一个虚拟目录,你就可以通过一个URL将查询发送到数据库了。如果你设置了一个叫做Northwind的虚拟目录,并在浏览器中输入了查询http://localhost/Northwind?sql=SELECT+*+FROM+Shippers+FOR+XML+AUTO,ELEMENTS+&root=Shippers,它就会返回类似于“XML 101”工具条中的Shippers例子中的XML数据。与运用ADO或其它任何技术相比,HTTP查询会让我们更容易地来访问网站或Web应用程序的数据。
对于一个简单的查询语句来说,HTTP查询会很好,但对于一个更复杂的查询来说,这种格式就会变得难以理解并很难管理了。这种方法也不安全,因为查询源代码是暴露给用户的。另外一种可选方法是在HTTP上调用一个模板查询。一个模板查询就是一个包含SQL查询的XML文件。模板作为文件保存在服务器上。因此,如果你在一个叫做GetShippers.xml的模板中封装了Shippers SELECT查询,那么URL查询的形式就会是:http://localhost/Northwind/templates/GetShippers.xml。模板也可以带有参数,当你的模板调用一个存储过程时,该功能会很有用。在URL查询和模板查询中,如果你想从查询返回一个HTML页面,那么你可以指定一个XSLT样式表,将它用于XML。模板查询是读取数据的一个更安全的方法,它可以被缓存以得到更好的性能。
你也可以用FOR XML子句将数据读取成XML格式,该方法从SQL Server表中返回数据,你可以把它们看做是XML数据。你可以在一个SELECT语句中运用FOR XML子句,它有三种模式可以以不同的格式来返回XML:RAW、AUTO和EXPLICIT。RAW模式将结果中的每个记录作为一个普通的行元素来返回,它被包含在一个
OPENXML函数可以让你像操作一个表那样来运用XML数据,可以将它们转换成内存中的一个rowset。要运用OPENXML,首先要调用sp_xml_preparedocument存储过程,实际上,它将XML解析成一个数据树,并将那个数据的句柄传递到OPENXML函数。然后你就可以操作那个数据了:进行查询、将它插入到表中、等等。OPENXML函数可以带有三个参数:用于XML文档内部显示的句柄、一个rowpattern参数和一个flags参数。Rowpattern参数指定了应该返回原始的XML文档中的哪些节点。Flags参数指定了以属性为中心的映射(结果集中列名符合属性名)或以元素为中心的映射(结果集中列名符合元素名)。在处理完XML数据后,我们可以调用sp_xml_removedocument将XML数据从内存中删除。
通过SQLXML得到更多的支持
通过发布SQLXML(也被称为Web版),Microsoft也在SQL Server中提供了更多的XML支持。已经有三个SQLXML的版本了,它们包含的一些额外的功能有updategram和XML Bulk Load。你可以在线下载最新的版本SQLXML 3.0(见资源)。你可以通过基于XML的模板,运用updategram来插入、更新或删除表中的数据。该模板有一个before block,它描述了记录更新前的当前状态;还有一个after block,它描述了记录的变化。下面就是updategram的一个例子,它修改了Shippers表中的一个公司的Phone字段:
<updg:before>
<Shippers ShipperID=”3″ />
</updg:before>
<updg:after>
<Shippers Phone=”(503) 555-0108″ />
</updg:after>
</updg:sync>
在缺省情况下,updategrams认为before block和after block中的字段指的是表和列。但updategrams也可以用一个mapping schema。Mapping schema将一个XML文档中的元素与一个表中的元素关联了起来。如果在上面的模板中,你引用属性名SID,而不是ShipperID,那么mapping schema就会将SID映射到ShipperID列。你可以通过HTTP(同模板查询一样)或通过ADO将updategrams发送到SQL Server。它们也可以被参数化,带有输入值。Updategrams提供了一个方法,使我们可以直接从XML更新SQL Server数据,这样就不用从XML文档得到数据,然后再用一个记录集或调用一个存储过程了。Updategrams只是可以简单地插入、更新或删除数据,所以如果你需要查看一个值是否存在、或在更新前查看一些商业规则,那么你就应该用OPENXML。
虽然你可以用OPENXML函数和updategrams来插入数据,但对于加载大量的XML数据来说,这两种方法都不实用。你应该用XML Bulk Load将大量的XML数据插入到SQL Server表中。实际上,我们是用SQLXMLBulkLoad组件来加载数据的,你可以从一个客户端应用程序来调用这个组件。在建立到数据库的连接后,bulk load组件需要一个路径来访问mapping schema,从而将XML属性和元素映射到数据库对象,而且还需要路径来访问一个XML文档或一个XML流。在Bulk Load组件中,你可以指定是否执行数据表检查约束(check constraint)、是否忽略通过复制键添加的记录、当插入数据时,是否应该锁定数据表,等等。
缺省情况下,大量加载不是事务处理型(transactional)的,所以如果出现错误,截止到错误点前插入的数据就会保留在数据库中。你可以指定所有加载的数据都是在一个单独的事务处理过程中的,因此该过程要么会十分成功,要么会回滚。如果你用了事务处理,所有的数据在插入前都会被写进一个临时的文件。这就意味着,你需要足够的磁盘空间来保存临时文件,而且加载数据可能会相当慢。XML Bulk Load给我们提供了一个很好的方法,使我们可以将大量的数据写到SQL Server中;否则,你就必须提取数据,然后用另外的方法将它加载到你的数据库中。
你也可以配置SQL Server来缓存XSLT样式表、模板和mapping schema,从而得到更好的性能。根据具体实现情况,你可以在Web应用程序中用通过HTTP和XSLT的XML查询来替代标准的ASP/ADO数据访问,从而得到HTML输出结果,这种方法可以极大地提高性能。
以上就是SQL Server对XML的一些高级支持。不管我们对它的宣传有多少,XML的功能就这么多了。因为XML是用来显示数据的一个标准,也是用于.NET的数据传输技术,因此,XML与SQL Server的集成能力就会是企业需要解决的一个重要的问题。在缺省情况下,updategrams认为before block和after block中的字段指的是表和列。但updategrams也可以用一个mapping schema。Mapping schema将一个XML文档中的元素与一个表中的元素关联了起来。如果在上面的模板中,你引用属性名SID,而不是ShipperID,那么mapping schema就会将SID映射到ShipperID列。你可以通过HTTP(同模板查询一样)或通过ADO将updategrams发送到SQL Server。它们也可以被参数化,带有输入值。Updategrams提供了一个方法,使我们可以直接从XML更新SQL Server数据,这样就不用从XML文档得到数据,然后再用一个记录集或调用一个存储过程了。Updategrams只是可以简单地插入、更新或删除数据,所以如果你需要查看一个值是否存在、或在更新前查看一些商业规则,那么你就应该用OPENXML。
虽然你可以用OPENXML函数和updategrams来插入数据,但对于加载大量的XML数据来说,这两种方法都不实用。你应该用XML Bulk Load将大量的XML数据插入到SQL Server表中。实际上,我们是用SQLXMLBulkLoad组件来加载数据的,你可以从一个客户端应用程序来调用这个组件。在建立到数据库的连接后,bulk load组件需要一个路径来访问mapping schema,从而将XML属性和元素映射到数据库对象,而且还需要路径来访问一个XML文档或一个XML流。在Bulk Load组件中,你可以指定是否执行数据表检查约束(check constraint)、是否忽略通过复制键添加的记录、当插入数据时,是否应该锁定数据表,等等。
缺省情况下,大量加载不是事务处理型(transactional)的,所以如果出现错误,截止到错误点前插入的数据就会保留在数据库中。你可以指定所有加载的数据都是在一个单独的事务处理过程中的,因此该过程要么会十分成功,要么会回滚。如果你用了事务处理,所有的数据在插入前都会被写进一个临时的文件。这就意味着,你需要足够的磁盘空间来保存临时文件,而且加载数据可能会相当慢。XML Bulk Load给我们提供了一个很好的方法,使我们可以将大量的数据写到SQL Server中;否则,你就必须提取数据,然后用另外的方法将它加载到你的数据库中。
你也可以配置SQL Server来缓存XSLT样式表、模板和mapping schema,从而得到更好的性能。根据具体实现情况,你可以在Web应用程序中用通过HTTP和XSLT的XML查询来替代标准的ASP/ADO数据访问,从而得到HTML输出结果,这种方法可以极大地提高性能。
以上就是SQL Server对XML的一些高级支持。不管我们对它的宣传有多少,XML的功能就这么多了。因为XML是用来显示数据的一个标准,也是用于.NET的数据传输技术,因此,XML与SQL Server的集成能力就会是企业需要解决的一个重要的问题。
转自 TechTarget
还剩5个邀请名额,需要的请回复
1.first name
2,last name
3,your email address
please…….


