数据库sql挂起

sql挂起  时间:2021-04-05  阅读:()

SQLServer数据库经典译丛SQLServer2012管理高级教程(第2版)[美]AdamJorgensenStevenWortRossLoForteBrianKnight著宋沄剑曹仰杰译北京AdamJorgensen,StevenWort,RossLoForte,BrianKnightProfessionalMicrosoftSQLServer2012AdministrationEISBN:978-1-118-10688-4Copyright2012byJohnWiley&Sons.
Inc.
,Indianapolis,IndianaAllRightsReserved.
Thistranslationpublishedunderlicense.
本书中文简体字版由WileyPublishing,Inc.
授权清华大学出版社出版.
未经出版者书面许可,不得以任何方式复制或抄袭本书内容.
北京市版权局著作权合同登记号图字:01-2013-0282CopiesofthisbooksoldwithoutaWileyStickeronthecoverareunauthorizedandillegal.
本书封面贴有Wiley公司防伪标签,无标签者不得销售.
版权所有,侵权必究.
侵权举报电话:010-6278298913701121933图书在版编目(CIP)数据SQLServer2012管理高级教程/(美)乔根森(Jorgensen,A.
)等著;宋沄剑,曹仰杰译.
—2版—北京:清华大学出版社,2013.
9(SQLServer数据库经典译丛)书名原文:ProfessionalMicrosoftSQLServer2012AdministrationISBN978-7-302-32927-5Ⅰ.
①S…Ⅱ.
①乔…②宋…③曹…Ⅲ.
①关系数据库系统Ⅳ.
①TP311.
138中国版本图书馆CIP数据核字(2013)第145623号责任编辑:王军李维杰装帧设计:牛艳敏责任校对:成凤进责任印制:出版发行:清华大学出版社网址:http://www.
tup.
com.
cn,http://www.
wqbook.
com地址:北京清华大学学研大厦A座邮编:100084社总机:010-62770175邮购:010-62786544投稿与读者服务:010-62776969,c-service@tup.
tsinghua.
edu.
cn质量反馈:010-62772015,zhiliang@tup.
tsinghua.
edu.
cn印刷者:装订者:经销:全国新华书店开本:185mm*260mm印张:48.
25字数:1234千字版次:2011年2月第1版2013年9月第2版印次:2013年9月第1次印刷印数:1~3000定价:118.
00元产品编号:作者简介AdamJorgensen(http://www.
adamjorgensen.
com)是PragmaticWorksConsulting公司的总裁,SQLServer专业协会(ProfessionalAssociationofSQLServer,PASS)的理事,也是一位享有盛名的演讲人、作家和执行导师.
他关注于帮助公司发挥最大潜力,以他们原本没有想过的方式使用数据.
对于SQLServer社区,Adam做了很多贡献.
他是PASS的理事,并且每年举办超过75场社区会议.
他生活在佛罗里达州的Jacksonville.
Adam已经独自撰写或参与撰写了5本关于SQLServer、分析和SharePoint的图书.
StevenWort从1993年就开始使用SQLServer,当时使用的是运行在OS2上的4.
2版本.
他有超过30年的应用程序开发经验,曾在多个行业工作过.
在2000年,Steven加入了微软,担任SystemsIntegrationEngineering(SIE)团队的专家级工程师,并与人合办了多个关于Windows和.
NET调试的学习班.
在2004年,他转到SQLServer产品小组研究SQLServer2005的可扩展性.
之后他转到Windows部门,负责扩展大型数据系统.
现在,Steven回到了SQLServer产品部门,担任SQLServerApplianceEngineeringTeam的首席工程师,负责MicrosoftDatabaseConsolidationAppliance.
Steven参与撰写了几本关于SQLServer管理、故障排除和性能调整的图书.
RossLoForte是MicrosoftTechnologyCenterChicago的技术架构师,主要致力于MicrosoftSQLServer解决方案.
Ross有20年以上从事业务开发、项目管理以及设计SQL解决方案的经验.
过去11年里,Ross在MicrosoftTechnologyCenter工作,为微软最大的战略性客户设计企业级的关键任务SQLServer解决方案.
Ross在芝加哥DePaul大学讲授SQLServer,还经常在TechEd、SQLPASS、Gartner、TDWI及Microsoft内部会议上演讲.
Ross也是SQLServer专业协会、芝加哥SQLServer用户组及其他SQLServer社区的积极参与者.
BrianKnight(SQLServerMVP、MCITP、MCSE、MCDBA)是PragmaticWorksConsulting公司的创始人,也是BIDN.
com、SQLServerCentral.
com和SQLshare.
com的共同创始人之一.
他管理着位于佛罗里达州Jacksonville的本地SQLServer用户组(JSSUG).
Brian是多本技术杂志的专栏作家,并经常在JumpstartTV上发表Web讲座.
他共撰写了12本SQLServer相关的书籍.
Brian参加过许多会议,如PASS、SQLConnections、TechEd、SQLSundays以及众多CodeCamp.
可以在http://www.
bidn.
com找到他的博客.
Brian居住在佛罗里达州的Jacksonville.
RobertC.
Cain(http://arcanecode.
com)是MicrosoftSQLServerMVP,获得了BI方面的MCTS认证,还是PragmaticWorksConsulting公司的高级顾问.
他是PlurasightTraining的技术贡献者,并且是SQLServerMVPDeepDives(ManningPublications,2009)第1卷和第2卷的合著者.
作为一名颇受欢迎的演讲人,Robert在TechEd、SQLRally和SQLSaturdays上多次发表过演讲.
Robert在IT行业有超过25年的经验,他曾在多个领域工作过,包括制造业、电信业乃至核能工业.
SQLServer2012管理高级教程(第2版)IVDennyCherry是一名独立顾问,在使用MicrosoftSQLServer、Hyper-V、vSphere和EnterpriseStorage解决方案等平台方面有超过10年的经验.
Denny在系统架构、性能调整、安全性、复制和故障排除方面有专长.
他获得了SQLServer2000至SQLServer2008的多个Microsoft认证,包括MicrosoftCertifiedMaster,而且是连续几年的MicrosoftMVP.
针对SQLServer管理和SQLServer如何与其他多种技术整合到一起,Denny撰写了多本图书和几十篇技术文章.
JoseChinchilla(http://sqljoe.
com)是Microsoft认证的SQLServer数据库管理员和商业智能专家,在信息技术领域有超过12年的经验.
Jose成功地为零售业、制造业、金融业、医疗业、非营利组织以及政府部门架构并开发了数据仓库和商业智能解决方案.
Jose是AgileBay公司的总裁(http://agilebay.
com),这是位于佛罗里达州Tampa的一家提供全面咨询服务的公司.
Hose经常在SQLSaturday和各地的CodeCamp发表演讲.
他也是TampaBayBusinessIntelligence用户组和PASS分会的主席.
Jose是一名积极的网民和博客作者,在社交媒体中很活跃,他的Twitter用户名是@SQLJoe.
AudreyHammonds是一名数据库开发人员、博客作者、演示者和作者.
15年前,她志愿加入一个新成立的数据库小组,目的是不再编写COBOL程序(从那以后她再也没写过COBOL程序).
Andrey确信,如果人们能够停下脚步放松一下,享受眼前的风景,规范化他们的数据,世界会变得更好.
她是Jeremy的妻子,Chase和Gavin的妈妈,并且还养了三只猫——Bela、Elmindreda和Aviendha.
她居住在佐治亚州亚特兰大市,她的博客地址是http://datachix.
com.
ScottKlein把自己对SQLServer的热爱带到了Microsoft.
他不久前加入了Microsfot公司,成为一名SQLAzure技术推广者.
在加入Microsoft之前,Scott是BlueSyntax的合作创始人,这是一家提供Azure咨询和服务的公司.
Scott有深厚的SQLServer背景,从SQLServer4.
2开始,他在过去的20多年里一直使用SQLServer.
但是在知道Azure平台后,他的精力转移到了SQLAzure和Azure平台.
他在美国和加拿大的20多个AzureBootCamp上发表过演讲.
Scott没有忘记自己来自南佛罗里达,他管理着SouthFloridaSQLSaturday和SouthFloridaSQLServer用户组.
Scott还撰写了其他几本Wrox图书,包括ProfessionalSQLServer2005XML(JohnWiley&Sons,2006)和ProfessionalLINQ(JohnWiley&Sons,2008),最近他还出版了ProSQLAzure(Apress,2010).
他还为其他几本书写过几个章节,并为MSDN杂志写过一些文章.
Scott有个很出色的妻子,4个很可爱的孩子.
JorgeSegarra原本是一名DBA,现在是位于佛罗里达州Jacksonville的PragmaticWorksConsulting公司的BI顾问.
他是一名SQLServerMVP、博客作者(地址为www.
sqlchicken.
com)、PASS志愿者和RegionalMentor,并且是网上社区博客项目SQLUniversity(www.
sqluniversity.
org)的发起人.
GarethSwanepoel(http://mygareth.
com)原本是一名系统管理员,后来改行为SQLServerDBA.
他在IT业做支持和管理工作超过20年了.
他喜欢解决客户在数据仓库环境中部署SQLServer时遇到的复杂问题.
他来自南非,现在和他美丽的妻子、5岁的儿子和即将出生的女儿一起居住在佛罗里达州Jacksonville宁静的郊区.
技术编辑简介JasonStrate来自Digineer公司.
他是一名拥有超过15年经验的数据库顾问.
具体来说,他的经验包括设计和实现OLTP和OLAP解决方案,以及评估和实现SQLServer环境以遵循最佳实践、实现高性能和得到高可用的解决方案.
他从2009年7月开始,就是MicrosoftSQLServerMVP.
Jason是一名SQLServerMCITP,并参与设计SQLServer2008和2012认证考试.
DennyCherry是一名独立顾问,在使用MicrosoftSQLServer、Hyper-V、vSphere和EnterpriseStorage解决方案等平台方面有超过10年的经验.
Denny在系统架构、性能调整、安全性、复制和故障排除方面有专长.
他获得了SQLServer2000至SQLServer2008的多个Microsoft认证,包括MicrosoftCertifiedMaster,而且是连续几年的MicrosoftMVP.
针对SQLServer管理和SQLServer如何与其他多种技术整合到一起,Denny撰写了多本图书和几十篇技术文章.
致谢感谢家人和未婚妻Cristina在我写作这本书的过程中给予的支持.
我也要为这个卓越的作者和技术编辑团队鼓掌致敬!
从本书的作者简介和技术编辑简介中,你可以知道这些人是多么出色!
特别要感谢BradSchacht,他的帮助对于完成本书中的一些章节至关重要.
感谢我的两只小狗Ladybird和Mac,冬天我在院里写作的时候,是它们让我的脚保持温暖(即使在佛罗里达,冬天也有些冷).
还要特别感谢BrianKnight和BobElliot把我拉到这个疯狂的写作比赛中.
感谢Wrox团队让我们没有偏离航向,让这本书最终得以问世.
你们对我和整个写作团队的支持是最重要的!
——AdamJorgensen感谢妻子Anna和女儿Jennifer在我写作这本书的过程中支持和照顾我.
还要感谢MicrosoftTechnologyCenter的员工(包括主管AdamHecktman)的支持,他们使MicrosoftTechnologyCenterChicago成为一个适合学习和工作的地方.
另外,最重要的是要感谢SQLServer开发小组奉献了又一个功能丰富的版本:SQLServer2012.
最后,感谢技术编辑JasonStrate和Wiley的一些工作人员,包括VictoriaSwider和RobertElliott,他们帮助这本书出版,让读者能够分享我对SQLServer的热爱.
——RossLoForte感谢每个为本书出版作出贡献的人.
我亏欠妻子Jenn和孩子Colton、Liam、Camille以及新出生的儿子John很多.
Jenn总是忍受着我熬夜到很晚,而孩子们也对他们疲倦而繁忙的父亲保持着耐心.
还要感谢吉尼斯黑啤酒和其他一些烈酒的酿造商,有了这些酒,我才能维持写技术图书的精力.
感谢所有努力帮助其他人掌握技术的用户组领跑者.
你们对技术的发展做出了很重要的贡献!
最后,感谢声乐教练MikeDavis帮助我为这一季的美国偶像海选做好准备.
这一次我不会让你失望!
——BrianKnight首先,也是最重要的,我要感谢我可爱的妻子Ammie.
没有她的耐心和支持,我是什么也做不成的.
我还要感谢我的女儿Raven和Anna,谢谢你们容忍我如此繁忙,而且经常熬夜.
我不会健忘到忽视我在PragmaticWorks和Pluralsight的同事们对我的帮助.
和这么多的技术专家们工作对我不只是一种挑战,更促使我不断地让自己在技术上取得越来越高的成就.
最后,我需要感谢SQL社区的所有人.
谢谢你们阅读我的博客和图书,并在现场或者通过视频听我演讲.
是你们给了我不断学习、讲解和分享知识的热情.
——RobertC.
CainSQLServer2012管理高级教程(第2版)VIII为了准备这本书中介绍的内容,我付出了大量的时间和精力.
如果没有妻子和两个女儿的支持,没有她们对我无条件的爱和理解我对专业技术的追求,我是不可能付出这样的努力的.
我还要特别感谢AdamJorgensen(http://adamjorgensen.
com)让我有机会为这本书贡献一己之力,以及我的好朋友NicholasCain(http://sirsql.
net),他为本书关于SQLServer群集的章节贡献了自己的专业知识.
——JoseChinchilla感谢AdamJorgensen邀请我参与这本书的创作,感谢技术编辑JasonStrate改进我的工作,感谢WileyPublishing的好人们有足够的耐心和毅力让我们走在正确的路上.
特别要感谢我的家人们:Jeremy、Chase和Gavin.
他们在我忙于工作的时候保持一切井井有条.
感谢我在Datachix的同事JulieSmith,谢谢你陪我海阔天空地聊天、给我打气还有一块喝葡萄酒.
感谢SQL社区,谢谢你们这么出色,特别是我在亚特兰大的朋友们……你们是最棒的.
最后,感谢我的外祖父BruceBryant,他教会了我学无止境这个道理.
——AudreyHammonds首先,我要感谢我的妻子Jessica,她的爱、理解和支持让我有能力完成写书这样的工作.
感谢AdamJorgensen和BrianKnight让我有机会参与这本书的写作.
谢谢你们的支持和指导.
感谢本书的编辑VictoriaSwider和BobElliot,抱歉给你们带来了不小的压力!
最后,特别感谢整个SQLServer社区.
这个社区就像个大家庭一样,没有每个人的彼此支持和分享知识,我不会成为今天这个样子.
——JorgeSegarra感谢主耶稣基督给了我这样的才能,让我有机会参与这本书的创作.
感谢我可爱的妻子Jen忍受着我的固执.
感谢我的小儿子在我忙于及时完成工作时能够不需要爸爸陪着.
感谢我在非洲的家人们让我来到希望之乡追逐梦想.
妈妈、爸爸、Bernie、Kirsty和Tessie,这本书献给你们!
——GarethSwanepoel译者序SQLServer2012自2012年3月发布以来,已经毋庸置疑成为数据库领域最有竞争力的产品之一.
去年冬天我在西雅图参加微软数据库产品反馈和ProfessionalAssociationforSQLServer(PASS)峰会时,见识到了很多基于SQLServer和云端的大型解决方案,也见识了欧美SQLServer社区和生态环境有着让人震惊的强大.
在PASS峰会期间,我有幸在Wrox出版社的活动中获得本书作为奖品,翻看此书时就已经惊叹本书的广度和深度.
回国后,机缘巧合认识的清华大学出版社的李阳老师希望找业内的专业人士翻译此书的最新章节,我欣然接受.
本书由多位业内知名的专家共同撰写,几乎涵盖到了SQLServer管理领域的方方面面.
本书不仅仅是StepbyStep地教会你如何去做,而且还会对背后的原理进行剖析以便你更加深刻地理解SQLServer的内核和工作机理.
由于书中的内容是最新的,并且有着足够的深度和广度,甚至有些内容在微软的BookOnline上也没有对应的中文资料;因此在翻译的过程中,让自诩为SQLServer专家的我也颇为汗颜,深刻感受到自己知识的不完整.
我在翻译过程中查阅了大量资料,力求翻译精益求精.
至于本书中对原理的剖析部分,我推荐所有读者反复阅读,只有做到对深层次机理的理解,才能在管理和调优时游刃有余.
在这里我要感谢我的母亲在行文方面给予的指导,还要感谢清华大学出版社的李阳和李维杰编辑给我的莫大帮助,正因为有你们的严谨和专业,才能保证本书的高质量.
SQLServerMVP宋沄剑于北京前言对于数据库管理员(DBA)、开发人员以及商业智能(BI)开发人员来说,SQLServer2012在可扩展性、性能以及可用性方面有了很大的进步.
在SQLServer上运行40TB数据库并不新鲜.
以前,管理SQLServer只是DBA的工作,但随着SQLServer在众多小型公司的不断应用,许多开发人员也开始担任管理员和BI开发人员角色.
另外,SQLServer新增的一些功能更以开发人员为中心,如果没有正确配置这些功能,就将导致性能低下.
如今,SQLServer对数据工具、安全性和数据集成做了显著改进,简化了每个人的工作.
本书是一本指导性的综合图书,可以帮助读者轻松地学习配置和管理SQLServer2012.
本书读者对象不管您是SQLServer管理员还是开发人员,都需要在某个时候承担DBA职责.
开发人员经常需要在其工作站中安装SQLServer,并向管理员提供有关如何配置SQLServer生产服务器的指导.
通常,他们负责创建数据库表和索引.
负责支持生产服务器的管理员通常继承开发人员的数据库.
本书主要面向开发人员、DBA以及希望管理或正在管理SQLServer2012系统及其商业智能功能(如IntegrationServices)的用户.
这是一本专业书籍,意味着读者要具备有关如何查询SQLServer的基本知识并掌握一些SQLServer基本概念.
例如,本书不会逐步演示如何创建数据库或通过向导安装SQLServer,但会介绍一些更高级的安装概念.
尽管本书不介绍如何查询SQLServer数据库,但将讨论如何调整现有查询.
本书结构本书采用上一版的基本结构,但是有一点主要改变:我们选择在各个领域中最出色的人组成本书的作者团队,让他们只撰写自己最擅长的地方.
读者经常可以在各个主流会议上看到他们提供顶级的服务,例如性能调整、商业智能、数据库设计、高可用性、PowerShell甚至SQLAzure!
这种方法让我们得以更加专注于本书的高质量,而且由于能够更好地与Microsoft内部人士进行交流,本书的内容也更加准确.
本书的作者团队为了能够为读者提供最高质量的内容,通过Connect发表了数百个问题并最终确定了准确的答案.
Connect是业界专家和SQLSeverMVP发布bug报告以及对Microsoft提议要添加的新功能进行投票的主要方法.
这是改进产品的一个好地方.
本书仍然涵盖了上一版的所有精彩内容,同时添加了大量关于SQLServer2012的新内容,帮助DBA利用SQLServer2012的许多新功能简化工作.
简言之,SQLServer2012更加关注于提高效率、服务器的扩展性以及环境的性能,使用户在投入更少的时间、资源和人力的同时,SQLServer2012管理高级教程(第2版)X完成更多的任务.
下面简要介绍各章的内容.
第1章:SQLServer2012体系结构——本书首先介绍SQLServer2012在体系结构上的变化,并重点介绍SQLServer2012的主要组件.
第2章:SQLServer2012安装最佳实践——本章介绍安装SQLServer2012的不同方式,以及安装过程的最佳实践.
第3章:升级到SQLServer2012的最佳实践——本章介绍如何升级到SQLServer2012以及在升级时应该遵循的最佳实践.
还介绍了如何选择最佳升级方法,以及升级的需求和优势.
第4章:数据库引擎管理与故障排除——本章重点介绍数据库引擎,以及在发生问题时如何解决它们.
还介绍了数据库引擎的管理以及在解决问题时可以使用的工具.
第5章:自动化SQLServer——本章介绍SQLServer2012中的自动化功能,包括作业、PowerShell和其他一些自动化方法.
第6章:SQLServer2012中的ServiceBroker——ServerBroker是处理数据库内的消息传递的出色工具.
本章介绍ServiceBroker的安装、操作和管理.
第7章:SQLServer中的CLR集成——在CLR中可以结合使用SQLServer和.
NET.
本章介绍如何将.
NET、CLR和SQLServer集成起来,包括使用程序集和其他选项.
第8章:保护数据库实例——安全性对于数据库引擎至关重要.
本章帮助你写出以及实现自己的安全计划.
第9章:变更管理——变更的管理对于稳定地运行数据库十分重要.
本章介绍SQLServer中支持变更管理的功能.
第10章:配置服务器来调整性能——正确地配置服务器对于让应用程序和数据库的性能达到最优很重要.
本章介绍对于系统性能很关键的存储选项、服务器选项和其他一些设置.
第11章:优化SQLServer2012——本章介绍的内容可帮助读者查看和分析性能.
还介绍了可以提高SQLServer性能的配置选项.
第12章:监控SQLServer——监控SQLServer对于确保实现自己想要的性能水平很关键.
本章介绍应该监控SQLServer2012的哪些地方以及可以使用哪些工具.
第13章:T-SQL性能调整——编写有效且高效的T-SQL对于获得良好的应用程序性能和可扩展性很重要.
本章介绍如何调整T-SQL以使其更加高效,还介绍了SQLServer引擎和内部机制如何读取和执行用户的查询,然后介绍了在什么地方可以调整这个查询,以及可以遵循哪些最佳实践.
第14章:创建数据库索引——索引对于获得良好的数据库性能很关键.
本章讨论为数据库创建高效索引时需要考虑的事项以及可以采取的策略.
第15章:复制——复制是SQLServer中保持表和数据库同步以及支持应用程序的关键功能.
本章介绍复制的类型,如何设置复制,以及每种方法的优缺点.
第16章:SQLServer2012群集——SQLServer2012对群集再次做了改进.
本章介绍群集配置的建立、配置和测试.
第17章:备份与恢复——备份与恢复对于成功地实现连续运行计划以及获得良好运行效果很关键.
本章介绍SQLServer中的备份与恢复选项,并就如何充分利用这些功能给出了一些建议.
第18章:SQLServer2012日志传送——本章介绍日志传送的建立、配置和管理.
前言XI第19章:数据库镜像——SQLServer2012中的可用性功能比以往任何版本都多.
本章介绍使组织内的系统保持联机的新功能和原有功能.
第20章:IntegrationServices管理和性能调整——集成是确保系统同步的关键.
本章介绍SQLServer中这项功能的管理和调整.
第21章:AnalysisServices管理和性能调整——AnalysisServices是首选的联机分析处理(OnlineAnalyticalProcessing,OLAP)产品,数据库管理员一定不能忽视.
本章介绍这项功能的管理与调整.
第22章:SQLServerReportingServices管理——ReportingServices通常由DBA管理.
本章帮助读者解决使用ReportingServices时面临的挑战,无论读者的角色是什么,都可以掌握这项功能的使用.
第23章:SQLServer2012与SharePoint2010集成——在SQLServer2012中,SharePoint占据的部分比以前的版本更大.
本章介绍SharePoint2012与SQLServer是如何集成的,了解这项知识后,读者就可以更好地与SharePoint团队交流,甚至自己承担一些SharePoint数据库管理责任.
第24章:SQLAzure的管理和配置——本章介绍SQLServerAzure,帮助读者掌握这个令人兴奋的新生云端平台.
第25章:AlwaysOn可用性组——本章介绍AlwaysOn可用性组.
使用这些可用性组可以将多个实例和服务器当作组来进行控制以及分配优先级,以灵活地控制故障转移和高可用性在自己的环境中是如何处理的.
软硬件要求为了实践本书中的示例,读者需要安装SQLServer2012.
如果要学习如何管理商业智能功能,还需要安装AnalysisServices和IntegrationServices组件.
读者需要一台满足SQLServer2012最低硬件需求的计算机,还可能需要安装AdventureWorks和AdventureWorksDW数据库.
访问这些数据库的指导参见本书配套网站上的ReadMe文件.
本书介绍的一些功能(特别是高可用性功能部分)需要SQLServer企业版或开发版.
如果读者没有这些版本,那么可以使用标准版完成本书章节中的部分示例.
源代码在读者学习本书中的示例时,可以手动输入所有的代码,也可以使用本书附带的源代码文件.
本书使用的所有源代码都可以从本书合作站点http://www.
wrox.
com或www.
tupwk.
com.
cn/downpage上下载.
登录到站点http://www.
wrox.
com,使用Search工具或书名列表就可以找到本书.
接着单击本书细目页面上的DownloadCode链接,就可以获得所有的源代码.
由于许多图书的标题都很类似,因此按ISBN搜索是最简单的,本书英文版的ISBN是978-1-118-10688-4.
SQLServer2012管理高级教程(第2版)XII在下载了代码后,只需要用自己喜欢的解压缩软件对它进行解压缩即可.
另外,也可以进入http://www.
wrox.
com/dynamic/books/download.
aspx上的Wrox代码下载主页,查看本书和其他Wrox图书的所有代码.
勘误表尽管我们已经尽了各种努力来保证文章或代码中不出现错误,但是错误总是难免的,如果您在本书中找到了错误,例如拼写错误或代码错误,请告诉我们,我们将非常感激.
通过勘误表,可以让其他读者避免受挫.
当然,这还有助于提供更高质量的信息.
请给wkservice@vip.
163.
com发电子邮件,我们就会检查您的信息,如果是正确的,我们将在本书的后续版本中采用.
要在网站上找到本书的勘误表,可以登录http://www.
wrox.
com,通过Search工具或书名列表查找本书,然后在本书的细目页面上,单击BookErrata链接.
在这个页面上可以查看到Wrox编辑已提交和粘贴的所有勘误项.
完整的图书列表还包括每本书的勘误表,网址是www.
wrox.
com/misc-pages/booklist.
shtml.
P2P.
WROX.
COM要与作者和同行讨论,请加入p2p.
wrox.
com上的P2P论坛.
这个论坛是一个基于Web的系统,便于您张贴与Wrox图书相关的消息和相关技术,与其他读者和技术用户交流心得.
该论坛提供了订阅功能,当论坛上有新的消息时,它可以给您传送感兴趣的话题.
Wrox作者、编辑和其他业界专家和读者都会到这个论坛上来探讨问题.
在http://p2p.
wrox.
com上,有许多不同的论坛,它们不仅有助于阅读本书,还有助于开发自己的应用程序.
要加入论坛,可以遵循下面的步骤:(1)进入p2p.
wrox.
com,单击Register链接.
(2)阅读使用协议,并单击Agree.
(3)填写加入该论坛所需要的信息和自己希望提供的其他信息,单击Submit.
(4)您会收到一封电子邮件,其中的信息描述了如何验证账户,完成加入过程.
加入论坛后,就可以张贴新消息,响应其他用户张贴的消息.
可以随时在Web上阅读消息.
如果要让该网站给自己发送特定论坛中的消息,可以单击论坛列表中该论坛名旁边的SubscribetothisForum图标.
关于使用WroxP2P的更多信息,可阅读P2PFAQ,了解论坛软件的工作情况以及P2P和Wrox图书的许多常见问题.
要阅读FAQ,可以在任意P2P页面上单击FAQ链接.
不加入P2P也可以阅读论坛上的消息,但要张贴自己的消息,就必须加入该论坛.
目录第1章SQLServer2012体系结构11.
1SQLServer2012生态系统.
11.
2SQLServer2012的重要新增功能.
21.
2.
1生产DBA.
21.
2.
2开发DBA.
21.
2.
3商业智能DBA和开发人员31.
3SQLServer体系结构.
31.
3.
1数据库文件和事务日志.
41.
3.
2SQLNativeClient.
41.
3.
3标准系统数据库.
51.
3.
4架构.
71.
3.
5同义词.
71.
3.
6动态管理对象.
81.
3.
7SQLServer2012数据类型.
91.
4SQLServer版本.
141.
4.
1版本概览141.
4.
2许可.
161.
5小结.
17第2章SQLServer2012安装最佳实践.
192.
1规划系统.
192.
1.
1硬件选择202.
1.
2软件和安装选择.
242.
2安装SQLServer.
262.
2.
1全新安装262.
2.
2并列安装262.
2.
3升级安装262.
2.
4自动安装262.
2.
5手动安装322.
3安装AnalysisServices352.
3.
1多维和数据挖掘模式(UDM模式)362.
3.
2表格模式.
362.
4安装PowerPivotforSharePoint.
.
.
.
.
372.
5系统压力测试.
382.
6安装后的配置.
392.
6.
1配置SQLServer设置以实现高性能.
392.
6.
2tempdb.
402.
6.
3针对安全配置SQLServer设置.
412.
6.
4BestPracticesAnalyzer(BPA)432.
6.
5SQLServer配置管理器432.
6.
6备份.
432.
7卸载SQLServer.
432.
7.
1卸载ReportingServices.
442.
7.
2卸载AnalysisServices.
442.
7.
3卸载SQLServer数据库引擎.
.
.
.
.
442.
8故障排除失败安装.
442.
9小结45第3章升级到SQLServer2012的最佳实践.
473.
1升级到SQLServer2012的原因.
.
.
.
.
473.
1.
1减少风险——微软的贡献.
483.
1.
2独立软件厂商和SQL社区的贡献.
483.
2升级到SQLServer2012.
483.
2.
1本地升级.
493.
2.
2并列升级.
503.
2.
3本地升级与并列升级的考虑事项.
513.
3升级前的操作步骤和可用工具.
.
.
.
.
51SQLServer2012管理高级教程(第2版)XIV3.
3.
1升级前的步骤.
513.
3.
2升级前的工具.
523.
4向后兼容性.
583.
4.
1SQLServer2012中不支持和未延续的功能.
593.
4.
2SQLServer2012弃用的数据库功能.
593.
4.
3SQLServer2012中其他影响行为的变化.
593.
5SQLServer组件的考虑事项.
603.
5.
1升级全文目录.
603.
5.
2升级ReportingServices.
603.
5.
3升级到64位613.
6升级后检查.
613.
7小结.
61第4章数据库引擎管理与故障排除.
.
.
.
.
.
.
634.
1配置和管理工具.
634.
1.
1SQLServer配置管理器.
644.
1.
2启动参数654.
1.
3启动存储过程.
684.
1.
4部分包含的数据库.
704.
2故障排除工具.
714.
2.
1专用管理员连接.
714.
2.
2重建系统数据库.
724.
3ManagementStudio.
734.
3.
1报表.
734.
3.
2在ManagementStudio中配置SQLServer.
754.
3.
3筛选对象794.
3.
4错误日志804.
3.
5活动监视器804.
4在T-SQL中监控进程.
844.
4.
1sp_who和sp_who2844.
4.
2sys.
dm_exec_connections.
854.
4.
3sys.
dm_exec_sql_text.
854.
5多服务器管理.
864.
5.
1中央管理服务器和服务器组.
.
.
.
.
.
864.
5.
2SQLServer实用工具874.
6跟踪标志.
874.
7获得技术支持.
894.
7.
1SQLDumper.
exe894.
7.
2SQLDiag.
exe.
894.
8小结91第5章自动化SQLServer.
935.
1维护计划.
935.
1.
1维护计划向导945.
1.
2维护计划设计器965.
2使用SQLServer代理自动化SQLServer.
995.
2.
1作业.
995.
2.
2计划.
1035.
2.
3操作员.
1045.
2.
4警报.
1065.
3SQLServer代理安全性.
1115.
3.
1服务账户.
1115.
3.
2访问SQLServer代理1115.
3.
3SQLServer代理的代理1125.
4配置SQLServer代理.
1145.
4.
1常规属性.
1145.
4.
2高级属性.
1155.
4.
3警报系统属性1165.
4.
4作业系统属性1175.
4.
5连接属性.
1175.
4.
6历史记录属性1185.
5数据库邮件.
1185.
5.
1体系结构.
1185.
5.
2安全性.
1195.
5.
3配置.
1205.
5.
4归档.
1235.
6多服务器管理.
1235.
6.
1使用标记替换1235.
6.
2事件转发.
1265.
6.
3使用WMI.
1265.
6.
4多服务器管理——使用主服务器和目标服务器1275.
7小结129目录XV第6章SQLServer2012中的ServiceBroker.
1316.
1异步消息.
1316.
1.
1SQLServerServiceBroker概览.
1316.
1.
2SQLServerServiceBroker和其他消息队列的对比.
1326.
2配置SQLServerServiceBroker.
.
.
.
1336.
2.
1启用.
1336.
2.
2消息类型1346.
2.
3约定.
1346.
2.
4队列.
1356.
2.
5服务.
1366.
2.
6路由.
1376.
2.
7优先级.
1386.
2.
8会话组.
1396.
3使用SQLServerServiceBroker.
.
.
.
1396.
3.
1发送消息1396.
3.
2接收消息1426.
3.
3在数据库之间发送消息.
1436.
3.
4在实例间发送消息.
1436.
3.
5外部激活1456.
4小结.
146第7章SQLServer中的CLR集成.
.
.
.
.
1477.
1CLR简介.
1477.
1.
1作为.
NET运行时主机的SQLServer.
1497.
1.
2应用程序域1497.
1.
3T-SQL与CLR1497.
1.
4启用CLR集成1507.
2创建CLR程序集.
1517.
2.
1不使用VisualStudio的方式.
.
.
.
.
1517.
2.
2使用MicrosoftSQLServerDataTools.
1537.
3保护CLR.
1557.
4性能监控.
1557.
4.
1Windows系统监控器.
1557.
4.
2SQLProfiler.
1577.
4.
3DMV.
1577.
4.
4CLR集成的设计目标.
1587.
5小结158第8章保护数据库实例.
1598.
1身份验证类型.
1598.
1.
1SQL身份验证.
1598.
1.
2Windows身份验证.
1618.
1.
3SQLServer身份验证和Windows身份验证的对比.
1618.
2设定安全对象.
1618.
2.
1服务器安全对象1628.
2.
2数据库安全对象1668.
2.
3权限链.
1678.
2.
4跨数据库所有权链接.
1688.
3行级别安全.
1708.
4小结171第9章变更管理.
1739.
1创建解决方案和项目.
1739.
1.
1创建连接.
1759.
1.
2创建项目查询1759.
2基于策略的管理.
1769.
2.
1基于策略的管理概述.
1769.
2.
2基于策略的管理的步骤.
1779.
2.
3脚本化基于策略的管理.
1839.
2.
4基于策略的管理的实现方式.
.
.
.
1849.
3DDL触发器语法.
1859.
3.
1数据库触发器1869.
3.
2服务器触发器1909.
4触发器视图.
1919.
5脚本概述.
1919.
5.
1sqlcmd.
1929.
5.
2PowerShell.
1959.
6创建变更脚本.
1979.
7数据层应用程序.
1979.
7.
1SQLServerDataTools2009.
7.
2版本表.
2009.
8小结202SQLServer2012管理高级教程(第2版)XVI第10章配置服务器来调整性能.
20310.
1DBA需要了解的与性能有关的知识.
20410.
1.
1性能调整周期.
20410.
1.
2定义良好性能.
20510.
1.
3关注重点.
20510.
2开发DBA需要知道的与性能有关的知识.
20610.
2.
1用户.
20610.
2.
2SQL语句.
20610.
2.
3数据使用模式.
20710.
2.
4健壮的架构.
20710.
3生产DBA需要知道的与性能有关的知识.
20710.
3.
1优化服务器.
20810.
3.
2硬件管理.
20910.
4CPU21010.
4.
1x64.
21010.
4.
2缓存.
21010.
4.
3超线程.
21110.
4.
4多核.
21210.
4.
5系统体系结构.
21410.
5内存.
21510.
5.
1物理内存.
21510.
5.
2物理地址空间.
21510.
5.
3虚拟内存管理器.
21610.
5.
4页面文件.
21610.
5.
5页面错误.
21710.
6I/O.
21810.
6.
1网络.
21810.
6.
2磁盘.
21910.
6.
3关于存储的考虑事项22010.
6.
4设计存储系统.
22210.
6.
5大型存储系统考虑事项:SAN系统.
22610.
6.
6服务器配置.
22810.
6.
7碎片化.
23210.
7小结.
234第11章优化SQLServer201223511.
1应用程序优化.
23511.
1.
1定义工作负载.
23511.
1.
2目标是系统协调.
23611.
2I/O问题.
23611.
2.
1SQLServerI/O进程模型.
.
.
.
.
.
23711.
2.
2数据库文件的位置.
23711.
2.
3tempdb需要考虑的事项.
.
.
.
.
.
.
23811.
3表和索引分区.
24011.
3.
1分区的原因.
24111.
3.
2创建分区函数.
24211.
3.
3创建文件组.
24411.
3.
4创建分区方案.
24411.
3.
5创建表和索引.
24511.
4数据压缩24911.
4.
1行压缩.
25011.
4.
2页面压缩.
25011.
4.
3估计节省的空间.
25211.
4.
4监控数据压缩.
25311.
4.
5数据压缩需要考虑的事项.
.
.
.
25411.
5CPU考虑事项.
25411.
5.
1缓存一致性.
25511.
5.
2关联掩码.
25511.
5.
3最大并行度(MAXDOP)25711.
5.
4I/O关联掩码.
25711.
6内存考虑事项和改进.
25811.
6.
1优化SQLServer内存.
25911.
6.
2SQLServer2012的64位版本.
26211.
6.
3数据本地化.
26211.
6.
4最大服务器内存.
26311.
6.
5索引创建内存选项.
26311.
6.
6每次查询占用的最小内存.
.
.
.
26411.
7资源调控器.
26411.
7.
1资源调控器的基本组成元素.
26411.
7.
2在SQLServer2012ManagementStudio中使用资源调控器.
268目录XVII11.
7.
3监控资源调控器.
26911.
8小结270第12章监控SQLServer.
27112.
1监控的目标.
27212.
1.
1确定监控对象.
27212.
1.
2建立基准.
27212.
1.
3比较当前指标和基准27312.
2选择合适的监控工具.
27312.
3性能监视器.
27512.
3.
1CPU资源计数器.
27612.
3.
2磁盘活动.
27712.
3.
3内存使用率.
28212.
3.
4性能监控工具.
28512.
4监控事件.
28612.
4.
1默认跟踪.
28812.
4.
2system_health会话.
28912.
4.
3SQL跟踪.
28912.
4.
4事件通知.
30112.
4.
5SQLServer扩展事件.
30312.
5使用动态管理视图和函数进行监控31912.
5.
1SQLServer的运行状态.
.
.
.
.
.
.
.
32012.
5.
2查看锁定信息.
32312.
5.
3查看阻塞信息.
32312.
5.
4数据库中的索引使用率.
.
.
.
.
.
.
32412.
5.
5数据内没有使用的索引.
.
.
.
.
.
.
32512.
5.
6查看等待内存授予的查询.
.
.
.
.
32612.
5.
7已连接用户的信息.
32712.
5.
8文件组空闲空间.
32712.
5.
9当前运行的查询的查询计划和查询文本.
32812.
5.
10内存使用率.
32812.
5.
11缓冲池内存使用.
32812.
6监控日志.
32912.
6.
1监控SQLServer错误日志.
.
.
.
32912.
6.
2监控Windows事件日志.
.
.
.
.
.
33012.
7管理数据仓库.
33012.
7.
1系统数据收集组.
33112.
7.
2查看系统数据收集组收集的数据.
33112.
7.
3创建自己的数据收集组.
.
.
.
.
.
.
.
33312.
7.
4检查收集的数据.
33512.
8SQLServer标准报表.
33512.
9SystemCenterManagementPack.
33712.
10SQLServerBestPracticeAnalyzer.
33712.
11SystemCenterAdvisor.
33812.
12小结.
338第13章T-SQL性能调整34113.
1物理查询处理第一部分:编译和重新编译34113.
1.
1编译.
34213.
1.
2重新编译.
34213.
1.
3用于重新编译的工具和命令.
34913.
1.
4分析器和Algebrizer.
35113.
1.
5优化.
35213.
2物理查询处理第二部分:执行.
35613.
2.
1数据库I/O信息35713.
2.
2使用查询计划.
35813.
2.
3估计的执行计划.
35913.
2.
4实际执行计划.
36313.
2.
5索引访问方法.
36513.
2.
6碎片化.
37513.
2.
7统计信息.
37613.
2.
8连接算法.
37613.
2.
9数据修改查询计划.
37913.
2.
10针对分区表和索引的查询处理改进.
38013.
2.
11使用SQL跟踪收集查询计划以用于分析.
38213.
3小结.
383SQLServer2012管理高级教程(第2版)XVIII第14章创建数据库索引38514.
1SQLServer中与索引相关的主要功能.
38514.
1.
1SQLServer2012中新增的索引功能.
38514.
1.
2SQLServer2008R2、SQLServer2008和SQLServer2005中的索引功能.
38814.
2分区表和分区索引.
39014.
2.
1理解索引.
39014.
2.
2创建索引.
39314.
2.
3使用分区表和分区索引的原因.
39314.
2.
4创建分区表.
39414.
3索引维护.
39514.
3.
1监控索引碎片.
39614.
3.
2整理索引.
39714.
4使用索引改进查询性能.
39814.
5数据库引擎优化顾问.
40214.
6索引太多.
40314.
7小结.
404第15章复制.
40515.
1复制概述.
40515.
1.
1复制的组成.
40615.
1.
2复制类型.
40715.
1.
3SQLServer2012中复制的改进.
40815.
2复制模型.
40915.
2.
1单个发布者,一个或多个订阅者.
40915.
2.
2多个发布者,单个订阅者.
41015.
2.
3多个发布者同时也是订阅者.
41015.
2.
4更新订阅者.
41115.
2.
5对等.
41215.
3实现复制.
41215.
3.
1设置快照复制.
41215.
3.
2建立分发数据库.
41315.
3.
3实现快照复制.
41515.
3.
4实现事务和合并复制.
42415.
4对等复制.
42515.
4.
1建立对等复制.
42515.
4.
2配置对等复制.
42615.
5生成复制脚本.
42815.
6监控复制.
42915.
6.
1复制监视器.
42915.
6.
2性能监视器.
43115.
6.
3复制DMV43115.
6.
4sp_replcounters.
43215.
7小结.
432第16章SQLServer2012群集43316.
1群集与组织.
43416.
1.
1群集能做什么.
43416.
1.
2群集不能做什么.
43416.
1.
3选用SQLServer2012群集的条件.
43516.
1.
4群集以外的其他选择.
43616.
2群集概述.
43716.
2.
1群集的工作原理.
43816.
2.
2群集选项.
44016.
3SQLServer群集的升级.
44216.
3.
1不升级.
44216.
3.
2就地升级到SQLServer2012群集.
44216.
3.
3从头开始重建群集.
44316.
3.
4回退计划.
44416.
3.
5最好的升级选择.
44416.
4群集的准备工作.
44516.
4.
1基础设施的准备工作.
44516.
4.
2硬件的准备工作.
44616.
5WindowsServer2008的群集.
.
.
.
44816.
5.
1安装Windows故障转移群集前的准备工作.
44816.
5.
2安装Windows故障转移群集.
448目录XIX16.
6群集Microsoft分布式事务处理协调器45216.
7SQLServer2012的群集.
45316.
7.
1群集SQLServer的步骤.
.
.
.
.
.
.
45416.
7.
2服务包及累计更新的安装.
45916.
7.
3反复测试.
45916.
8管理和监控群集.
46116.
9群集的故障排除.
46116.
9.
1如何对Windows故障转移群集进行故障排除.
46216.
9.
2故障的预防工作.
46216.
9.
3故障信息的收集.
46216.
9.
4故障的解决.
46316.
9.
5与Microsoft合作.
46316.
10小结.
463第17章备份与恢复.
46517.
1故障类型.
46617.
1.
1硬件故障.
46617.
1.
2数据修改故障.
46617.
1.
3软件故障.
46717.
1.
4局部灾难.
46817.
2制订计划.
46817.
2.
1备份/恢复计划.
46917.
2.
2灾难恢复计划.
47117.
2.
3创建灾难恢复计划.
47217.
2.
4维护计划.
47517.
3备份和还原概述.
47517.
3.
1备份的工作方式.
47517.
3.
2复制数据库.
47817.
3.
3备份压缩.
48617.
3.
4恢复模式之间的比较48717.
3.
5选择一种恢复模式.
48917.
3.
6在恢复模式间切换.
49017.
3.
7备份历史表.
49117.
3.
8备份与还原要求的权限.
.
.
.
.
.
.
49217.
3.
9备份系统数据库.
49217.
3.
10全文备份.
49317.
3.
11验证备份映像.
49317.
3.
12还原的工作方式.
49417.
4恢复计划.
49517.
4.
1可恢复性需求.
49617.
4.
2数据使用模式.
49717.
4.
3维护时间窗口.
49717.
4.
4其他高可用性解决方案.
.
.
.
.
.
.
.
49817.
5开发与执行备份计划.
49917.
5.
1使用SQLServerManagementStudio.
49917.
5.
2数据库维护计划.
50117.
5.
3使用T-SQL备份命令.
50317.
6管理备份.
50517.
7备份与还原的性能.
50517.
8执行恢复.
50617.
8.
1还原过程.
50617.
8.
2使用SQLServerManagementStudio还原数据库.
51017.
8.
3T-SQL还原命令.
51217.
8.
4还原系统数据库.
51317.
9归档数据.
51417.
9.
1SQLServer中表的分区.
.
.
.
.
.
.
.
51417.
9.
2分区视图.
51517.
10小结.
516第18章SQLServer2012日志传送.
.
.
.
51718.
1日志传送部署方案.
51718.
1.
1使用日志传送创建热后备服务器.
51818.
1.
2使用日志传送作为灾难恢复解决方案.
51918.
1.
3使用日志传送作为报告数据库解决方案.
51918.
2日志传送体系结构.
52018.
2.
1主服务器.
52118.
2.
2辅助服务器.
52118.
2.
3监控服务器.
52118.
3日志传送进程.
52118.
4系统要求.
522SQLServer2012管理高级教程(第2版)XX18.
4.
1网络.
52218.
4.
2具有同等容量的服务器.
.
.
.
.
.
.
52318.
4.
3存储.
52318.
4.
4软件.
52318.
5部署日志传送.
52318.
5.
1初始配置.
52318.
5.
2通过ManagementStudio部署.
52518.
5.
3通过T-SQL命令来部署.
.
.
.
.
.
53018.
6监控与故障排除.
53118.
6.
1通过ManagementStudio进行监控.
53218.
6.
2通过存储过程进行监控.
.
.
.
.
.
.
53218.
6.
3故障排除方法.
53318.
7管理角色变更.
53318.
7.
1同步依赖对象.
53318.
7.
2从主服务器角色切换到辅助服务器.
53618.
7.
3在主角色和辅助角色之间切换.
53718.
7.
4把客户端连接重定向到辅助服务器.
53818.
8数据库备份计划.
53918.
9集成日志传送与其他高可用性解决方案.
53918.
9.
1SQLServer2012数据镜像.
.
.
.
.
53918.
9.
2Windows故障转移群集.
.
.
.
.
.
.
54018.
9.
3SQLServer2012复制.
54018.
10删除日志传送.
54118.
10.
1通过ManagementStudio删除日志传送.
54118.
10.
2通过T-SQL命令删除日志传送54118.
11日志传送性能.
54218.
12升级到SQLServer2012的日志传送.
54218.
12.
1宕机时间最小化方法.
.
.
.
.
.
.
54218.
12.
2宕机方法.
54318.
12.
3部署日志传送方法.
54318.
13小结.
543第19章数据库镜像54519.
1数据库镜像概述.
54519.
2数据库镜像的运行模式.
54719.
3数据库镜像示例.
54919.
3.
1准备端点.
54919.
3.
2准备用于镜像的数据库.
.
.
.
.
.
.
.
55419.
3.
3主服务器与镜像服务器间的首次同步.
55519.
3.
4建立镜像会话.
55619.
3.
5无自动故障转移的高安全性运行模式.
55719.
3.
6采用自动故障转移的高安全性运行模式.
55819.
3.
7高性能运行模式.
55919.
4SQLServer2012各发行版本中的数据库镜像.
56019.
5数据库镜像目录视图.
56019.
5.
1sys.
database_mirroring.
56019.
5.
2sys.
database_mirroring_witnesses.
56219.
5.
3sys.
database_mirroring_endpoints56219.
6数据库镜像角色切换.
56319.
6.
1自动故障转移.
56319.
6.
2手动故障转移.
56519.
6.
3强制故障转移.
56719.
7数据库可用性方案.
56819.
7.
1主服务器丢失.
56819.
7.
2镜像服务器丢失.
56919.
7.
3见证服务器丢失.
57019.
7.
4镜像服务器和见证服务器丢失.
57019.
8监控数据库镜像.
57119.
8.
1使用系统监视器进行监控.
.
.
.
.
57119.
8.
2使用数据库镜像监视器进行监控.
573目录XXI19.
8.
3设置计数器阈值以及发送警报.
57619.
9数据库镜像故障排除.
57719.
9.
1创建错误故障排除.
57819.
9.
2运行时错误故障排除57919.
9.
3自动页面修复.
57919.
10为故障转移准备镜像服务器.
58019.
10.
1硬件、软件和服务器配置.
58019.
10.
2计划宕机时间内的数据库可用性.
58119.
10.
3镜像服务器上的SQL作业配置.
58219.
10.
4镜像数据库的TRUSTWORTHY位.
.
.
.
.
.
.
58319.
10.
5重定向客户端到镜像.
.
.
.
.
.
58319.
11为多个数据库创建镜像.
58419.
12数据库镜像以及其他高可用性解决方案.
58519.
12.
1数据库镜像与群集.
58519.
12.
2数据库镜像与事务复制.
.
.
.
.
58519.
12.
3数据库镜像与日志传送.
.
.
.
.
58619.
12.
4数据库镜像与可用性组.
.
.
.
.
58619.
13设置镜像事件监听器.
58619.
14数据库快照.
59019.
15小结.
591第20章IntegrationServices管理和性能调整.
59320.
1IntegrationServices简介.
59320.
1.
1IntegrationServices的用途.
.
.
.
.
59420.
1.
2IntegrationServices的4个主要部分.
59520.
1.
3项目管理和更改控制59620.
2IntegrationServices服务的管理.
59620.
2.
1IntegrationServices服务概述.
59620.
2.
2配置.
59720.
2.
3事件日志.
60020.
2.
4监控活动.
60120.
3包部署模型中IntegrationServices包的管理.
60220.
3.
1使用ManagementStudio管理包.
60220.
3.
2部署.
60420.
4项目部署模型中IntegrationServices包的管理.
60620.
4.
1配置SSIS目录.
60620.
4.
2部署包.
60820.
4.
3配置包.
60920.
5执行和调度.
61120.
5.
1在SSDT中运行包.
61120.
5.
2使用SQLServer导入和导出向导运行包.
61220.
5.
3使用DTExec运行包.
61220.
5.
4使用DTExecUI运行包(包部署模型)61320.
5.
5使用执行包工具运行包(项目部署模型)61320.
5.
6使用SQLServer代理调度执行.
61420.
5.
7使用T-SQL运行包.
61520.
6对IntegrationServices应用安全性.
61620.
6.
1IntegrationServices安全性概述.
61620.
6.
2在包部署模型中保护包.
.
.
.
.
.
.
.
61620.
6.
3项目部署模型中的数据库IntegrationServices角色.
.
.
.
.
.
.
61820.
7小结.
618第21章AnalysisServices管理和性能调整.
61921.
1AnalysisServices概述.
61921.
1.
1MOLAP的组件.
62021.
1.
2表格模型的组件.
621SQLServer2012管理高级教程(第2版)XXII21.
1.
3AnalysisServices体系结构组件.
62121.
2管理AnalysisServices服务器.
62221.
2.
1服务器属性.
62321.
2.
2必需的服务.
62421.
2.
3AnalysisServices脚本语言.
.
.
.
62421.
3管理AnalysisServices数据库.
62521.
3.
1部署AnalysisServices数据库.
62521.
3.
2处理AnalysisServices对象.
62821.
3.
3备份和还原AnalysisServices数据库.
63221.
3.
4同步AnalysisServices数据库.
63421.
4AnalysisServices性能监控和调整.
63421.
4.
1使用SQLServerProfiler监控AnalysisServices事件.
63521.
4.
2为重播创建跟踪.
63521.
4.
3将飞行记录器用于事实后分析.
63721.
5AnalysisServicesMOLAP模型存储的管理.
63721.
5.
1存储模式.
63721.
5.
2分区配置.
63821.
5.
3在MOLAP模型中设计聚合.
64021.
6对AnalysisServices应用安全性.
64121.
6.
1服务器角色.
64121.
6.
2数据库角色.
64221.
6.
3数据库角色的权限.
64321.
6.
4在表格模型中对AnalysisServices应用安全性.
64521.
7小结.
645第22章SQLServerReportingServices管理.
64722.
1SQLServerReportingServices配置管理器.
64722.
1.
1服务账户.
64922.
1.
2Web服务URL65122.
1.
3ReportingServices数据库.
.
.
.
65222.
1.
4报表管理器URL.
65422.
1.
5电子邮件设置.
65422.
1.
6执行账户.
65522.
1.
7加密密钥.
65622.
1.
8扩展部署.
65722.
2ReportingServices属性65822.
2.
1"常规"属性页.
65822.
2.
2"执行"属性页.
65922.
2.
3"历史记录"属性页.
66022.
2.
4"日志记录"属性页.
66122.
2.
5"安全性"属性页.
66122.
2.
6"高级"属性页.
66222.
3报表执行日志.
66322.
4报表生成器.
66422.
5报表管理器.
67122.
5.
1管理报表管理器.
67122.
5.
2管理报表.
67722.
6小结.
687第23章SQLServer2012与SharePoint2010集成.
68923.
1集成的组成部分.
68923.
1.
1PowerPivot.
69023.
1.
2报表服务.
69123.
1.
3PowerView.
69223.
1.
4服务应用程序架构.
69323.
2数据刷新.
69323.
2.
1在Excel中使用数据连接.
.
.
.
69423.
2.
2PerformancePoint数据刷新.
69823.
2.
3VisioServices数据刷新.
.
.
.
.
.
.
.
69923.
2.
4PowerPivot数据刷新.
701目录XXIII23.
3小结.
706第24章SQLAzure的管理和配置.
.
.
.
.
.
70724.
1SQLAzure简介.
70724.
2SQLAzure架构.
70824.
2.
1客户端层.
70824.
2.
2服务层.
70924.
2.
3平台层.
70924.
2.
4基础设施层.
70924.
3配置SQLAzure.
71024.
3.
1服务器和数据库供应71024.
3.
2流量调节与负载均衡71424.
3.
3配置SQLAzure防火墙.
.
.
.
.
.
.
71524.
3.
4连接到SQLAzure.
71624.
4管理SQLAzure.
71724.
4.
1创建登录名和用户.
71724.
4.
2分配访问权限.
71924.
5使用SQLAzure.
71924.
5.
1使用SQLAzure进行备份.
.
.
72024.
5.
2SQLAzure对象资源管理器.
72024.
5.
3SQLAzure中缺失的功能.
.
.
.
72224.
6小结.
723第25章AlwaysOn可用性组.
72525.
1架构.
72625.
1.
1可用性组副本和角色.
72625.
1.
2可用性模式.
72725.
1.
3所支持的故障转移类型.
.
.
.
.
.
.
.
72725.
1.
4允许只读访问辅助副本.
.
.
.
.
.
.
.
72825.
2可用性组示例.
72925.
2.
1配置新的可用性组.
72925.
2.
2配置已经存在的可用性组.
73525.
2.
3可用性组的故障转移操作.
73625.
2.
4挂起可用性数据库.
73725.
2.
5恢复可用性数据库.
73825.
2.
6客户端应用程序连接.
73825.
3用于只读辅助副本的活动辅助.
73925.
3.
1只读访问行为.
73925.
3.
2辅助副本的客户端可连接性.
74025.
3.
3性能.
74125.
4在辅助副本上进行备份.
74225.
5AlwaysOn组面板.
74425.
6监测和故障排除.
74525.
7小结.
746SQLServer2012体系结构本章主要内容:SQLServer2012的重要新增功能新增功能与各类数据库管理员的关系SQLServer体系结构概述SQLServer的版本以及它们对数据库管理员的影响SQLServer2012为组织及其开发人员、信息工作者和主管使用和整合数据的方式提供了一种新的视角.
新增的大量功能和改进之处关注于使SQLServer进一步扩展到SharePoint中,改进自助服务选项,以及提升数据可视化、开发、监视和探索功能.
本章不会深入介绍体系结构,但提供了帮助理解SQLServer如何运行的足够信息.
1.
1SQLServer2012生态系统随着发布版本的增加,SQLServer变得越来越庞大.
本节将从整体上介绍SQLServer生态系统.
现在越来越多地采用"生态系统"这个词,而不是"产品",是因为SQLServer与其他产品和功能存在大量的交互,使它的性能、规模和可用性越来越好.
SQLServer2012主要关注以下3个领域:性能:改进的核心支持、列存储索引、压缩能力的增强以及AlwaysOn等功能使得SQLServer2012成了最强大的SQLServer版本.
自助服务:借助于新的数据探索工具(如PowerView),SQLAzureBusinessIntelligence(BI)、数据质量和主数据选项,以及PowerPivotforSharePoint的改进,使用户在任何时候都可以方便地访问数据,并且能比以往任何时候都要快速地查询和交付商业智能信息.
1第章SQLServer2012管理高级教程(第2版)2集成和协作:SharePoint2010中新集成了报表服务、PowerPivot和声明验证(claimauthentication),这为SQLServer2012版本中对自助服务的侧重提供了坚实的基础.
现在报表服务已经包含在SQLAzure中,新的BI语义模型方法也扩展到了云.
更多的功能还会在将来发布.
1.
2SQLServer2012的重要新增功能取决于读者的角色和使用SQLServer的方式,SQLServer2012版本中有一些值得兴奋的新功能.
本节将简要介绍你需要了解并实践的一些功能.
其中的许多功能都可以快速上手,这对想要立即看到成果的读者来说是个好消息.
1.
2.
1生产DBA生产DBA是公司的"保险单",可以保证生产数据库不会宕机.
如果数据库出现宕机,公司就要求生产DBA恢复数据库.
生产DBA还确保了服务器以最优的方式运行,并促进数据库从开发转入QA(QualityAssurance,质量保证),再到生产.
生产DBA执行的其他任务包括:AlwaysOn:一种可用性功能,包括可用性组和模仿应用程序的行为以组的形式进行数据库故障转移.
这种功能包括新的可读辅助服务器,是一种显著的增强.
FileTable:额外的基于文件的数据存储.
扩展事件:SQLServer2012中一种新增的内置功能,提供了轻量级的、覆盖范围广的跟踪功能.
功能和稳定性得以改进的SQLServerManagementStudio(现在包含在VisualStudio2010shell中).
分布式重播能力.
改进的调试功能,包括支持表达式和断点验证.
列存储索引,用于优化大数据卷.
针对超大数据库改进的统计算法.
改进的压缩和分区能力.
1.
2.
2开发DBA自SQLServer2000发布后,专职的生产DBA出现了一种趋势,该角色与开发DBA的角色相合并.
不过,这一趋势由于一些法案的存在而发展得较慢,如Sarbanes-Oxley法案(该法案要求区分开发更改人员和实现更改人员的职责).
在大型的组织中,生产DBA可能归运营部门(由网络管理员和Windows支持人员构成).
将生产DBA放到开发小组中,就无法实现一些规章原因所要求的职责分离.
开发DBA在组织中也扮演着非常传统的角色.
他们大多戴着"开发人员"的帽子,是开发人员眼中的数据库专家和代表.
这类管理员确保所有存储过程都以最优方式编写,数据库在物理上和逻辑上都正确建模.
他们还编写迁移过程来将数据库从一个版本升级为下一个版本.
开发DBA通常不会在凌晨两点接到电话,这与生产DBA不同,后者可能因为备份失败或其他类似问题在任何时间接到电话.
开发DBA应该会对新版本中的以下地方感到兴奋:第1章SQLServer2012体系结构3新的T-SQL和空间数据功能.
SQLServerDataTools:集成到VisualStudio中的新的T-SQL开发环境.
新的DAX表达式语言,像Excel一样便于使用,具有多维数据处理能力.
AnalysisServices的新的表格模型:内存优化的OLAP技术展现出一种快速取得价值的形式.
开发DBA通常向开发小组作汇报.
他们接收来自业务分析师或其他开发人员的要求.
从传统意义上讲,开发DBA不应该获得生产数据库的修改权限.
不过,他们可以只读访问生产数据库以在升级阶段进行调试.
1.
2.
3商业智能DBA和开发人员商业智能(BI)DBA是随SQLServer不断增长的能力而发展起来的新角色.
在SQLServer2012中,BI发展成为许多业务必不可少的一个非常重要的功能集.
BIDBA或开发人员是这些功能的专家.
SQLServer2012中包含了许多新的BI功能,包括对ReportingServices集成进行了增强,提供了PowerView等数据探索工具,并使得PowerPivot比以往任何时候更易于使用.
另外,SSAS的新的表格模型能够向SharePoint创建新的、类似于PowerPivot的"内存优化的"BI项目,以便大量用户使用.
开发BIDBA主要关注最佳实践、优化和BI工具集的使用.
在小型组织中,他们可能创建SSIS包,为用户执行提取、转换和加载(ExtractTransformandLoad,ETL)过程或报表.
在大型组织中,开发人员创建SSIS包和SSRS报表.
开发BIDBA被咨询有关SSIS程序包和AnalysisServices(SSAS)多维数据集的物理实现的内容.
开发BIDBA可能有下列职责:有关AnalysisServices多维数据集和解决方案的建模和咨询.
使用ReportingServices创建报表.
使用IntegrationServices创建ETL及提供相关咨询.
开发将发送至生产DBA的部署包.
这些职责,再加上下面的新功能,使得BI相关人员的工作十分有吸引力:使用PowerView和PowerPivot快速发现数据.
托管的自助式BI,能够使用SharePoint和BI语义模型.
使用DataQualityServices和MasterDataManagement得到可信而一致的数据.
使用ParallelDataWarehouse和ReferenceArchitectures实现健壮的DW解决方案.
1.
3SQLServer体系结构许多人只是将SQLServer用于传统的用途:存储数据.
SQLServer的这个版本的关注点是扩展SQLServer2008R2中引入的功能,主要是自助的商业智能和SharePoint功能发布.
SQLServer2012中的另外一些功能不只支持、而且鼓励用户跳出只使用SQLServer存储数据的惯性思维,可以把这个版本作为完整的数据策略的核心.
新的PowerView和PowerPivot等工具可以快速地在SQLServer之上集成,从而为SQLServer和其他系统的数据提供易用的用户界面(UI).
本节将介绍SQLServer2012中的主要文件类型、文件管理、SQLClient和系统数据库,还会概述架构、同义词和动态管理对象.
最后,本节还讲解了SQLServer2012中新的数据类型.
SQLServer2012管理高级教程(第2版)41.
3.
1数据库文件和事务日志数据库和事务日志文件的体系结构自发布以来并未改变.
取决于具体的类型,数据库文件有两个主要的目的.
数据文件保存数据、索引和数据库内的其他数据支持结构.
日志文件保存已提交事务的数据,以保证数据库内的一致性.
1.
数据库文件数据库由多个文件组构成.
每个文件组可能包含一个或多个物理数据文件.
文件组用于简化文件集合的管理工作.
数据文件被划分到8KB的数据页中,这些数据页是64KB的区段的一部分.
可通过T-SQL命令create/alterindex的填充系数选项指定每个数据页的填充情况.
在SQLServer2012企业版中,如果单个文件被破坏,仍可使数据库部分联机.
在这种情况下,DBA可使其余文件联机并进行读写,如果用户尝试访问数据库中的脱机部分,就会接收到错误.
在SQLServer2000及更早版本中,一行最多可写8060字节.
但有一些例外:text、ntext、image、varchar(max)、varbinary(max)以及nvarchar(max)列最多可达2GB并可单独管理.
从SQLServer2005开始,8KB限制只适用于那些定长列.
定长列的合计值以及其他列类型的指针仍必须小于每行8060字节.
不过,每个变长列可能达到8KB,因此行的总尺寸可能大于8060字节.
如果实际行尺寸超出8060字节,可能导致性能降级,因为现在逻辑行必须跨多个8060字节的物理行.
2.
事务日志事务日志用于确保所有提交的事务在数据库中持久保存并可恢复(如回滚或时间点恢复).
事务日志是预写式(write-ahead)日志.
在对SQLServer中的数据库作出更改时,数据会写入日志,然后需要更改的页会被加载到内存中(具体来说,就是加载到缓冲池的写缓冲区).
然后更改将写入这些页,使其成为脏页.
到了检查点时,这些脏页会被写入到磁盘中,从而使它们再次成为干净页,不再需要作为写缓冲的一部分.
这就是你在长时间运行的事务中看到事务日志显著增长的原因(尽管恢复模型很简单).
在第17章中将对此作更详细的介绍.
1.
3.
2SQLNativeClientSQLNativeClient是SQLServer2005自带的一种数据访问方法,在SQLServer2012中得到增强,由OLEDB和ODBC用于访问SQLServer.
它通过将OLEDB和ODBC库组合成一种访问方法,简化了对SQLServer的访问.
这种访问类型展示了SQLServer的一些新功能:数据库镜像AlwaysOn可读辅助路由多活动结果集(MultipleActiveResultSet,MARS)快照隔离查询通知XML数据类型支持用户定义的数据类型(User-DefinedDataType,UDT)加密第1章SQLServer2012体系结构5执行异步操作使用大型值类型执行批量复制操作表值参数大型CLR用户定义类型密码过期可以在其他数据层(如MicrosoftDataAccessComponent,MDAC)中使用这些新功能中的一部分,但需要做更多的工作.
MDAC仍然存在,如果不需要SQLServer2008\2012的一些新功能,可以使用MDAC.
如果开发基于COM的应用程序,那么应使用SQLNativeClient;如果开发托管代码应用程序(如使用C#),那么应考虑使用SQLServer.
NETFramework数据提供程序(它非常健壮且包括SQLServer2008\2012的功能).
1.
3.
3标准系统数据库SQLServer中的系统数据库很重要,大部分时候都不应修改它们.
唯一例外是model数据库和tempdb数据库.
model数据库允许部署更改(如存储过程)到任何新创建的数据库,而更改tempdb数据库的原因则是为了帮助扩展数据库以承担更多的负载.
下面将详细介绍标准系统数据库.
1.
Resource数据库SQLServer2005添加了Resource数据库.
这个数据库包含了SQLServer运行所需的所有只读的关键系统表、元数据以及存储过程.
它不包含有关用户实例或数据库的任何信息,因为它只在安装新服务补丁时被写入.
Resource数据库包含其他数据库逻辑引用的所有物理表和存储过程.
该数据库的默认位置为C:\ProgramFiles\MicrosoftSQLServer\MSSQL11.
MSSQLSERVER\MSSQL\Binn,每个实例只有一个Resource数据库.
在SQLServer2000中,当升级到新的服务补丁时,需要运行很多且很长的脚本以删除并重新创建系统对象.
这个过程需要很长时间,并且新创建的环境不能回滚到安装服务补丁之前的版本.
在SQLServer2012中,升级到新服务补丁或快速修正时,将使用Resource数据库的副本覆盖旧数据库.
这使得用户可以快速升级SQLServer目录,还可以回滚到前一个版本.
如果某些系统数据库被篡改或破坏,那么SQLServer可能无法启动.
master数据库包含了SQLServer保持联机所需的所有存储过程和表.
路径中的C:假定了一种标准设置.
如果你机器的设置与此不同,那么可能需要改变此路径来进行匹配.
另外,.
MSSQLSERVER是实例名.
如果你的实例名也与此不同,那么在路径中使用你自己的实例名.
SQLServer2012管理高级教程(第2版)6通过ManagementStudio无法看到Resource数据库,并且永远不应修改它,除非Microsoft产品支持服务(MicrosoftProductSupportServices,PSS)指导用户进行修改.
在特定的单用户模式条件下,可以通过输入命令USEMSSQLSystemResource连接该数据库.
通常,DBA在连接到任何数据库的同时对它执行简单查询,而不必直接连接Resource数据库.
Microsoft提供了一些函数来实现这种访问.
例如,如果在连接到任何数据库时运行下面的查询,将返回Resource数据库的版本及其最后一次升级的时间:SELECTserverproperty('resourceversion')ResourceDBVersion,serverproperty('resourcelastupdatedatetime')LastUpdateDate2.
master数据库master数据库包含有关数据库的元数据(数据库配置和文件位置)、登录以及有关实例的配置信息.
如果这个重要的数据库丢失,那么SQLServer将不能启动.
例如,通过运行下列查询(它将返回有关服务器上的数据库的信息),可以查看存储在master数据库中的一些元数据:SELECT*FROMsys.
databasesResource数据库和master数据库之间的主要区别在于master数据库保存用户实例特定的数据,而Resource数据库只保存运行用户实例所需的架构和存储过程,而不包含任何实例特定的数据.
3.
tempdb数据库tempdb数据库类似于操作系统的分页文件,用于存储用户创建的临时对象、数据库引擎需要的临时对象和行版本信息.
tempdb数据库是在每次重启SQLServer时创建的.
当SQLServer启动时,该数据库将重新创建为其原始大小.
由于该数据库每次都重新创建,因此不能备份它.
对tempdb数据库中的对象作数据更改可以减少登录.
为tempdb数据库分配足够的空间非常重要,因为数据库应用中的很多操作都需要使用tempdb数据库.
通常,应将tempdb数据库设置为在需要空间时自动扩展.
一般来说,tempdb数据库的大小不尽相同,但是应该知道数据库应用在峰值时使用多少临时空间,并保证在考虑到15%~20%的扩展开销的情况下留出足够的空间.
如果没有足够空间,用户可能接收如下错误信息之一:1101或1105:连接到SQLServer的会话必须在tempdb数据库中分配空间.
3959:版本存储空间已满.
3967:版本存储空间必须压缩,因为tempdb数据库已满.
不要将Resource数据库放在加密或压缩的驱动器中,这样做可能导致升级问题或性能问题.
尽量不要在master数据库中创建对象,如果在其中创建对象,那么可能需要更频繁地进行备份.
第1章SQLServer2012体系结构74.
model数据库model数据库是在SQLServer创建新数据库时充当模板的系统数据库.
创建每个数据库时,SQLServer将model数据库复制为新数据库.
唯一的例外发生在还原或重新连接其他服务器上的数据库时.
如果表、存储过程或数据库选项应包括在服务器上创建的每个新的数据库中,那么通过在model数据库中创建该对象可以简化该过程.
在创建新数据库时,model被复制为新数据库,包括在model数据库中添加的特殊对象或数据库设置.
如果在model数据库中添加你自己的对象,那么应该把model数据库包括在你的备份中,或是应维护包含更改的脚本.
5.
msdb数据库msdb是系统数据库,包含SQLServer代理、日志传送、SSIS以及关系数据库引擎的备份和还原系统等使用的信息.
该数据库存储了有关作业、操作员、警报以及作业历史的全部信息.
因为包含这些重要的系统级数据,所以应定期对该数据库进行备份.
1.
3.
4架构架构可以对数据库对象进行分组.
分组的目的可能是为了易于管理,这样可对架构中的所有对象应用安全策略.
使用架构组织对象的另一个原因是使用者可以很容易地发现所需的对象.
例如,可创建名为HumanResources的架构,并将雇员表和存储过程放入该架构.
然后可对该架构应用安全策略,允许对其中包含的对象作适当的访问.
在引用对象时,应使用两部分名称.
dbo架构是数据库的默认架构.
dbo架构中的Employee表称为dbo.
Employee.
表名在架构中必须是唯一的.
也可在HumanResources架构中创建另一个名为Employee的表,它被称为HumanResources.
Employee.
该表实际位于SQLServer2012的AdventureWorks示例数据库中(所有的SQLServer2012示例都必须从wrox.
com单独下载和安装).
例如,使用两部分名称的示例查询如下所示:SELECTBusinessEntityID,JobTitleFROMHumanResources.
Employee在SQLServer2005之前,两部分名称的第一部分是对象所有者的用户名.
那种实现方式存在与维护有关的问题.
如果拥有对象的用户要离开公司,就不能从SQLServer中删除该用户登录,除非确保已将该用户拥有的所有对象改为另一个所有者所有.
引用该对象的所有代码必须改为引用这个新所有者.
通过将所有关系与架构名分离,从SQLServer2005到2012的各个版本消除了这一维护问题.
1.
3.
5同义词同义词是对象的别名或替换名,它在数据库对象和使用者之间创建一个抽象层.
这个抽象层使得你可以改变一些物理实现,并将这些更改与使用者隔离开.
下面的示例与链接服务器有关.
可能表在另一个服务器上,该表需要连接到本地服务器上的表.
使用4部分名称引用另一服务器上的对象,代码如下所示:SELECTColumn1,Column2SQLServer2012管理高级教程(第2版)8FROMLinkedServerName.
DatabaseName.
SchemaName.
TableName例如,可能为LinkedServerName.
DatabaseName.
SchemaName.
TableName创建名为Schema-Name.
SynonymName的同义词.
数据使用者将使用下列查询引用该对象:SELECTColumn1,Column2FROMSchemaName.
SynonymName现在,这个抽象层允许将表的位置改为另一个服务器,使用不同的链接服务器名,甚至将数据复制到本地服务器来获得更好的性能,而不需要对引用该表的代码作任何更改.
1.
3.
6动态管理对象动态管理对象(DynamicManagementObject,DMO)和函数返回有关SQLServer实例和操作系统的信息.
DMO分为两类:动态管理视图(DynamicManagementView,DMV)和动态管理函数(DynamicManagementFunction,DMF).
DMV和DMF简化了对数据的访问,并提供了无法通过SQLServer2005之前版本获取的新信息.
DMO可以提供各种信息,包括有关I/O子系统和RAM的数据以及有关ServiceBroker的信息.
无论何时启动实例,SQLServer都会开始将服务器状态和诊断信息保存到DMV和DMF可以访问的内存中.
当停止并启动实例时,从视图中清空这些信息,并开始收集新数据.
可以像SQLServer中的任何其他表一样,用两部分的限定名来查询视图.
例如,下列查询使用sys.
dm_exec_sessionsDMV来检索连接到实例的会话数量,并按登录名分组:SELECTlogin_name,COUNT(session_id)asNumberSessionsFROMsys.
dm_exec_sessionsGROUPBYlogin_name有些DMF是接受参数的函数.
例如,下列代码使用sys.
dm_io_virtual_file_stats动态管理函数来检索AdventrueWorks数据文件的I/O统计信息:USEAdventureWorksGOSELECT*FROMsys.
dm_io_virtual_file_stats(DB_ID('AdventureWorks'),FILE_ID('AdventureWorks_Data'))SQLServer2012中提供了许多新的DMV和DMF,利用这些视图可以更好地了解新增功能和现有的功能.
下面列出了这些新的DMV和DMF:AlwaysOn可用性组动态管理视图和函数与更改数据捕捉有关的动态管理视图与更改跟踪有关的动态管理视图同义词不能引用另一个同义词.
object_id函数返回同义词的id而非相关基对象的id.
如果需要列级别的抽象,可以使用视图.
第1章SQLServer2012体系结构9与公共语言运行时(CLR)有关的动态管理视图与数据库镜像有关的动态管理视图与数据库有关的动态管理视图与执行有关的动态管理视图和函数SQLServer扩展事件动态管理视图FileStream和FileTable动态管理视图全文搜索和语义搜索动态管理视图和函数与索引有关的动态管理视图和函数与I/O有关的动态管理视图和函数与对象有关的动态管理视图和函数与查询通知有关的动态管理视图和函数与复制有关的动态管理视图与资源调控器有关的动态管理视图与安全有关的动态管理视图和函数与服务器有关的动态管理视图和函数与ServiceBroker有关的动态管理视图与空间数据有关的动态管理视图和函数与SQLServerOS有关的动态管理视图与事务有关的动态管理视图和函数1.
3.
7SQLServer2012数据类型在SQLServer中,数据类型是创建表的基础.
在创建表时,必须为表中的每列指派一种数据类型.
本节将介绍SQLServer中最常用的一些数据类型.
即使创建自定义数据类型,也必须基于一种标准的SQLServer数据类型.
例如,可以使用如下语法创建一种自定义数据类型(Address),但要注意,它基于SQLServer标准的varchar数据类型:CREATETYPEAddressFROMvarchar(35)NOTNULL如果在SQLServerManagementStudio的表设计界面中更改一个大型表中某列的数据类型,那么该操作可能需要很长时间.
可以通过在ManagementStudio界面中脚本化这种改变来观察其原因.
ManagementStudio创建一个辅助的临时表,采用像tmpTableName这样的名称,然后将数据复制到该表中.
最后,界面删除旧表并用新的数据类型重命名新表.
当然,此过程中还涉及其他一些用于处理表中索引和其他任何关系的步骤.
如果有一个包含数百万条记录的大型表,那么该过程可能需要花费10分钟,有时可能是数小时.
为避免这种情况,可在查询窗口中使用简单的单行T-SQL语句来更改该列的数据类型.
例如,要将Employees表中JobTitle列的数据类型改为varchar(70),可以使用如下语法:ALTERTABLEHumanResources.
EmployeeALTERCOLUMNJobTitleVarchar(70)SQLServer2012管理高级教程(第2版)10你可能想为SQLServer表编写报表,显示表中每列的数据类型.
完成这项任务的方法有很多种,但下例演示的这种常用的方法是连接sys.
objects表和sys.
columns表.
在下面的代码中,有两个函数可能不太为你所熟悉.
函数TYPE_NAME()将数据类型id转换为适当的名称.
要进行反向操作,可使用TYPE_ID()函数.
需要注意的另一个函数是SCHEMA_ID(),它用于返回架构的标识值.
在需要编写有关SQLServer元数据的报表时,这是特别有用的.
USEAdventureWorksGOSELECTo.
nameASObjectName,c.
nameASColumnName,TYPE_NAME(c.
user_type_id)asDataTypeFROMsys.
objectsoJOINsys.
columnscONo.
object_id=c.
object_idWHEREo.
name='Department'ando.
Schema_ID=SCHEMA_ID('HumanResources')该代码返回如下结果(注意,Name是一种用户定义的数据类型):ObjectNameColumnNameDataTypeDepartmentDepartmentIDsmallintDepartmentNameNameDepartmentGroupNameNameDepartmentModifiedDatedatetime1.
字符数据类型字符数据类型包括varchar、char、text等.
这些数据类型用于存储字符数据.
varchar和char类型的主要区别是数据填充.
如果有个列名为FirstName且数据类型为varchar(20)的表,同时将值Brian存储到FirstName列中,那么在物理上只存储5个字节.
但如果在数据类型为char(20)的列中存储相同的值,将使用全部20个字节.
SQL将插入拖尾空格来填满20个字符.
在转换为与当前数据不兼容的数据类型时,可能丢失重要数据.
例如,如果要将包含一些数据(如15.
415)的numeric数据类型转换为integer数据类型,那么15.
415这个数据将四舍五入为整数.
你可能想知道,如果要节省空间,那么为什么还使用char数据类型呢这是因为使用varchar数据类型会稍增加一些系统开销.
例如,如果要存储两字母形式的州名缩写,那么最好使用char(2)列.
尽管有些DBA认为应最大可能地节省空间,但一般来说,好的做法是在组织中找到合适的阈值,并指定低于该阈值的采用char数据类型,反之则采用varchar数据类型.
一条可以采用的原则是,任何小于或等于5个字节的列都应存储为char数据类型,而不是varchar数据类型.
如果超过这个长度,使用varchar数据类型的好处将超过其额外开销.
第1章SQLServer2012体系结构11nvarchar数据类型和nchar数据类型的工作方式与对等的varchar数据类型和char数据类型相同,但这两种数据类型可以处理国际性的Unicode字符.
它们需要一些额外开销.
以Unicode形式存储的数据为一个字符占两个字节.
如果要将值Brian存储到nvarchar列,将使用10个字节;而如果将之存储为nchar(20),就需要使用40个字节.
由于这些额外开销和增加的空间,应该避免使用Unicode列,除非确实有需要使用它们的业务或语言需求.
提前考虑好将来是否需要在实例中使用Unicode列.
如果将来没有这种需求,就应避免使用它们.
表1-1列出了这些类型,对其作了简单描述,并说明了要求的存储空间.
表1-1SQLServer数据类型数据类型描述存储空间char(n)n为1~8000字符之间n字节nchar(n)n为1~4000Unicode字符之间2*n字节nvarchar(max)最多为230–1(1073741823)Unicode字符2*字符数+2字节额外开销text最多为231–1(2147483647)字符每字符1字节+2字节额外开销varchar(n)n为1~8000字符之间每字符1字节+2字节额外开销varchar(max)最多为231–1(2147483647)字符每字符1字节+2字节额外开销2.
精确数值数据类型数值数据类型包括bit、tinyint、smallint、int、bigint、numeric、decimal、money、float以及real.
这些数据类型都用于存储不同类型的数值.
第一种数据类型bit只存储null、0或1,在大多数应用程序中被转换为true或false.
bit数据类型非常适合用于开关标记,且只占据1字节空间.
其他常见的数值数据类型如表1-2所示.
表1-2精确数值数据类型数据类型描述存储空间bit0、1或null1字节(8位)tinyint0~255之间的整数1字节smallint–32768~32767之间的整数2字节int–2147483648~2147483647之间的整数4字节bigint–9223372036854775808~9223372036854775807之间的整数8字节numeric(p,s)或decimal(p,s)–1038+1~1038–1之间的数值最多17字节money–922337203685477.
5808~922337203685477.
58078字节smallmoney–214748.
3648~214748.
36474字节SQLServer2012管理高级教程(第2版)12decimal和numeric这样的数值数据类型可存储小数点右边或左边的变长位数.
scale(表中的s)是小数点右边的位数.
precision(表中的p)定义了总位数,包括小数点右边的位数.
例如,14.
88531可为numeric(7,5)或decimal(7,5).
如果将14.
25插入到numeric(5,1)列中,该值将被舍入为14.
3.
3.
近似数值数据类型这个分类中包括数据类型float和real.
它们用于表示浮点数据.
但是,由于它们是近似的,因此不能精确地表示所有值.
float(n)中的n是用于存储该数尾数(mantissa)的位数.
SQLServer对此只使用两个值.
如果指定位于1~24之间,就使用24.
如果指定25~53之间,就使用53.
当指定float()时(括号中为空),默认为53.
表1-3列出了近似数值数据类型,对其进行简单描述,并说明了要求的存储空间.
表1-3近似数值数据类型数据类型描述存储空间float[(n)]–1.
79E+308~–2.
23E–308,0,2.
23E–308~1.
79E+308n≤24–4字节n>24–8字节real()–3.
40E+38~–1.
18E–38,0,1.
18E–38~3.
40E+384字节4.
二进制数据类型varbinary、binary、varbinary(max)等二进制数据类型用于存储二进制数据,如图形文件、Word文档或MP3文件,值为十六进制的0x0~0xf.
image数据类型可在数据页外部存储最多2GB的文件.
image数据类型的首选替代数据类型是varbinary(max),可保存超过8KB的二进制数据,其性能通常比image数据类型好.
SQLServer2012的新功能是可以在操作系统文件中通过FileStream存储选项存储varbinary(max)对象.
这个选项将数据存储为文件,同时不受varbinary(max)的2GB大小的限制.
表1-4列出了二进制数据类型,对其做了简单描述,并说明了要求的存储空间.
表1-4二进制数据类型数据类型描述存储空间binary(n)n为1~8000十六进制数字之间n字节varbinary(n)n为1~8000十六进制数字之间每字符1字节+2字节额外开销varbinary(max)最多为231–1(2147483647)十六进制数字每字符1字节+2字节额外开销real的同义词为float(24).
第1章SQLServer2012体系结构135.
日期和时间数据类型datetime和smalldatetime数据类型用于存储日期和时间数据.
smalldatetime为4字节,存储1900年1月1日~2079年6月6日之间的时间,并且只精确到最近的分钟.
datetime数据类型为8字节,存储1753年1月1日~9999年12月31日之间的时间,并且精确到最近的3.
33毫秒.
SQLServer2012有4种与日期相关的新数据类型:datetime2、dateoffset、date和time.
通过SQLServer联机丛书可找到使用这些数据类型的示例.
datetime2数据类型是datetime数据类型的扩展,有着更广的日期范围.
时间总是用时、分钟、秒的形式来存储.
可以定义末尾带有可变参数的datetime2数据类型——如datetime2(3).
这个表达式中的3表示存储时秒的小数精度为3位,或0.
999.
有效值为0~9之间,默认值为3.
datetimeoffset数据类型和datetime2数据类型一样,带有时区偏移量.
时区偏移量最大为+/–14小时,包含了UTC偏移量,因此可以合理化不同时区捕捉的时间.
date数据类型只存储日期,这是我们一直需要的一个功能.
time数据类型只存储时间,也支持time(n)声明,因此可以控制小数秒的粒度.
与datetime2和datetimeoffset一样,n可为0~7之间.
表1-5列出了日期/时间数据类型,对其进行简单描述,并说明了要求的存储空间.
表1-5日期和时间数据类型数据类型描述存储空间date1年1月1日~9999年12月31日3字节datetime1753年1月1日~9999年12月31日,精确到最近的3.
33毫秒8字节datetime2(n)1年1月1日~9999年12月31日0~7之间的n指定小数秒6~8字节datetimeoffset(n)1年1月1日~9999年12月31日0~7之间的n指定小数秒+/–偏移量8~10字节smalldateTime1900年1月1日~2079年6月6日,精确到1分钟4字节time(n)小时:分钟:秒.
99999990~7之间的n指定小数秒3~5字节6.
其他系统数据类型还有一些之前未见过的数据类型.
表1-6列出了这些数据类型.
表1-6其他系统数据类型数据类型描述存储空间cursor包含对游标的引用,只能用作变量或存储过程参数不适用hierarchyid包含对层次结构中位置的引用1~892字节+2字节的额外开销SQLServer2012管理高级教程(第2版)14(续表)数据类型描述存储空间SQL_Variant可能包含任何系统数据类型的值,除了text、ntext、image、timestamp、xml、varchar(max)、nvarchar(max)、varbinary(max)以及用户定义的数据类型.
最大尺寸为8000字节数据+16字节元数据8016字节table用于存储用于进一步处理的数据集.
定义类似于CreateTable.
主要用于返回表值函数的结果集,它们也可用于存储过程和批处理取决于表定义和存储的行数timestamp或rowversion对于每个表来说是唯一的、自动存储的值.
通常用于版本戳,该值在插入和每次更新时自动改变8字节uniqueidentifier可以包含全局唯一标识符(GloballyUniqueIdentifier,GUID).
GUID值可以从Newsequentialid()函数获得.
这个函数返回的值对所有计算机来说是唯一的.
尽管存储为16位的二进制值,但仍显示为char(36)16字节XML定义为Unicode形式最多2GBXML数据类型存储XML文档或片段,在存储时使用的空间根据文档中使用UTF-16还是UTF-8决定,就像nvarchar(max)一样.
XML数据类型使用特殊构造体进行搜索和索引.
第15章将更详细地介绍这些内容.
7.
CLR集成在SQLServer2012中,还可使用公共语言运行时(CommonLanguageRuntime,CLR)中称为SQLCLR的部分创建自己的数据类型、函数和存储过程.
这让用户可以使用VisualBasic或C#编写更复杂的数据类型以满足业务需求.
这些类型被定义为基本的CLR语言中的类结构.
1.
4SQLServer版本SQLServer2012有很多版本,不同版本可用的功能差异也很大.
可在工作站或服务器上安装的SQLServer版本也会因操作系统而不同.
SQLServer版本包括最低端的SQLExpress(速成版)和最高端的EnterpriseEdition(企业版).
1.
4.
1版本概览SQLServer2012有3个主版本.
另外还有一些额外的小版本,但是一般不建议在生产环境中使用它们,所以这里不做讨论.
更多信息可参考网址www.
microsoft.
com/sqlserver.
图1-1和图1-2展示了SQLServer2012的各种版本.
cursor数据类型不能用于CreateTable语句中.
第1章SQLServer2012体系结构15图1-1SQLServer2012提供了3个主要的SKU:企业版包含SQLServer2012中的全部新功能,包括高可用性和性能更新,使SQLServer成为能够处理关键任务的数据库.
这个版本中也包含全部BI功能.
商业智能(BI)版是SQLServer2012中新引入的版本.
BI版提供了SQLServer2012中全套强大的BI功能,包括PowerPivot和PowerView.
这个版本的主要目标之一是使最终用户可以使用强大的BI功能.
对于需要高级BI功能,但是不需要企业版的完整OLTP性能和可扩展性的项目,这是一个理想的版本.
这个新的BI版包含了标准版,并且也提供了基本的OLTP功能.
标准版与现在一样,是为规模有限的部门使用设计的,提供了基本的数据库功能和基本的BI功能.
SQLServer2012标准版中还新增了一些功能,如压缩.
图1-2总结了SQLServer2012的各个版本的关键特征.
图1-2标准版中提供了基本功能.
BI版中提供了关键的企业BI功能.
当想要使用高端数据仓库SQLServer2012管理高级教程(第2版)16功能及获得企业级的高可用性时,企业版是正确的选择.
图1-2详细列出了SQLServer2012的各个版本以及相关功能.
可以看到,标准版最多只能支持16核.
对于BI版,数据库最多可以使用20核,BI版最多可以使用操作系统设置的最大核数.
企业版可以使用操作系统支持的最大核数.
BI版和企业版都提供了SQLServer2012的完整的高级BI功能,包括企业数据管理、自助式BI和公司BI功能.
企业版还添加了关键任务和一级数据库功能,并使其实现最好的可扩展性、性能和高可用性.
当通过MicrosoftSoftwareAssurance购买企业版时,客户可以实现无限的虚拟化,获得无限虚拟机的许可.
1.
4.
2许可SQLServer2012的许可模式发生了很大的变化.
你如果不是使用通过MicrosoftSoftwareAssurance获取到的许可,这种变化可能会对你的环境产生影响.
本节只是概述了这些变化,而没有深入探讨.
更多细节可以咨询Microsoft客户经理.
SQLServer2012的定价和许可方案更符合客户购买数据库和BI产品的方式,为客户提供了多种好处,包括:SQLServer2012提供了市场领先的总体拥有成本(TotalCostofOwnership,TCO):在主要供应商中,SQLServer2012仍然是明显值得信赖的领袖.
这一点通过其定价模型、非企业版中包含的功能以及对各个版本均提供世界一流的支持得以充分体现.
拥有SoftwareAssurance的客户可以获得明显的好处,并且在过渡到新许可模型时会得到各种帮助.
这些好处包括在许可有效期内能够进行升级和获得更有效的支持.
拥有EnterpriseAgreement的客户很容易过渡到SQLServer2012,并节省大量成本.
SQLServer2012针对云做了优化:SQLServer2012是对虚拟化支持程度最好的数据库,提供了扩展的虚拟化许可,允许灵活地为每个VM购买许可,并提供了对Hyper-V的出色支持.
由于SQLServer2012与SQLAzure更好地集成在一起,因此客户还能够支持涉及组织内部、私有云和公有云的混合场景.
SQLServer2012的定价和许可模型允许客户随着自身规模的增长相应购买许可:新的精简版更符合数据库和BI需求.
对于数据中心,许可模型更符合硬件能力.
对于BI,许可模型符合基于用户的访问,大多数客户都习惯以这种方式购买BI.
CPU核(不是处理器)许可在SQLServer2012版本中,Microsoft转为采用逐核处理模型.
不过不必担心,因为对于大多数服务器,费用应该没有变化.
基于CPU核的许可(只适用于标准版和企业版)按"双核包"的方式销售.
也就是说,对于4核CPU,每个插槽需要两个这样的包.
这些许可包的费用只有SQLServer2008R2CPU许可的一半.
但是,对于每个CPU,必须至少购买4个核的许可.
第1章SQLServer2012体系结构17例如:对于两个插槽,每个插槽2个核,需要4个许可包(8个核的许可).
对于两个插槽,每个插槽4个核,需要4个许可包(8个核的许可).
对于两个插槽,每个插槽6个核,需要6个许可包(12个核的许可).
对于两个插槽,每个插槽8个核,需要8个许可包(16个核的许可).
虚拟化的SQLServer和基于主机的许可当运行虚拟化的SQLServer时,必须为VM购买至少4个核的许可.
如果VM中有4个以上的虚拟CPU,就必须为分配给VM的每个虚拟CPU购买1个CPU核许可.
SQLServer2012仍然为拥有SoftwareAssurance和EnterpriseAgreement的那些客户提供了基于主机的许可.
基于主机的许可的工作方式与以前一样:为主机购买足够的企业版CPU核许可,然后就可以在任意数量的虚拟机中运行SQLServer.
许多用户可能首选这种方式.
没有SoftwareAssurance或EnterpriseAgreement的客户需要联系Microsoft代理或零售商,因为他们不能购买基于主机的许可.
可以看到,许可模型的变化很大.
定价也有所改变,但是其类型取决于个人购买的产品,所以这里不做讨论.
Microsoft已经尽了最大努力让这个版本的价格对于大多数客户来说没有提高太多,所以对这一点不必担心.
当然,购买前仍然应该仔细进行考虑,并与自己的Microsoft项目团队进行商讨.
1.
5小结SQLServer2012的体系结构有了增强,从而改进了性能、提高了开发人员的效率和系统可用性,并降低了整体运营成本.
将注意力集中到自己当前和将来的角色,并理解适用于自己的情况和可以满足组织需求的功能和版本,这是非常重要的.
SQLServer2012安装最佳实践本章主要内容:如何规划并成功地完成SQLServer2012的安装在完成安装后必须进行哪些配置解决常见的安装问题SQLServer2012的安装过程十分简单,只需要在安装媒体中执行安装向导,然后按照每一步的提示进行操作即可.
在这个过程中,安装向导会替你做出几个重要的决策.
本章将讨论这些决策,以及实现安全、稳定和可扩展的安装的合适配置.
安装过程主要有如下步骤:(1)规划系统.
(2)准备硬件和软件.
(3)安装操作系统和服务补丁.
(4)建立I/O子系统.
(5)安装SQLServer和服务补丁.
(6)系统压力测试.
(7)必要时执行安装后配置.
(8)清理工作.
本章着重介绍规划系统和实际安装.
2.
1规划系统在安装SQLServer前,第一步是进行合理的规划,这是成功安装SQLServer的基础.
正如古语所说:不做规划就相当于准备失败.
在规划时,必须考虑下面列出的任务和要点:当前工作负载的基准估计工作负载的增长情况2第章SQLServer2012管理高级教程(第2版)20最低硬件和软件需求合适的存储系统大小和I/O需求SQLServer版本SQLServer排序规则、文件位置和tempdb大小服务账户选择数据库维护和备份计划最小联机时间和响应时间服务等级灾难恢复策略在部署、升级或迁移SQLServer2012实例时,必须考虑很多因素,上面只是列出了其中的一部分而已.
下面将详细介绍其中的一些因素以及相关的最佳实践.
2.
1.
1硬件选择选择正确的硬件配置并不总是很简单.
Microsoft提供了支持SQLServer2012安装的最低硬件需求,但它们只是表示"最低"需求,符合这些需求并不一定意味着配置是最合适的.
理想情况下,需要提供超过最低需求的硬件以满足当前和将来的资源需求.
正因如此,需要为当前资源需求创建基准,并估计将来的需求.
使硬件可以满足将来的需求不仅可以节省资金,还能够避免因为硬件升级而导致的停机时间.
为了保证平稳地进行安装,并获得可预测的性能,需要熟悉Microsoft提供的最低硬件需求,如表2-1所示.
表2-1SQLServer2012的最低硬件需求硬件需求处理器64位安装速度:1.
4GHz或更高AMDOpteron、Athlon64、IntelPentiumIV、支持IntelEM64T的Xeon32位安装速度:1.
0GHz或更高PentiumIII兼容的处理器内存1GB(Express版为512MB)存储器数据库引擎和数据文件、复制、全文搜索以及数据质量服务:811MBAnalysisServices和数据文件:345MBReportingServices和报表管理器:304MBIntegrationServices:591MB主数据服务:243MB客户端组件(除了SQLServer联机丛书组件和IntegrationServices工具以外):1823MB用于查看和管理帮助内容的SQLServer联机丛书组件:375KB第2章SQLServer2012安装最佳实践211.
处理器处理大量事务并且有大量并发连接的SQLServer2012实例可以充分利用可用的处理能力.
处理能力表现在处理器的时钟速度高、数量多.
几个稍慢的处理器的性能表现要比单个快速的处理器好.
例如,两个1.
6GHz的处理器的速度要比单个3.
2GHz的处理器更快.
新的处理器模型在一个物理插槽位置可以提供多个核心.
这些多核处理器有许多优势,包括可以节省空间和电量消耗.
多核处理器允许在同一个物理服务器内以命名实例或虚拟机的形式运行SQLServer2012的多个实例.
换句话说,在一个物理服务器上,只要硬件和许可允许,就可以运行任意数量的SQLServer2012服务器.
由于多个物理服务器可以合并到单个物理服务器中,数据中心的占用空间得以显著减少.
这种合并也使得电费大大降低,因为连接到电网的服务器数减少了.
SQLServer2012采用了基于核心的许可模型.
在这种模型中,多核处理器的每个核心都必须获得许可.
这种改变对于物理服务器和虚拟机都是适用的.
关于SQLServer2012许可模型的更多信息,请参阅第1章的1.
4.
2节"许可".
2.
内存内存是让SQLServer2012实现最佳性能的重要资源.
设计良好的数据库系统会尽可能地从内存缓冲区缓存的数据页中读取数据,从而合理利用可用内存.
SQLServer实例和操作系统都需要使用内存.
应该尽量避免在SQLServer实例所在的Windows服务器上安装内存密集型应用程序.
在决定需要多少内存时,一个不错的起点是考虑SQLServer实例中托管的每个数据库的数据页数,以及查询执行统计信息,例如典型的工作负载使用的最小、最大和平均内存.
目标应该是让SQLServer把尽可能多的数据页保存在缓存中,将尽可能多的执行计划保存在内存中,以避免从磁盘读取数据页以及编译执行计划,这些都是开销很高的操作.
另外,还需要知道具体SQLServer版本对内存的限制.
例如,SQLServer2012企业版支持多达2TB的RAM,标准版支持64GB的RAM,而Express版支持1GB的RAM.
3.
存储系统SQLServer2012实例的存储系统需要特别进行考虑,因为缓慢的存储系统可能导致数据库性能严重下降.
当为SQLServer2012数据库规划存储系统时,要考虑自己对可用性、可靠性、吞吐量和可扩展性的需求.
为测试和验证存储系统的性能,需要收集一些重要的指标信息,例如每秒最大I/O请求数(IOPS)、吞吐量(MBPS)和I/O延迟.
表2-2列出了这3个关键指标,并对它们做了简要描述.
表2-2关键存储指标指标描述每秒请求数(IOPS)存储系统在1秒内可以处理的并发请求数.
这个数字越高越好.
根据具体的配置和制造商,对于单个15krpm的SAS驱动器,通常应该为150~250IOPS;对于企业SSD和SAN,通常应该为1000~1000000IOPS吞吐量(MBPS)存储系统在1秒内可以读写的数据大小.
这个数字越高越好I/O延迟(ms)I/O操作之间的时间延迟.
这个数字最好为0或接近为0SQLServer2012管理高级教程(第2版)22通过使用一些免费的工具,如SQLIO、SQLIOSim、IOMeter和CrystalDiskMark,可以收集这些关键的指标.
关于如何使用这些工具的介绍不在本章讨论范围内,不过可以在以下网址找到介绍它们的文档:http://msdn.
microsoft.
com/en-us/library/cc966412.
aspx.
SQLServer安装中主要采用两种类型的存储系统:DAS和SAN.
直连式存储(DirectAttachedStorage,DAS)直连式存储理解起来最简单.
在这类存储系统中,磁盘驱动器位于服务器机箱内,直接连接到磁盘控制器.
它们也可以位于外部,通过缆线直接连接到主机总线适配器(HostBusAdapter,HBA)上.
并不需要使用额外的设备,例如交换机.
DAS的主要优势在于易于实施且维护成本低,主要缺点在于扩展性有限.
虽然在近年来,DAS存储系统开始具有一些原本只有高端SAN存储单元才有的功能,但是一些局限性依然是存在的,例如可以扩展到和管理的磁盘驱动器数和卷大小,可以连接到的服务器数,以及存储单位和服务器之间的距离.
服务器连接和距离是DAS和SAN的最大区别.
DAS要求存储单位与服务器之间存在直接的物理连接,这就限制了可以同时连接到的服务器数,以及存储单位和服务器之间的距离(通常只有几英尺).
存储区域网络(StorageAreaNetwork,SAN)存储区域网络是一种专用的网络,将作为直连式存储卷提供给服务器使用的存储设备相互连接起来.
这种存储设备网络的连接方式有两种:通过叫做fabric交换机的高速专用光纤通道(FibreChannel,FC),或者通过使用常规的以太网交换机的iSCSI协议.
SAN的主要优势之一是通过使用专用的广域网(WAN)和TCP/IP路由,可以跨越大片地理区域.
这就允许组织在进行灾难恢复时,在相隔遥远的数据中心之间复制数据,以及实现其他一些功能.
另外,SAN为关键任务数据系统提供了最高的可靠性和可扩展性.
与DAS相比,合理架构的SAN可以提供好得多的吞吐量,并且可以降低I/O延迟.
而且SAN可以扩展,从而处理比DAS多得多的磁盘阵列.
SAN的主要缺点在于成本更高,并且实现和维护的难度更大.
选择合适的存储系统在安装SQLServer时选择的存储系统类型取决于自己的需求.
从上面的简单比较中可以知道,DAS的成本低一些,并且配置和维护都要比SAN简单;但是,SAN在性能、可用性和可扩展性方面更好.
在选择存储系统时,一个关键的考虑因素是存储系统中使用的磁盘技术,以及这些磁盘驱动器是如何排列到一起的.
DAS和SAN都使用磁盘驱动器的阵列,并且通常把它们配置为存储池,从而可以把它们作为单个实体提供给服务器使用.
接下来将介绍不同的磁盘驱动器技术,以及如何通过RAID级别使它们形成存储池.
磁盘驱动器如前所述,支持IO需求所需的吞吐量是重要的考虑因素之一.
为了满足较大的吞吐量需求,经常需要把读写操作分散到大量转速快的磁盘驱动器上.
分散IO操作意味着在群组到一起的每个磁盘驱动器上存储少量的数据.
在这种分布式存第2章SQLServer2012安装最佳实践23储中,没有哪个磁盘驱动器包含完整的数据.
因此,一次磁盘失败意味着全部数据都会丢失.
这就是在做出关于存储系统的决策时,一定要考虑到可靠性的原因.
为了避免由于磁盘失败而导致的数据丢失,可以采用一种叫做数据阵列或RAID的特殊方法来组织磁盘,以同时满足吞吐量和可靠性需求.
选择正确的磁盘RAID级别是关键决策,这会影响到服务器的整体性能.
表2-3描述了SQLServer环境中最常用的磁盘RAID级别.
表2-3常用的RAID级别RAID级别描述RAID0也叫做条带集或条带卷.
将两个或更多个磁盘合在一起,形成单个较大的卷.
不能容错.
读写快速RAID1也叫做镜像驱动器.
将相同的数据写到两个驱动器中.
即使其中一个磁盘失败,也不会丢失数据.
写操作较慢.
只能使用原始存储空间的一半RAID1+0也叫做RAID10.
条带集中的镜像集.
写操作的性能较好,能够容错.
只能使用原始存储空间的一半RAID0+1镜像集中的条带集.
容错性比RAID1+0稍差.
写操作的性能较好RAID5能够容忍其中一个磁盘失败.
写操作被分布到各个磁盘中.
读操作较快,写操作较慢.
部分原始存储空间将无法使用RAID6能够容忍两个磁盘失败.
读操作较快,写操作比RAID5更慢,因为奇偶校验计算增加了开销.
原始存储空间的丢失情况与RAID5类似近年来,由于价格的降低和可靠性的提高,一种更快速的磁盘驱动器技术变得越来越流行,即固态磁盘驱动器(SolidStateDrive,SSD).
这种磁盘内部没有移动零件.
SSD的读写吞吐量要比转动式磁盘驱动器好100倍.
SQLServer可以从更快的读写操作中受益,尤其是那些对IO要求高的数据库.
过去几年中,SSD的采用量得以增长,部分原因在于其可靠性提高,同时价格却比原来低.
有几个SAN存储系统供应商也提供SSD驱动器阵列.
在选择存储系统时,特别是倾向于使用DAS时,另一个要考虑的关键因素是磁盘控制器.
在接下来的内容中,你将了解可以改进DAS性能和可靠性的磁盘驱动器特征.
磁盘控制器磁盘控制器是关键硬件,当使用直连式磁盘驱动器时,需要经过仔细考虑再做出选择.
磁盘控制器也有吞吐量限制,所以可能导致严重的IO瓶颈.
快速的磁盘驱动器还不足以保证快速的存储系统.
如果不正确地进行配置,磁盘控制器可能会增加额外的开销.
多数磁盘控制器都提供了设置,允许根据具体的工作负载进行配置.
例如,可以针对高事务系统配置磁盘控制器,使其针对大量的写操作进行优化.
还可以针对大量的读操作优化专门用于报表数据库系统(如数据仓库)和操作型数据存储区的磁盘控制器.
虽然SSD磁盘驱动器比转动式磁盘驱动器更加可靠,但是仍然采用RAID技术保护SSD.
SSD磁盘驱动器仍然可能受电子元件失败和损坏的影响.
SQLServer2012管理高级教程(第2版)24关于磁盘控制器的另外一个重要的考虑是写缓存.
尽管这个功能对于改善写操作的性能是很方便的,但一些意外的情况还是可能发生,比如数据丢失或数据库损坏.
磁盘控制器通过把数据临时存储到它们的缓存,并最终以批处理的形式把数据刷新到磁盘来提高写操作的性能.
当数据保存到磁盘控制器的缓存中以后,SQLServer就认为事务已经提交.
而实际上,数据还没有提交到磁盘,而只是存在于内存空间中.
如果在磁盘控制器把缓存的数据提交到磁盘之前,服务器意外宕机,那么这些数据将无法记录到数据库的事务日志中,从而导致数据丢失.
为了避免潜在的数据丢失,关键数据库环境应该考虑使用带有备用电源(如UPS)和内部磁盘控制器电池的企业级磁盘控制器.
2.
1.
2软件和安装选择规划的下一步是确保正确设置几个重要的配置选项,如数据库文件的合适位置以及建立合适的服务账户.
1.
排序规则SQLServer排序规则指定了一组用于存储、排序和比较字符的规则.
排序规则十分重要,因为它指定了使用的代码页.
不同的代码页支持不同的字符,并且在排序和比较字符串时表现不同的行为.
改变实例的排序规则是很复杂的,所以错误地设置排序规则可能迫使你重新安装SQLServer实例.
你需要理解组织和客户对数据的区域、排序、大小写和发音敏感度的需求,以确定使用哪种排序规则.
WindowsServer使用的代码页可以在"控制面板"|"区域和语言选项"中找到.
为WindowsServer选择的代码页并不一定就是SQLServer实例需要的代码页.
下面介绍了两种常用的排序规则:SQLServer排序规则和Windows排序规则.
SQLServer排序规则SQLServer排序规则影响用于在char、varchar以及text列中存储数据的代码页,还影响对这些数据类型如何进行比较和排序.
例如,如果要对有着区分大小写排序规则的数据库创建下列SELECT语句,就不会返回名为Jose(即混合大小写形式)的雇员.
SELECTFROMEmployeesWHEREEmployeeFirstName='JOSE'Results:SELECTFROMEmployeesWHEREEmployeeFirstName='Jose'Results:JoseWindows排序规则Windows排序规则使用基于为操作系统选择的Windows区域的规则.
其默认行为是比较和排序都遵循相关语言的字典采用的规则.
可指定区分二进制、大小写、发音、假名以及宽度.
关键是Windows排序规则确保单字节和双字节字符集都以相同的方式排序和比较.
第2章SQLServer2012安装最佳实践252.
区分大小写排序规则可区分大小写,也可不区分.
区分大小写意味着U和u是不同的.
排序规则应用的区域中的所有一切(指master、model、resource、tempdb以及msdb数据库)都是如此.
这也适用于这些数据库中的所有数据.
这里的要点是,考虑这些数据库中的数据实际是什么.
这包括所有系统表中的数据,意味着对象名也要区分大小写.
3.
排序顺序选择的排序规则也将影响排序.
二进制顺序(如Latin1_General_BIN)根据字符的位值进行排序;它们区分大小写.
考虑下面的SELECT语句——用于包含雇员姓名Mary、Tom、mary、tom等的表,如图2-1所示.
如果选择一种字典排序顺序(例如Latin1_General_CS_AI),那么这条语句将得到如图2-2所示的结果.
图2-1图2-24.
服务账户服务账户是安全模型的重要组成部分.
选择服务账户时,要考虑到最小特权原则.
服务账户应该只拥有执行操作需要的最少权限.
对于每个服务,应该使用单独的服务账户以单独跟踪各个服务执行的操作.
应该为服务账户设置强密码.
有下列一些服务账户可供选择:Windows账户或域账户:这是创建的活动目录或Windows账户,对于需要网络访问的SQLServer服务来说是首选的账户类型.
本地系统账户:这是一种有很高权限的账户,不应用于运行服务,因为是作为网络中的一台计算机,没有密码.
使用本地系统账户的被破坏进程也会破坏数据库系统.
本地服务账户:这是一种预配置的特殊账户,和"用户"组成员有着相同的权限.
网络访问将通过不需要凭据的空会话进行.
这是一类不受支持的账户.
网络服务账户:这个账户与本地服务账户相同,但允许网络访问,被看做计算机账户.
不要将这类账户用作SQLServer或SQL代理服务账户.
本地服务器账户:这是创建的本地Windows账户.
对于不需要网络访问的服务来说,这是最安全的方法.
对于生产系统,应该使用专用的Windows账户或域账户.
一些组织选择为所有的SQLServerSQLServer2012管理高级教程(第2版)26实例创建单个域账户,而其他组织选择为每个服务创建单独的账户.
只要服务账户使用了强密码并得到保护,使用哪种方法都可以.
2.
2安装SQLServer本节介绍不同类型的安装:全新安装、并列安装和升级安装.
你将学习如何使用图形用户界面(GUI)、命令提示符、配置文件和PowerShell脚本进行自动和手动安装.
第3章中将介绍有关升级安装的详细内容.
2.
2.
1全新安装如果服务器上没有其他SQLServer组件且具备干净的系统环境,就将执行全新安装.
检查目录和注册表,以确保是干净的系统环境,没有以前SQLServer安装的残留物.
2.
2.
2并列安装SQLServer还支持并列安装.
当服务器上有多个SQLServer实例时,就会发生并列安装.
SQLServer2012支持在一台服务器上有数据库引擎、ReportingServices和AnalysisServices的多个实例,并且还可以与以前的SQLServer版本并列运行.
如果现有实例为默认实例,那么新安装必须为命名实例,因为每台服务器上只能有一个默认实例.
并列安装最大的问题是内存争用.
要确保正确配置了内存,这样每个实例就不会试图获取全部物理内存.
如果不同实例的数据库文件共享相同的存储资源,那么IO争用也可能成为一个问题.
2.
2.
3升级安装如果服务器上已有SQLServer组件,就可升级现有实例.
在这种情况下,是在现有实例上安装SQLServer,也称为就地安装.
为了从以前的版本升级到SQLServer2012,需要在SQLServer安装中心中启动升级向导,然后使用"安装"选项卡下的"从SQLServer2005、SQLServer2008或SQLServer2008R2升级".
2.
2.
4自动安装SQLServer2012允许通过命令行参数或配置文件执行自动安装.
自动安装允许在多个服务器上以完全相同的配置安装SQLServer,安装过程基本上不需要用户交互.
屏幕上的所有选项和对话框的响应都是使用配置文件中存储的信息或命令行参数自动选择的.
使用命令行参数自动安装使用命令行安装新的SQLServer2012的步骤如下:第2章SQLServer2012安装最佳实践27(1)以提升的管理员权限启动"命令提示"窗口.
方法是右击"命令提示"窗口的可执行程序,然后从上下文菜单中选择"以管理员身份运行".
"命令提示"窗口将会打开.
(2)在命令行中,输入以下命令,然后按Enter键:D:\setup.
exe/ACTION=install/QS/INSTANCENAME="MSSQLSERVER"/IACCEPTSQLSERVERLICENSETERMS=1/FEATURES=SQLENGINE,SSMS/SQLSYSADMINACCOUNTS="YourDomain\Administrators"这个命令行脚本自动安装SQLServer数据库引擎和SQLServer基本管理工具.
表2-4描述了前面脚本中使用的每个命令行参数.
表2-4命令行参数参数描述/ACTION指定要执行的动作.
在本例中为全新安装/QS指定安装程序运行并显示安装进度,但是不接受输入,也不显示错误消息/INSTANCENAME指定必需的实例名/IACCEPTSQLSERVERLICENSETERMS使用/Q或/QS时需要使用此参数确认接受许可条款/FEATURES用于指定安装的功能的必需参数/SQLSYSADMINACCOUNTS用于指定sysadmin角色的成员的必需参数关于命令行参数的完整列表,请访问以下网址:http://msdn.
microsoft.
com/en-us/library/ms144259(v=sql.
110).
aspx.
使用配置文件自动安装在默认情况下,SQLServer2012安装程序会创建一个配置文件,用于记录在安装过程中指定的选项和参数值.
这个配置文件可以为验证和审核提供帮助,对于使用相同配置部署额外的SQLServer安装特别有用.
创建配置文件的步骤如下:(1)从SQLServer2012安装媒体中启动Setup.
exe.
SQLServer的安装程序将会启动.
(2)为SQLServer2012安装指定选项和参数.
在完成"安装向导"的过程中,指定的所有选项和值将会记录在配置文件中.
(3)按照"安装向导"的提示进行设置,直到进入"准备安装"屏幕,如图2-3所示.
安装路径因安装媒体而异.
而且根据要安装的功能,参数也可能发生变化.
另外,还要将/SQLSYSADMINACCOUNTS的值设为有效的域名和用户账户.
SQLServer2012管理高级教程(第2版)28图2-3在图2-3中,注意ConfigurationFile.
ini文件的路径.
到现在,配置文件已被创建,在前面的向导页面中指定的所有选项和参数值都已被记录.
(4)打开Windows资源管理器,导航到配置文件所在的文件夹.
单击"取消"按钮,停止SQLServer2012安装向导.
(5)找到ConfigurationFile.
ini文件,将其复制到自动安装过程中可以引用的文件夹中.
例如,使用共享文件夹\\fileserver\myshare.
(6)打开ConfigurationFile.
ini文件并进行如下修改,以便为自动安装准备好文件:设置QUIET="True"设置SQLSYSADMINACCOUNTS="YourDomain\Administrators"设置IACCEPTSQLSERVERLICENSETERMS="True"删除ADDCURRENTUSERASSQLADMIN删除UIMODE在为自动安装定制好配置文件后,使用命令提示符执行Setup.
exe,指定配置文件的路径.
下面的命令行脚本演示了这种语法:D:\Setup.
exe/ConfigurationFile=\\fileserver\myshare\ConfigurationFile.
ini使用PowerShell进行脚本安装还可以使用PowerShell执行自动安装.
编写简单的PowerShell脚本,通过其命令行界面执行SQLServer2012安装程序.
例如,可以像下面这样,在其命令行中执行刚才使用过的命令行脚本:$cmd="d:\setup.
exe/ACTION=install/Q/INSTANCENAME="MSSQLSERVER"/IACCEPTSQLSERVERLICENSETERMS=1/FEATURES=SQLENGINE,SSMS第2章SQLServer2012安装最佳实践29/SQLSYSADMINACCOUNTS="YourDomain\Administrators";Invoke-Expression-command$cmd|out-null;针对大型的SQLServer2012部署,可以编写更加复杂的PowerShell脚本.
常见的一种方法是使用接受执行自动安装所需的安装参数的PowerShell函数.
然后,这些PowerShell函数将以批处理的形式执行,或者在遍历具有对应参数的服务器名列表的进程中执行.
例如,可以在PowerShell脚本文件中保存PowerShell函数,然后用安装参数来调用这个函数以执行大规模的SQLServer2012自动部署.
程序清单2-1给出了一个PowerShell函数的示例,它可以用于SQLServer2012自动安装.
程序清单2-1Install-Sql2012.
ps1FunctionInstall-Sql2012{param([Parameter(Position=0,Mandatory=$false)][string]$Path,[Parameter(Position=1,Mandatory=$false)][string]$InstanceName="MSSQLSERVER",[Parameter(Position=2,Mandatory=$false)][string]$ServiceAccount,[Parameter(Position=3,Mandatory=$false)][string]$ServicePassword,[Parameter(Position=4,Mandatory=$false)][string]$SaPassword,[Parameter(Position=5,Mandatory=$false)][string]$LicenseKey,[Parameter(Position=6,Mandatory=$false)][string]$SqlCollation="SQL_Latin1_General_CP1_CI_AS",[Parameter(Position=7,Mandatory=$false)][switch]$NoTcp,[Parameter(Position=8,Mandatory=$false)][switch]$NoNamedPipes)#Buildthesetupcommandusingtheinstallmodeif($Path-eq$null-or$Path-eq""){#Nopathmeansthatthesetupisinthesamefolder$command='setup.
exe/Action="Install"'}else{#Ensurethatthepathendswithabackslashif(!
$Path.
EndsWith("\")){$Path+="\"}$command=$path+'setup.
exe/Action="Install"'}#Acceptthelicenseagreement-requiredforcommandlineinstalls$command+='/IACCEPTSQLSERVERLICENSETERMS'#UsetheQuietSimplemode(progressbar,butnotinteractive)$command+='/QS'#Setthefeaturestobeinstalled$command+='/FEATURES=SQLENGINE,CONN,BC,SSMS,ADV_SSMS'SQLServer2012管理高级教程(第2版)30#SettheInstanceName$command+=('/INSTANCENAME="{0}"'-f$InstanceName)#SetLicenseKeyonlyifavaluewasprovided,#elseinstallEvaluationeditionif($LicenseKey-ne$null-and$LicenseKey-ne""){$command+=('/PID="{0}"'-f$LicenseKey)}#Checktoseeifaserviceaccountwasspecifiedif($ServiceAccount-ne$null-and$ServiceAccount-ne""){#Setthedatabaseengineserviceaccount$command+=('/SQLSVCACCOUNT="{0}"/SQLSVCPASSWORD="{1}"/SQLSVCSTARTUPTYPE="Automatic"'-f$ServiceAccount,$ServicePassword)#SettheSQLAgentserviceaccount$command+=('/AGTSVCACCOUNT="{0}"/AGTSVCPASSWORD="{1}"/AGTSVCSTARTUPTYPE="Automatic"'-f$ServiceAccount,$ServicePassword)}else{#SetthedatabaseengineserviceaccounttoLocalSystem$command+='/SQLSVCACCOUNT="NTAUTHORITY\SYSTEM"/SQLSVCSTARTUPTYPE="Automatic"'#SettheSQLAgentserviceaccounttoLocalSystem$command+='/AGTSVCACCOUNT="NTAUTHORITY\SYSTEM"/AGTSVCSTARTUPTYPE="Automatic"'}#SettheserverinSQLauthenticationmodeifSApasswordwasprovidedif($SaPassword-ne$null-and$SaPassword-ne""){$command+=('/SECURITYMODE="SQL"/SAPWD="{0}"'-f$SaPassword)}#AddcurrentuserasSysAdmin$command+=('/SQLSYSADMINACCOUNTS="{0}"'-f[Security.
Principal.
WindowsIdentity]::GetCurrent().
Name)#Setthedatabasecollation$command+=('/SQLCOLLATION="{0}"'-f$SqlCollation)#Enable/DisabletheTCPProtocolif($NoTcp){$command+='/TCPENABLED="0"'}else{$command+='/TCPENABLED="1"'}#Enable/DisabletheNamedPipesProtocolif($NoNamedPipes)第2章SQLServer2012安装最佳实践31{$command+='/NPENABLED="0"'}else{$command+='/NPENABLED="1"'}if($PSBoundParameters['Debug']){Write-Output$command}else{Invoke-Expression$command}}从Wrox的网站下载了程序清单2-1的代码后,将其保存到一个文件夹中,例如c:\scripts.
因为这是从Internet上下载的文件,所以可能需要右击该文件并选择"属性",在打开的对话框中选择"解除锁定"命令.
下载完该文件后,按照以下步骤执行此函数:(1)使用提升的管理员权限启动PowerShell命令行.
方法是右击PowerShell可执行文件,然后选择"以管理员身份运行".
PowerPoint命令行将会打开.
(2)确认自己可以运行和加载未签名的PowerShell脚本和文件.
在PowerShell命令行中,输入get-executionpolicy来确认当前的执行策略.
如果执行策略不是RemoteSigned,就需要执行下面的命令以将其设为这个值:Set-ExecutionPolicyRemoteSigned(3)接下来,执行下面的命令来加载脚本文件中的PowerShell函数:.
c:\scripts\Install-Sql2012.
ps1注意脚本文件路径前面的点号和空格.
点号和空格是使用点号访问脚本文件所必需的.
(4)执行下面的命令来确认函数已被加载:get-commandInstall-Sql2012执行命令后将返回单独的一行结果,其中显示了CommandType为Function,Name为Install-Sql2012.
(5)现在,可以调用刚才加载的PowerShell函数了.
调用Install-Sql2012的命令如下:Install-Sql2012-Param1Param1Value-Param2Param2Value.
.
(6)例如,下面的命令调用了Install-Sql2012函数,并设置了SQLServer服务账户、密码以及实例名,还启动了SQLServer2012安装:Install-Sql2012-Pathd:\-ServiceAccount"winserver\Administrator"-ServicePassword"P@ssword"-SaPassword"P@ssword"-InstanceName"MyInstanceName"SQLServer2012管理高级教程(第2版)32图2-4显示了PowerShell命令行窗口,以及调用Install-Sql2012函数的必要步骤.
图2-42.
2.
5手动安装最简单、最常见的SQLServer部署方式是使用安装向导提供的GUI进行手动安装.
手动安装需要用户频繁参与,以提供完成SQLServer2012安装所需的信息和参数值.
执行以下步骤来完成SQLServer2012的手动安装:(1)从SQLServer2012安装媒体中启动Setup.
exe.
"SQLServer安装中心"将会打开,如图2-5所示.
图2-5SQLServer2012的安装路径可能随安装媒体的不同发生变化.
在Codeplex.
com上可以下载由社区创建的项目SPADE,该项目使用PowerShell自动完成SQLServer的安装.
第2章SQLServer2012安装最佳实践33(2)单击左侧的"安装"选项卡,然后单击右侧的第一个选项,其标题为"全新SQLServer独立安装或向现有安装添加功能".
SQLServer2012安装向导将会启动.
(3)安装程序支持规则将会运行,以识别在安装程序支持文件的安装过程中可能发生的问题.
完成这个步骤后,单击"确定"按钮.
"安装安装程序文件"进程将会启动.
(4)在安装程序文件安装完成后,还需要检查另外一组安装支持文件.
单击"下一步"按钮继续.
(5)对于某些安装媒体和许可协议,可能需要选择SQLServer的版本,并在下一个屏幕中输入产品密钥.
单击"确定"按钮继续.
(6)"许可条款"屏幕将会打开.
接受许可条款,然后单击"下一步".
(7)"设置角色"屏幕将会打开.
选择"SQLServer功能安装"选项,然后单击"下一步".
(8)"功能选择"屏幕将会打开.
选中"数据库引擎服务"和"管理工具-基本"选项,然后单击"下一步".
图2-6显示了SQLServer2012中可以安装的功能列表.
(9)"安装规则"屏幕将会打开,以判断是否存在可能阻止安装的问题.
单击"下一步".
(10)"实例配置"屏幕将会打开.
在这个屏幕中,可以决定将实例作为默认实例或命名实例来安装.
还可以提供实例ID以及改变默认根目录.
单击"下一步".
图2-6(11)"磁盘空间要求"屏幕将会打开,显示所选功能占用空间的摘要.
单击"下一步".
(12)"服务器配置"屏幕将会打开.
提供运行SQLServer数据库引擎、SQLServer代理和SQLServerBrowser的服务账户,以及SQLServer2012使用的排序规则.
单击"下一步".
图2-7显示了"服务器配置"屏幕.
SQLServer2012管理高级教程(第2版)34图2-7(13)"数据库引擎配置"屏幕将会打开.
在这里指定身份验证模式、SQLServer管理员和默认的数据目录,并启用FILESTREAM.
在这个屏幕中至少指定一个拥有SQLServer管理员权限的账户是很重要的,而且需要在这个屏幕中将身份验证模式指定为"Windows身份验证模式"或"混合模式".
如果选择"Windows身份验证模式",那么只有经过身份验证的Windows账户可以登录;如果选择"混合模式",那么Windows账户和SQLServer账户都可以登录.
单击"下一步".
(14)"错误报告"屏幕将会打开.
单击复选框,选择将错误报告发送给Microsoft.
单击"下一步".
(15)"安装配置规则"屏幕将会打开.
当"安装配置规则"完成扫描后,单击"下一步".
(16)"准备安装"屏幕将会打开.
此时,安装向导已经收集了所有必要的信息,并且在启动安装过程之前把它们显示出来,以便进行检查.
单击"安装"按钮启动安装.
这就完成了SQLServer2012的手动安装过程.
作为一种安全最佳实践,在选择服务账户时一定要考虑遵守最小特权原则.
只要有可能,就应该避免分配在域或服务器中拥有提升权限的服务账户.
不要将SA账户的密码留空.
一定要为之指定强密码,并在安装完成后禁用该账户,以避免针对这个众所周知的账户的安全攻击.
Microsoft专门为SQLServer2012提供了一些示例数据库,供用户下载使用.
从Codeplex.
com上可以免费下载这些示例数据库和示例项目文件,网址为http://msftdbprodsamples.
codeplex.
com/.
第2章SQLServer2012安装最佳实践352.
3安装AnalysisServicesSQLServerAnalysisServices的安装过程很简单.
可以随其他SQLServer2012功能和服务一起安装,也可以单独安装,如图2-8所示.
图2-8SQLServer2012中的新增之处是允许以两种方式安装AnalysisServices:多维和数据挖掘模式(UDM模式)表格模式这两个模式是在SQLServer2012安装程序的"AnalysisServices配置"屏幕中选择的,如图2-9所示.
图2-9SQLServer2012管理高级教程(第2版)36下面将简要描述AnalysisServices的这两种安装模式.
2.
3.
1多维和数据挖掘模式(UDM模式)AnalysisServices的多维和数据挖掘模式(UDM模式)安装自SQLServer2005以来就可用的传统的AnalysisServices.
这个引擎基于统一维度模型(UnifiedDimensionalMode,UDM).
UDM作为一个或更多个数据源之间的中间层,可以合并所有的业务规则.
作为多维模型的中心,UDM使用户能够查询、聚合、深化AnalysisServices数据库以及对AnalysisServices数据库执行切片和切块操作,并且操作的响应时间十分快速.
AnalysisServices的UDM模式支持接下来将要描述的MOLAP、ROLAP和HOLAP存储和处理模式.
1.
MOLAP(多维OLAP)在MOLAP存储模式中,数据存储和聚合在多维数据库的一个或更多个分区中.
这种存储模式可以最大化查询性能.
使用MOLAP存储模式存储的数据是自上一次处理后的数据.
2.
ROLAP(关系OLAP)在ROLAP存储模式中,数据没有存储到AnalysisServices数据库中.
如果查询缓存不能满足查询,那么查询将使用内部索引视图从关系型数据源检索数据.
在这种模式下,查询时间比MOLAP更慢,但是数据则更新,与源事务系统是同步的.
3.
HOLAP(混合OLAP)在HOLAP存储模式下,多维数据库的一部分数据存储在MOLAP中,一部分则直接从其关系型数据源检索.
访问聚合程度高的数据的查询由其多维存储满足,这与MOLAP模式一样.
深化查询则直接从其关系型数据源检索,这与ROLAP一样.
2.
3.
2表格模式AnalysisServices的表格模式基于如下新的数据库引擎:VertiPaq引擎.
VertiPaq是一种基于列的数据库,由于对存储离散值的需求降低,并且采用了更先进的压缩算法,因此能够提供很高程度的压缩.
压缩大量数据的能力使VertiPaq引擎能够以比传统的基于磁盘的AnalysisServices引擎更快的速度存储、检索和操纵RAM中的数据.
表格模式支持一种新的语义模型,叫做商业智能语义模型(BusinessIntelligenceSemanticModel,BISM).
其开发环境与Excel的PowerPivot加载项类似.
Excel的PowerPivot加载项运行的是AnalysisServices表格模式使用的VertiPaq引擎的简化版本.
与传统的AnalysisUDM引擎类似,AnalysisServices表格模式支持从内存的存储区中查询,直接从关系型数据源查询,或者混合使用两者.
这些查询模式选项可以通过BISM模型属性选择.
4种可用的查询模式选项包括:VertipaqDirectQuery第2章SQLServer2012安装最佳实践37InMemorywithDirectQueryDirectQueryWithInMemory接下来就介绍这4种查询模式选项.
1.
Vertipaq查询模式在Vertipaq查询模式下,数据存储在内存的存储数据集中,并从这些存储数据集中进行查询.
磁盘IO的延迟开销被最小化甚至消除,所以这种模式几乎没有延迟.
因为访问的是位于内存中的数据集,所以复杂的计算和排序操作几乎是立刻完成的.
Vertipaq查询模式与传统的AnalysisServices引擎的MOLAP存储相似,它们都保存时间点(Point-In-Time,PIT)数据.
如果关系型数据源中的数据发生变化,就需要使用新的数据集刷新内存中的存储区.
2.
DirectQuery查询模式DirectQuery模式也叫做穿透模式.
在这种模式下,查询由其数据源处理,通常是关系数据库.
与Vertipaq查询模式相比,DirectQuery查询模式的优势在于能够提供大型数据卷的实时数据集,而这些数据卷是不适合放到内存中的.
3.
InMemoryWithDirectQueryMode查询模式在这种查询模式下,查询默认使用存储在缓存中的数据集,除非客户端的连接字符串另有指定.
这种模式支持客户端切换为使用实时数据.
4.
DirectQueryWithInMemoryMode查询模式与InMemoryWithDirectQueryMode模式相反,除非客户端的连接字符串另有指定,否则查询默认使用关系型数据源.
这种模式支持客户端切换为使用缓存数据.
2.
4安装PowerPivotforSharePointPowerPivotforSharePoint模式是自SQLServer2008R2以来就可用的一种角色选项.
PowerPivotforSharePoint选项安装新的AnalysisServicesVertipaq引擎的一个版本,以支持发布到SharePoint2010的PowerPivot工作簿的服务器端处理和管理.
要将PowerPivotforSharePoint安装到一台服务器上,该服务器必须连接到域,并且该服务器上必须安装了PowerPivot2010EnterprisewithServicePack1,实例名PowerPivot必须可用.
安装PowerPivotforSharePoint的步骤如下:(1)从SQLServer2012安装媒体中启动Setup.
exe.
安装中心将会打开.
(2)单击左侧的"安装"选项卡,然后单击右侧的第一个选项"全新SQLServer独立安装或向现有安装添加功能".
SQLServer2012安装向导将会打开.
(3)安装程序支持规则将会运行,以识别在安装程序支持文件的安装过程中可能发生的问题.
完成这个步骤后,单击"确定"按钮.
"安装安装程序文件"进程将会启动.
(4)在安装程序文件安装完成后,还需要检查另外一组安装支持文件.
单击"下一步"按钮继续.
SQLServer2012管理高级教程(第2版)38(5)对于某些安装媒体和许可协议,可能需要选择SQLServer的版本,并在下一个屏幕中输入产品密钥.
单击"确定"按钮继续.
(6)"许可条款"屏幕将会打开.
接受许可条款,然后单击"下一步".
(7)"设置角色"屏幕将会打开.
选择"SQLServerPowerPivotforSharePoint"选项.
单击该选项下方的复选框,还可以在这次安装中安装SQLServer数据库服务的实例,如图2-10所示.
图2-10(8)单击"下一步".
"功能选择"屏幕将会打开.
其中的选项已被预先选中并显示出来.
(9)单击"下一步".
"安装规则"屏幕将会打开,以判断是否存在可能阻止安装的问题.
单击"下一步".
(10)"实例配置"屏幕将会打开.
实例名是不能修改的,只能是PowerPivot.
能够修改的只有实例ID.
单击"下一步".
(11)"磁盘空间要求"屏幕将会打开,显示所选功能占用空间的摘要.
单击"下一步".
(12)"服务器配置"屏幕将会打开.
在这个屏幕中提供运行AnalysisServices引擎的服务账户.
必须使用域账户.
单击"下一步".
(13)"AnalysisServices配置"屏幕将会打开.
在这个屏幕中添加需要AnalysisServices实例的管理员权限的域账户.
(14)单击"下一步",直到进入"准备安装"屏幕.
检查安装摘要页面,然后单击"安装".
这样就最终完成了PowerPivotforSharePoint的安装.
2.
5系统压力测试在将系统投入正常使用前,应对其进行压力测试.
通常,已投入生产运行数月或数年的服务器总是存在问题,而这些问题在部署服务器时就已存在.
许多故障在服务器负载较轻时不会第2章SQLServer2012安装最佳实践39显现,而当服务器负载较高时就会立即突现.
有几个免费的工具可以对数据库服务器进行压力测试,以确保存储系统已经准备好处理必要的IO工作负载、内存压力和对CPU处理能力的需求.
下面列出了几个这样的工具:SQLIOSim:Microsoft设计的免费工具,用于生成类似的SQLServerIO读写模式.
这个工具对于测试IO密集型操作(如DBCCCHECKDB和批量插入、删除和更新操作)意义重大.
SQLIOSim替换了SQLIOStress,从以下网址可以下载SQLIOSim:http://support.
microsoft.
com/kb/231619.
IOMeter:另外一个运行压力测试的免费工具,能够模拟并发应用程序工作负载.
Prime95:这个免费工具被设计用于找出梅森素数,这是一种CPU和RAM密集型操作.
可以定制该工具,对CPU和内存的工作负载进行长时间的压力测试.
在网上还可以搜索找到其他一些免费和付费的应用程序来执行最初的压力测试.
一些服务器和服务器组件制造商也提供了工具来对设备进行基准测试和压力测试.
2.
6安装后的配置在安装了SQLServer2012以后,需要配置额外的一些设置,并完成必要的任务以得到一台能够投入生产的服务器.
其中,一些设置用于调优SQLServer实例来获得最佳性能,如最大服务器内存、并行度阈值和网络数据包大小.
其他一些设置和任务则用于保护、审核和监控SQLServer实例,如改变默认端口、登录审核和禁用SA账户.
2.
6.
1配置SQLServer设置以实现高性能SQLServer2012提供了一些可以针对特定的环境和工作负载模式进行优化的系统设置.
接下来就讨论一些最重要的性能设置.
1.
内存最大和最小服务器内存是两个重要的服务器属性设置.
SQLServer的默认配置是最小内存为0MB,最大内存为2147483647MB(2TB),如图2-11所示.
图2-11SQLServer2012管理高级教程(第2版)40保留这两个设置的默认值的后果有时候会被误解,并且经常会被忽视.
最小服务器内存设置指定了在分配后,SQLServer不会返回给操作系统的内存量.
换句话说,即使不再需要这部分最小内存,SQLServer也仍然会保持占有它们.
最小服务器内存设置一般不用改变,除非操作系统不断为共享相同内存空间的其他应用程序请求内存资源.
应该避免向操作系统系统释放太多内存,因为这可能导致SQLServer实例缺少足够的内存资源.
另一方面,最大服务器内存为SQLServer实例可以分配的内存量设置了最大限制.
把这个值设置得太高可能会使操作系统没有足够的内存资源可用.
最大服务器内存值不应等于或超过总的可用服务器内存,至少应该比总的服务器内存小1GB.
2.
网络数据包大小SQLServer2012的默认网络数据包大小为4096字节.
将数据包的大小设置得比默认值高可以改进需要执行大量批量操作和传输大量数据的SQLServer实例的性能.
如果服务器的硬件和网络基础设施支持并启用了JumboFrames,那么最好把网络数据包的大小增加为8192.
3.
即时文件初始化每当数据库文件被创建或需要增长时,操作系统就会用0填充数据库文件,然后新的空间才可被写入.
由于在0填充完成之前,所有的写操作都会被阻塞,因此这个操作的开销可能很大.
为了避免这类阻塞和等待,可以启用即时文件初始化.
具体方法是将SQLServer服务账户添加到服务器的"安全性设置"的"本地策略"的"用户权限管理"下的"执行大量维护任务"策略的用户列表中.
2.
6.
2tempdbtempdb是最重要的系统数据库之一,需要特别考虑和计划.
与过去相比,tempdb承担了更多的责任.
tempdb以前只用于内部进程,如建立索引和存储表变量,以及作为编程人员的临时存储空间.
下面列出了tempdb的部分用途:用触发器批量加载公共表表达式DBCC操作事件通知索引重建,包括SORT_IN_TEMPDB、分区索引排序以及联机索引操作大型对象类型变量和参数多活动结果集操作查询通知行版本控制一个常见的误解是SQLServer在启动后会立即分配达到最小内存量的内存.
实际上,只有在收到请求时,SQLServer才会分配内存,分配的内存可能会、也可能不会达到指定的最小服务器内存值.
第2章SQLServer2012安装最佳实践41ServiceBroker对于大量使用tempdb的环境,创建额外的tempdb文件可以显著提升性能.
根据工作负载,可以考虑创建与每个逻辑CPU成正比的大量tempdb文件,使SQLServer计划程序工作线程可以松散对齐到某个文件.
一般来说,可接受的tempdb文件与逻辑CPU的比率在1:2到1:4之间.
在极端情况下,可能想要为每个CPU创建tempdb文件(1:1).
确定应该创建多少个tempdb文件的唯一方式是进行测试.
tempdb的位置十分重要.
tempdb文件应该与数据库文件和日志文件分隔开,以避免出现IO争用.
如果使用了多个tempdb文件,那么可以考虑将每个tempdb文件隔离到自己的LUN和物理磁盘上.
大小合适的tempdb对于优化整体性能十分关键.
考虑将tempdb的初始大小设为不同于默认值的值,以避免昂贵的文件增长.
预先分配的空间取决于预期的工作负载和在SQLServer实例中启用的功能.
估计tempdb初始大小的一种好方法是分析在典型的工作负载中执行的查询的查询计划.
在查询计划中,查询操作符(如排序、哈希匹配和后台打印)能够为计算大小需求提供重要的信息.
为了估计每个操作符所需的空间,可以查看操作符报告的行数和行大小.
为了计算所需的空间,可以将实际(或估计)的行数乘以估计的行大小.
虽然这种方法并不精确,但是却可以提供不错的参考.
只有经验和测试才能保证更精确的大小设置.
model和用户数据库model数据库是最常被忽视的系统数据库,是所有用户数据库的模板.
换句话说,model数据库的所有数据库设置都会被SQLServer数据库实例中每个新创建的数据库继承.
设置model数据库的初始大小、自动增长和恢复模型设置确保了新创建的所有用户数据库都会被恰当地配置,从而优化性能.
设置的初始数据库大小应该足以处理在足够长的时间段内预计发生的事务量.
关键是要避免频繁地增加数据库的大小.
当最初分配的空间不能满足数据库的需要时,通过启用自动增长数据库设置可以让其自动增加大小.
尽管应启用自动增长功能,但该功能很昂贵且耗时.
可将自动增长作为一种紧急情况下的操作.
如果启用了自动增长,就应选择足够大的文件大小增量,以避免频繁进行自动增长操作.
2.
6.
3针对安全配置SQLServer设置通过优化SQLServer2012提供的一些系统设置,可以得到可控程度更高、更加安全的环境.
接下来将讨论一些最重要的安全设置.
1.
SA账户SysAdmin(SA)账户是默认的系统账户,在SQLServer中拥有顶级权限.
这是一个广为人知绝不应该打开自动收缩数据库设置或对数据库计划收缩操作.
数据库收缩操作会导致大量等待和阻塞,消耗大量CPU、内存和IO资源,并增加碎片量.
SQLServer2012管理高级教程(第2版)42的账户,所以是大量攻击的目标.
为了避免遭受这种攻击,应该为SA账户指定只有你自己知道的强密码,并且从不使用该密码.
将这个密码束之高阁,然后禁用SA账户.
2.
TCP/IP端口SQLServer默认使用TCP/IP端口1433来与客户端通信,而SQLServer命名实例则在服务启动时被动态分配TCP/IP端口.
为了预防黑客和进行防火墙配置,可能需要修改默认端口,并控制SQLServer命名实例在通信时使用的端口号.
SQLServer2012中包含了叫做"SQLServer配置管理器"的工具(本节稍后将更详细介绍),用于管理SQLServer服务和相关的网络配置.
在"开始"菜单的"MicrosoftSQLServer2012"|"配置工具"文件夹下可以找到SQLServer配置管理器.
图2-12显示了SQLServer配置管理器的"TCP/IP属性"对话框,在这里可以修改默认的1433端口.
图2-123.
服务补丁和更新在全新安装SQLServer实例后,必须检查可用更新.
SQLServer更新的形式可能是修补程序、累计更新和服务补丁.
在应该更新之前,应仔细检查所有更新,以免它们对应用程序产生负面影响.
被标记为"关键"的安全补丁是一定要安装的,它们可以防止数据库系统遭受已知的威胁、蠕虫和漏洞的损害.
在SQLServer生产实例中不要启用自动更新.
在把更新应用到生产实例之前,应该在受控的测试环境中测试所有的更新.
4.
其他的SQLServer设置通过SQLServerManagementStudio和sp_configure系统存储过程,还可以配置其他一些SQLServer设置和属性.
关于sp_configure系统存储过程可以配置的所有SQLServer配置选项的完整列表及描述,第2章SQLServer2012安装最佳实践43可以访问以下网址:http://msdn.
microsoft.
com/en-us/library/ms188787(v=sql.
110).
aspx.
第4章将详细介绍SQLServer配置.
2.
6.
4BestPracticesAnalyzer(BPA)MicrosoftSQLServer2012BestPracticesAnalyzer(BPA)是一个免费的诊断工具,可以收集关于已安装SQLServer2012实例的信息,判断配置是否符合推荐的最佳实践,列出不符合推荐的最佳实践的设置,指出潜在的问题,并推荐相应的解决方案.
BPA可以帮助识别SQLServer2012安装的潜在问题.
在服务器进入生产环境以前就捕获配置问题是最好的,这可以防止出现意外的宕机.
从以下网址可以下载SQLServer2012的BestPracticesAnalyzer:http://technet.
microsoft.
com/en-us/sqlserver/bb671430.
2.
6.
5SQLServer配置管理器SQLServer配置管理器用于指定SQLServer服务选项,以及这些服务在Windows启动后是自动启动还是手动启动.
SQLServer配置管理器允许配置服务账户、网络协议和SQLServer监听的端口等服务设置.
SQLServer配置管理器可以在"开始"|"所有程序"|"MicrosoftSQLServer2012"|"配置工具"文件夹下找到.
另外,也可以在"计算机管理"控制台的"服务和应用程序"下找到.
2.
6.
6备份完成SQLServer安装后,就应该检查备份计划.
必须为系统和用户数据库定义备份计划和备份的存储位置.
另外,如果使用了加密,那么还要备份加密密钥.
总是应该在共享网络驱动器或备份设备上创建备份文件,而不应该在被备份的服务器上进行备份.
可以考虑保持备份的冗余副本,并保证备份是安全的,在发生灾难情况时可以立即使用.
数据库应该以完全或增量方式备份.
取决于数据库恢复模式日志,备份也应该是备份计划的一部分,以便在必要时可以从日志中恢复.
更多细节请参阅第17章.
定义备份保持策略以避免存储不必要的历史备份.
定期还原备份,保证它们在任意时刻都能够成功还原,以免在发生灾难时出现不能还原的情况.
记住,好的备份与恢复同等重要.
2.
7卸载SQLServer在一些情况下,由于出现了一些问题(例如与新版本不兼容),或者要进行许可合并,需要彻底卸载SQLServer实例.
使用"控制面板"的"程序和功能"选项可以卸载SQLServer.
在卸载过程中,可以选择删除为特定实例安装的全部或部分功能.
如果安装了多个实例,卸载进程会提示选择想要删除的实例.
在安装程序中安装的某些额外的组件和需求可能不会被卸载,此时需要单独卸载它们.
SQLServer2012管理高级教程(第2版)442.
7.
1卸载ReportingServices在卸载ReportingServices时,需要手动清除一些项,本节将介绍这些项.
但在卸载前需要收集一些信息.
确保知道ReportingServices实例使用了哪些数据库.
可通过ReportingServices配置工具获得这些信息.
通过运行SQLServer配置管理器以了解ReportingServices实例安装在哪个目录下.
还需要知道ReportingServices统计和日志文件使用哪个目录.
卸载ReportingServices并不会删除ReportServer数据库.
必须手动删除它们,否则新的ReportingServices实例就可以重用它们.
2.
7.
2卸载AnalysisServices卸载AnalysisServices也需要做一些手动清除工作.
在卸载前总是要收集一些信息.
通过运行SQLServer配置管理器以确定AnalysisServices实例安装在哪个目录下.
尽管正常的卸载过程未保留任何数据库,但保留了所有AnalysisServices日志文件.
默认位置是AnalysisServices安装目录或在前面看到的其他位置.
要删除它们,只要删除适当的目录即可.
2.
7.
3卸载SQLServer数据库引擎和其他服务一样,在卸载SQLServer数据库引擎时,不会删除日志文件.
要删除它们,只须删除适当的目录.
可能需要单独删除MSSQLServerNativeClient,并且可能发现一些目录会被保留下来,需要手动删除.
如果机器上没有其他SQLServer实例,就不必单独删除100目录,而是可以删除ProgramFiles下的整个MSSQLServer目录.
.
NETFramework也仍会留在机器上.
要删除它,可通过"控制面板"的"程序和功能"选项,但要确保没有其他应用程序正在使用它.
2.
8故障排除失败安装安装失败最常见的原因是安装程序支持规则和安装规则失败.
在安装时,会检查一系列规则以识别可能阻止SQLServer成功安装的问题.
当检测到规则失败时,必须进行纠正,然后才能继续安装.
在手动安装过程中,总是会提供规则错误报告的链接和描述,并且会生成错误日志文件以供以后查看.
发生失败时,总是会生成详尽的报告,它们为确认问题的根源提供了宝贵的信息.
很多时候,通过安装缺少的功能或应用程序就可以解决这些失败.
从%ProgramFiles%\MicrosoftSQLServer\110\SetupBootstrap\Log文件夹中可以找到错误报告.
每次安装尝试都会生成带有时间戳的文件夹,详细的安装信息将保存到该文件夹下的日志文件中.
该日志文件可以帮助对任何错误进行故障排除.
关于安装过程中生成的日志文件的完整列表和描述,可以访问网址:http://msdn.
microsoft.
com/en-us/library/ms143702(v=sql.
110).
aspx.
第2章SQLServer2012安装最佳实践452.
9小结可以看到,SQLServer2012的安装过程一般很简单,并且只需要很少用户参与就可以完成.
在安装前进行规划是成功部署的关键.
成功的SQLServer2012安装始于良好的规划和对需求的准确定义.
这些需求应该定义了硬件和软件需求、安装条件、身份验证、排序规则、服务账户、文件位置等.
完成安装程序向导并不意味着SQLServer2012安装就结束了.
在安装后还需要执行一些任务,可能需要修改多个默认的配置设置,例如最大内存、并行度阈值、TCP/IP端口、补丁等.
可以使用SQLServerManagementStudio和SQLServer配置管理器来修改这些默认配置选项.
还需要对数据库服务器进行压力测试,以免在高负载下出现意外行为.
如果要进行升级,第3章将提供一些很好的建议.
升级到SQLServer2012的最佳实践本章主要内容:升级计划停止支持和弃用的功能选择更新方法升级后的注意事项第2章介绍了执行SQLServer2012全新安装的过程,而本章将讨论升级以前的SQLServer版本.
成功升级的最佳策略是提前做好计划和准备.
首先将说明升级到SQLServer2012的原因,然后讨论各种升级策略的优缺点,并学习可帮助在升级过程中减小风险的各种工具.
接着将介绍SQLServer2012的行为变化以及在升级前需要知道的不再支持的功能.
然后探讨了在升级后可能遇到的一些问题.
相信到本章结束时,读者将具备成功升级到SQLServer2012所需要掌握的一切技能.
3.
1升级到SQLServer2012的原因本书将介绍SQLServer2012中的重要改进.
在开发周期中,要考虑到这个产品的3个核心关注点:对关键任务的信心、对技术有突破性见解和使客户能够方便地使用云服务.
随着SQLServer2012的发布,Microsoft在可扩展性、可靠性、可用性以及安全性方面新增了大量功能.
这些新功能带来的好处如下:通过AlwaysOn实现更有效的高可用性和灾难恢复支持列存储索引内置的加密功能通过使用WindowsServerCore而减少操作系统补丁3第章SQLServer2012管理高级教程(第2版)48新的压缩功能可以提高I/O操作的速度组有了默认架构所有版本都能使用SQLServer审核功能被包含的数据库身份验证用户定义的服务器角色3.
1.
1减少风险——微软的贡献和SQLServer之前的所有版本一样,SQLServer团队采取了额外的措施来确保SQLServer2012的高品质.
软件工程周期中的特定措施超出了本书的范围,但本节还是会介绍有关每日构建过程的被认为是公共常识的几点内容.
如今,每日构建过程生产的x86、x64和安腾版本的SQLServer2012代码经过了大量测试.
这个过程不仅用于新版本的开发,还用于开发SQLServer2012服务补丁.
这些测试是内部构建测试、客户工作负载和可信任计算过程的汇总.
微软研究院(MicrosoftResearch)不断地为Microsoft的产品带来创新.
在软件开发方面,微软研究院团队主要致力于软件工程和测试过程.
他们改进测试装置,并在多个方面进行增强,包括威胁建模、测试效率以及渗透分析.
另外,许多客户工作负载也是软件测试过程的一部分.
这些工作负载都通过一些程序(如客户重放计划)和不同的实验室(包括SQLServer2012兼容性实验室)获得.
每日构建将针对这些收集的信息进行测试,而结果可获得性能度量值、安全度量值以及故障信息.
然后故障被归档、分配、排定优先级并跟踪,直至最后被解决.
一旦修正了故障,其代码就会作为软件工程过程的一部分进入安全性测试.
这些都发生在代码嵌入软件树而进入下一次测试循环之前.
这种严格的开发和质量保证过程帮助确保交互的产品十分可靠,为生产环境做好了准备.
那句老话,"等到有了第一个服务补丁后再进行升级",对于SQLServer2012是不适用的.
3.
1.
2独立软件厂商和SQL社区的贡献从SQLServer2005开始到SQLServer2012,都采纳了社区技术预览(CommunityTechnologyPreview,CTP)的概念.
除了发布候选版本(ReleaseCandidate,RC)以外,November2010CTP是几个这种版本中的第一个.
对代码(或构建)采用这种时间点快照的决策导致了超过数十万次的CTP和RC下载,为独立软件供应商(ISV)和SQL社区测试提供了对更新代码的史无前例的访问.
在本书创作时,Microsoft已经发布了10个案例分析,详细说明了SQLServer2012的成功实现.
这种对测试代码的访问作为一种标识额外故障、执行额外软件修正测试和根据社区反馈进行额外改进的手段.
3.
2升级到SQLServer2012第2章已介绍过安装指导,因此本节主要介绍升级策略和有关SQLServer2012数据库组件的考虑事项.
平滑升级要求有好的计划.
在设计升级计划时,需要将升级过程分为独立的任务.
这个计划应包括升级前任务、升级任务和升级后任务几个部分.
第3章升级到SQLServer2012的最佳实践49升级前任务应考虑SQLServer2012最低的硬件和和软件需求.
应有访问服务器的应用程序清单、数据库排序规则需求、服务器依赖性以及遗留系统需求(如数据访问方法)信息.
列表中应包括数据库一致性检查和所有数据库的备份.
计划还应考虑测试升级过程和应用程序.
你应对向后兼容性问题十分了解和有确定的替代或解决方案.
还应使用本章后面要介绍的SQLServer2012升级顾问来帮助找出并解决问题.
升级执行过程应是平滑执行有良好文档的预演计划的过程.
为了重申此步骤的重要性,务必在执行升级过程前备份所有数据库.
升级后任务应包括检查升级过程、使系统恢复到联机状态、监控和测试系统.
在向用户社区发布系统前还需要执行一些特定的数据库维护,本章后面将介绍这些步骤及其他推荐步骤.
我们推荐在升级之后在向后兼容模式下运行数据库,以便最小化环境变化.
数据库兼容模式的更新连同启用SQLServer2012新功能应作为后续升级过程的一部分.
在确定升级策略方面,本节将介绍两种升级方法:本地升级和并列迁移.
3.
2.
1本地升级本地服务器升级是这两种方法中较容易的一种,但是风险也要大一些.
这是一种要么完全成功、要么完全失败的升级方法,这意味着一旦启动升级,就没有简单的回滚过程.
这种升级要求有更好的前期测试,以避免使用复杂的回退计划.
这种方法的好处是不用担心用户和登录名保持同步的问题,对于应用程序也不要求数据库连接改变.
另外,SQLSeverAgent作业将在升级过程中迁移.
这里根据图3-1介绍如下本地升级场景:(1)首先,在系统上安装必要的文件.
在升级到SQLServer2012之前,服务器至少需要:.
NETFramework4.
0WindowsPowerShell2.
0.
NET3.
5withServicePack1SQLServer2005、SQLServer2008或SQLServer2008R2的当前实例(2)下一步是运行系统配置检查器(SystemConfigurationChecker,SCC).
SCC检查目的计算机是否存在阻碍升级完成的问题,比如不满足最低的硬件或软件要求.
如果有这种问题,就退出安装程序并卸载SQLServer2012组件.
(3)一旦通过验证,SQLServer安装程序就可以在磁盘上部署2012文件和向后兼容性支持文件,同时SQLServer2008(或2005)仍可用.
但并不推荐计划升级服务器时仍使用户联机.
安装程序通过停止现有SQLServer服务,可使服务器脱机.
基于SQLServer2012的服务假定有master数据库的控制权和服务器身份.
这时,SQLServer服务会接管数据库并开始更新它们,同时不允许用户返回到环境中.
当数据请求在只局部更新的数据库中发生时,将会更新、处理与请求相关的数据,然后返回给用户.
(4)最后,卸载旧的二进制文件.
这一步骤仅在服务器上没有遗留的SQLServer2005或2008实例时才执行.
最后,SQLServerAgent作业得到迁移.
SQLServer2012管理高级教程(第2版)50本地升级的内部过程实例仍可用安装必要文件安装SQLServer2012二进制文件不可返回点将服务重定向到新的二进制文件连接资源数据库重启服务执行复制和SQLAgent升级脚本升级开始升级完成检查升级阻止程序停止服务停止服务实例不再可用以单用户模式启动服务开始升级所有数据库启动局部可用性卸载旧的二进制文件实例变得可用图3-1本地升级的优点如下:快速、方便、自动(最适合小型系统)不需要额外的硬件应用程序保持相同的实例名自动保留SQLServer2008(或2005)的功能本地升级的缺点如下:导致宕机时间,因为整个服务器在升级时处于脱机状态不支持组件级升级复杂的回滚策略必须为SQLServer实例解决向后兼容问题不是所有SQLServer组件都可以本地升级大型数据库需要较长的回滚时间另外,如果想在升级过程中更改版本,那么有一些必须了解的限制.
SQLServer2005和2008企业版、开发人员版、标准版以及工作组版可升级到SQLServer2012的不同版本.
但是,SQLServer2005和2008速成版只能升级到SQLServer2012速成版.
如果对此内容感兴趣,可查看SQLServer2012联机丛书(BOL)中"升级到SQLServer2012"下的主题"版本升级".
3.
2.
2并列升级在并列升级中,SQLServer2012可以作为单独的实例与SQLServer2008(或2005)一起安装,或是在一台不同的服务器上安装.
这个过程实质上就是在全新安装后进行数据库迁移.
在硬件更新或迁移到新平台(如安腾或x64)的过程中,可选择这种方法.
由于回退场景中会多次涉及备份和还原,因此如果有相当大的数据库,那么这种方法显然是较好的选择.
作为这种方法的一部分,可从原始服务器备份数据库,然后将它们还原到SQLServer2012实例.
另一种选择是手动从旧实例中分离数据库,然后使用日志传送或数据库镜像将它们重新第3章升级到SQLServer2012的最佳实践51附加到新实例.
也可利用复制数据库向导将数据库迁移到新服务器.
尽管这种方法提供了最好的恢复场景,但和本地升级相比,还有一些额外要求,如维护原服务器名称、注意应用程序连接性,使用户和登录名保持同步.
支持并列升级的理由如下:更细粒度地控制组件级升级过程(数据库、AnalysisServices及其他)可以并列运行SQLServer以进行测试和验证可以收集升级的实时矩阵(中断窗口)回滚策略,使得原服务器仍保持不变最适合于超大型数据库,因为还原时间可调整反对并列升级的理由如下:不保留SQLServer2008(或2005)的功能连接应用程序时实例名的问题3.
2.
3本地升级与并列升级的考虑事项在选择升级策略前,应考虑许多因素.
升级策略应包括组件级升级需求、失败时的回滚能力、数据库大小及局部升级的需求.
对于大部分人来说,最主要的考虑包括是否可以升级到新硬件、是否有助于改变策略(如服务器合并),以及是否能为升级提供较小的服务器中断窗口.
表3-1对这两种升级方法做了汇总.
表3-1比较本地升级和并列升级过程本地升级并列升级结果实例数1个2个数据文件传输自动手动SQLServer实例配置自动手动支持升级实用程序SQLServer安装各种迁移和数据传输方法3.
3升级前的操作步骤和可用工具现在你已经知道了升级到SQLServer2012的理由和选项,接下来就可以选择升级工具来辅助升级过程,并执行升级前所需的步骤.
在升级前,可以采取一些预防措施来避免常见的升级问题,例如磁盘空间不足或者在升级过程中执行启动存储过程.
有许多工具可以帮助识别环境中的潜在升级问题.
最常用的两个工具是SQLServer2012升级顾问和SQLServer2012升级助手.
这些工具都可以提供升级前分析,并帮助你确信升级可以成功完成.
升级助手使用负载测试来测试升级后的应用程序行为,而升级顾问则对数据库执行本地分析以找出潜在的兼容性问题.
3.
3.
1升级前的步骤在进行升级前,需要执行一些步骤.
这些预防措施可以防止升级过程中出现令人不愉快的SQLServer2012管理高级教程(第2版)52问题.
在升级过程中,将数据文件和日志文件设为自动增长.
禁用所有的启动存储过程,因为升级过程会在被升级的SQLServer实例上停止和启动服务.
在升级到SQLServer2012前,使用sp_dropextendedproc和sp_addextendedproc存储过程重新注册没有用完整路径名注册的扩展存储过程.
在升级到SQLServer2012前禁用所有跟踪标志.
跟踪标志功能在SQLServer2012中发生变化或根本不存在的可能性是存在的.
在升级后,应该与Microsoft支持团队协作,确定哪些跟踪标志仍然需要(或者全部不再需要).
迁移到数据库邮件.
对SQL邮件的支持已被停止.
3.
3.
2升级前的工具升级过程可能是一项令人望而生畏的任务.
通过在进行升级前检查实例,可以降低升级失败或在升级后出现异常行为的风险.
在准备进行升级时,有两个工具可以考虑:SQLServer2012升级顾问和SQLServer2012升级助手.
1.
SQLServer2012升级顾问升级顾问检查的规则代表可能对升级到SQLServer2012的过程产生影响的条件、情形或已知的错误.
如果想吸取别人的升级经验,那么SQLServer2012升级顾问是个不错的选择.
该工具基于之前采用者的反馈和内部实验室测试的反馈.
SQLServer2012升级顾问可以作为MicrosoftSQLServer2012功能包的一部分,从www.
microsoft.
com/downloads/en/details.
aspxid=26726免费下载.
另外也包含在所有版本的SQLServer2012安装程序中.
这个工具的目的是要标识已知的升级问题,并对在每个服务器组件上标识出的问题提供解决方法或修正措施.
Microsoft努力开发这个工具以帮助减少SQLServer2005和SQLServer2008用户升级到SQLServer2012的风险.
因此,不管运行的是AnalysisServices、IntegrationServices、ReportingServices组件还是这些组件的组合,升级顾问工具都可以提供帮助.
安装SQLServer2012升级顾问升级顾问是个相对易于使用的工具.
可以从安装盘默认屏幕的"准备"部分找到,也可以从www.
microsoft.
com/download/en/details.
aspxid=26726下载.
升级顾问的欢迎界面如图3-2所示.
选择"检查更新"选项,因为可以在线获得此工具的升级版本.
这个工具会不断更新,从而反映之前进行升级的DBA所获得的经验.
安装它需要有.
NET4.
0,可以从Windows更新服务或MSDN下载.
NET4.
0.
另外,在安装升级顾问前,必须安装MicrosoftSQLServerTransact-SQLScriptDom,其网址为www.
microsoft.
com/download/en/details.
aspxid=26726.
也可选择安装该工具的单个实例和版本,在企业中测试所有服务器.
该选项通过对服务器的只读访问来支持零空间占用(zero-footprint)询问.
tempdb负责管理临时对象、行版本控制和联机索引重建.
第3章升级到SQLServer2012的最佳实践53图3-2安装过程非常简单,唯一要做的是选择该工具的安装位置.
默认安装路径是C:\ProgramFiles(x86)\MicrosoftSQLServerUpgradeAdvisor.
使用升级顾问在安装后,升级顾问将提供两个选项:升级顾问分析向导和升级顾问报表查看器.
选择升级顾问分析向导,如图3-3所示,只需要选择服务器和组件作升级分析,或单击"检测"按钮启动检测过程,就可以检测系统中安装的组件.
图3-3选择要测试的组件之后,接下来选择要进行升级评估的数据库,如图3-4所示.
这个过程该工具是读操作密集型的,应在测试服务器上进行测试以评估对系统的潜在影响.
SQLServer2012管理高级教程(第2版)54中最有利的部分是可选择分析跟踪文件和SQL批处理文件来帮助进行全面分析.
也就是说,通过在评估过程中添加这些文件,升级顾问不仅评估数据库,还评估跟踪工作负载和SQL脚本.
通过评估这些额外的信息,升级顾问不仅可以评估数据库的当前信息,还可以评估跟踪文件和批处理文件中包含的过去的数据库的使用和行为信息.
你只须选择跟踪文件或批处理文件所在的目录路径.
图3-4在完成要评估组件的配置后,将提示开始分析.
如果在配置过程中存在任何问题,通过"帮助"按钮可获得"与升级顾问相关的联机丛书"(UABOL)的内容,其中包含了大量相关信息和指导.
完成组件级分析后,将出现绿色、黄色或红色的对话框以表明测试结果.
在测试结束后,通过升级顾问报表查看器查看发现的问题.
如图3-5所示,报表本身在类似于Web浏览器的界面中显示.
可按服务器、实例、组件或问题类型对报表进行筛选,以分析这些信息.
本章后面将介绍如何理解该报表的结果.
图3-5第3章升级到SQLServer2012的最佳实践55脚本化升级顾问如果你有服务器场或更喜欢使用脚本,那么还可以使用命令行功能.
利用Upgrade-AdvisorWizardCmd实用程序,通过XML配置文件来配置该工具,并得到XML文件形式的结果.
下列参数可传递给UpgradeAdvisorWizardCmd实用程序:help命令行参数.
配置文件路径和文件名.
用于SQLServer的SQLServer登录名和密码(假定使用SQLServer身份验证而不是Windows身份验证).
表明是否以逗号分隔值(CSV)的形式输出报表的可选标志.
向导部分中介绍的所有功能和参数都可通过配置文件提供.
通过XML文档或Excel(如果使用CSV选项),命令行方式执行的结果仍可在报表查看器中查看.
例如,下列来自升级顾问的XML文档反映了在名为SQL12Demo的服务器和名为SQL2012的实例上分析所有数据库、AnalysisServices和SSIS包的选择:SQL12DemoSQL2012*可在XML编辑器(如VisualStudio)中修改此文件并用新文件名保存该文件.
然后,可使用该新文件作为升级顾问命令行工具的输入.
例如,下面显示的命令提示符使用Windows身份验证运行升级顾问命令行.
配置文件已包含名为SQL2012的远程服务器名和名为SQL2012的实例名,PATH环境变量包含升级顾问的路径:C:\>UpgradeAdvisorWizardCmd-ConfigFile"SQL2012Config.
xml"还可以通过命令提示符安装或删除升级顾问应用程序.
这样无论是否有UI,都可控制安装过程,还可配置安装路径和进程日志选项.
要了解有关升级顾问的配置文件的更多信息,可以查看升级顾问帮助的"Upgrade-AdvisorWizardCmd实用工具"部分.
解决升级问题升级顾问的报表包含大量信息.
关键是理解这些信息如何显示、需要解决哪些问题以及何时解决.
如图3-5所示,第1列表明结果或推荐方案的重要性,第2列说明需要何时解决,而第3列说明了有关问题的信息.
推荐的分析方法是首先按重要性和解决时间对信息进行分类.
具体地说,它们将表明问题应在升级前还是升级后解决.
表3-2列出了作者针对何时解决这些问题提供的建议.
SQLServer2012管理高级教程(第2版)56表3-2何时解决升级问题重要性何时解决作者建议红色升级前升级前解决红色任何时候升级前解决红色升级后升级后解决黄色任何时候升级后解决黄色升级后升级后解决黄色取决于升级顾问升级后解决对于"重要性"为红色且"何时解决"为"升级前"或"任何时候"的问题,应在升级前解决.
通常,由于SQLServer2012功能发生改变,例如不再支持某些功能,这些问题需要进行补救.
其他问题一般可在升级后解决,因为这些问题可能在升级过程中有替代方案或是根本没有受到影响.
如果将错误展开,就将显示其他信息,如图3-6所示.
图3-6"显示受影响的对象"链接显示了升级顾问标记的受影响的对象,而"请告诉我有关此问题的详细信息以及如何解决"链接将显示UABOL的相应部分.
UABOL描述了相关条件,并提供关于如何解决这一问题的指导.
UABOL非常有用,因为它对该工具无法解决的问题的解决方案提供了指导(如复制、SQLServer代理和全文搜索).
"此问题已解决"复选框用于跟踪已解决的问题.
这个元数据复选框用于支持补救过程,允许按问题的状态(已解决或未解决)进行筛选来查看报表.
如果你更喜欢命令行脚本,将知道查看器只是应用于XML结果文件(位于MyDocuments\SQLServer2012UpdateAdvisorReports\目录中)的XSLT转换.
可在每个基于服务器名称的目录中找到各个组件的结果和配置文件,甚至还可将基于查看器的报表导出为其他输出格式,如CSV或文本.
第3章升级到SQLServer2012的最佳实践572.
SQLServer2012升级助手(UpgradeAssistantforSQLServer2012,UAFS)UAFS最初用于SQLServer2005应用程序兼容性实验室,是作为MicrosoftAscend(SQL2005客户培训)和Touchdown(SQL2005合作伙伴培训)项目的一部分运行.
这些实验室的目的是帮助客户分析SQLServer2000(或7.
0)应用程序,以使他们了解升级到SQLServer2005的影响并提供有关为成功迁移数据库和应用程序必须做哪些修改的指导.
这些实验室通过对SQLServer2005进行升级和对客户的实际工作负载进行影响分析,来帮助改进SQLServer2005的质量.
这些实验室本身由Microsoft及其合作伙伴(如ScalabilityExperts)的员工负责.
全球大约有50个实验室,使用这一工具测试了数百个SQLServer2000应用程序.
他们还为SQLServer2008特别开发了一个UAFS新版本,并针对SQLServer2012进行了更新;可以从www.
scalabilityexperts.
com/tools/downloads.
html免费下载.
从概念上来看,该工具与升级顾问的区别是UAFS包括了真正的升级和测试方法体系.
通过对相同负载在SQLServer2008(或2005)和SQLServer2012中运行的结果进行比较,可以确定升级阻止程序及需要的应用程序代码修改.
对于SQLServer2012来说,UAFS工具支持从SQLServer2008和2005进行升级.
下面将概述这个过程,然后详细介绍UAFS中的每一步操作,如图3-7所示.
通过使用UAFS,将备份所有数据库和用户并捕捉部分生产负载.
然后还原备份的数据库和用户,并处理捕捉的工作负载.
这样做的目的是生成新的输出文件,也就是基准文件.
接着,将测试服务器升级到SQLServer2012,重新运行该工作负载以捕捉SQLServer2012参考输出并作比较.
图3-7捕捉环境应通过备份服务器中的所有SQLServer2008(或2005)系统和用户数据库的方法来建立基准.
接着,需要开始捕捉跟踪文件以避免进程中出现缺口.
在捕捉跟踪文件时,需要良好地表SQLServer2012管理高级教程(第2版)58示描述工作环境特征的负载.
因此,可能需要创建人工负载,以便更好地表示应用程序工作负载随时间推移出现的情况.
捕捉跟踪文件时,最好避免多服务器操作,如链接服务器调用或批量复制操作依赖性.
要知道,跟踪时将导致性能开销.
表示可重复、可重用的工作负载的跟踪文件和数据库备份称为重放(playback).
建立基准服务器在捕捉了重放后,可建立用于其余测试的基准系统.
这个服务器应安装了SQLServer2008R2SP1、2008SP2或SQLServer2005SP2,满足升级到SQLServer2012的最低要求.
实际上,应采用与源系统相同的排序规则和补丁程序.
然后,该工具将检查服务器的这一匹配情况.
如果有必要,将提示安装补丁程序或重建master数据库.
接下来是以正确的顺序还原数据库,使DBID与生产环境匹配(这也包括了添加DB创建过程来实现该目标).
最后,UAFS将重新创建登录名,并确保ID与生产环境匹配,因为这些都是运行跟踪文件所必需的.
该过程的下一步是按本章前面所述运行升级顾问.
在修复好环境后,就可以进行重放跟踪.
运行跟踪当运行跟踪时,首先更新所有数据库中的统计信息,然后重放工具使用API,并依次运行跟踪文件中的所有查询.
该工具是单线程重放,但可能会出现阻塞.
如果跟踪运行得非常缓慢或停止,就应检查SQLServer阻塞情况;如果不能自动清理,就需要终止阻塞进程.
该步骤会生成跟踪输出文件,用于在最终分析时进行比较.
升级到SQLServer2012现在准备升级到SQLServer2012,可以有两种选择.
可以使用UAFS将SQLServer2008(或2005)的状态还原到基准状态,然后本地升级到SQLServer2012.
也可以将SQLServer2008(或2005)迁移到现有SQLServer2012实例.
如本章前面所述,执行本地升级还是并列升级的决定是根据环境特定的一系列因素做出的.
这里不是在测量性能指标,因此这些服务器不必相同.
这是在两种SQLServer版本间测量工作负载行为.
在SQLServer2012平台上还原基准后,将再次进行"运行跟踪"步骤,但这次是在SQLServer2012上.
该步骤生成另一跟踪输出文件,用于在最终分析时进行比较.
最终分析在完成所有这些过程之后,就进入比较输出文件的最终步骤,方法是筛选并比较两个跟踪文件中的所有批处理结果,查看它们的不同点.
报表查看器一次显示一个错误条件,显示了最后一个正确的步骤、错误的步骤和接下来的正确批处理文件序列.
一旦标识出错误条件,就可以在错误检查过程中筛选出该错误,使DBA专注于查找新的错误条件.
在SQLServer2012升级完成后,将数据库兼容性模式改为110并运行应用程序以验证能在SQLServer2012兼容性模式下工作.
这确保了当在数据库兼容性模式为110的情况下运行时,不存在应用程序行为差异.
3.
4向后兼容性本节介绍SQLServer2012出现的主要变化,它们分为三类:不支持、不推荐使用的变化和影响SQLServer2008或2005行为方式的变化.
尽管升级顾问工具会在条件与环境相关时突出第3章升级到SQLServer2012的最佳实践59显示它们,但读者还是应阅读本节来了解这些改变.
3.
4.
1SQLServer2012中不支持和未延续的功能有时为了技术向前发展,必须做些权衡.
从SQLServer2008到SQLServer2012,下列功能不再可用:系统存储过程sp_ActiveDirectory_Obj、sp_ActiveDirectory_SCP和sp_ActiveDirectory_Start.
sp_configure选项userinstancetimeout和userinstancesenabled.
对VIA协议的支持.
SQL邮件(改用数据库邮件).
使用sp_addserver创建新的远程服务器(改用链接服务器).
数据库兼容性模式80.
RESTORE{DATABASE|LOG}…WITHDBO_ONLY(改用WITHRESTRICTEDUSER子句).
这个列表并不完整.
关于未延续和弃用功能的完整列表,可访问以下网址:http://msdn.
microsoft.
com/en-us/library/cc280407(v=SQL.
110).
aspx.

IMIDC彩虹数据:日本站群多ip服务器促销;30Mbps带宽直连不限流量,$88/月

imidc怎么样?imidc彩虹数据或彩虹网络现在促销旗下日本多IP站群独立服务器,原价159美元的机器现在只需要88美元,而且给13个独立IPv4,30Mbps直连带宽,不限制月流量!IMIDC又名为彩虹数据,rainbow cloud,香港本土运营商,全线产品都是商家自营的,自有IP网络资源等,提供的产品包括VPS主机、独立服务器、站群独立服务器等,数据中心区域包括香港、日本、台湾、美国和南非...

cyun29元/月,香港CN2 GIA云服务器低至起;香港多ip站群云服务器4核4G

cyun怎么样?cyun蓝米数据是一家(香港)藍米數據有限公司旗下品牌,蓝米云、蓝米主机等同属于该公司品牌。CYUN全系列云产品采用KVM架构,SSD磁盘阵列,优化线路,低延迟,高稳定。目前,cyun推出的香港云服务器性价比超高,香港cn2 gia云服务器,1核1G1M/系统盘+20G数据盘,低至29元/月起;香港多ip站群云服务器,16个ip/4核4G仅220元/月起,希望买香港站群服务器的站长...

HaBangNet(6.95美元/月)美国vps 5TB流量/德国vps 香港双向CN2 GIA VPS

HaBangNet支持支付宝和微信支付,只是价格偏贵,之前国内用户并不多。这次HaBangNet推出三个特价套餐,其中美国机房和德国机房价格也还可以,但是香港机房虽然是双向CN2 GIA线路,但是还是贵的惊人,需要美国和德国机房的可以参考下。HaBangNet是一家成立于2014年的香港IDC商家,中文译名:哈邦网络公司,主营中国香港、新加坡、澳大利亚、荷兰、美国、德国机房的虚拟主机、vps、专用...

sql挂起为你推荐
vc组合金钟大奖VC组合的两个人分别叫什么?留学生认证国外留学生毕业证怎么进行认证呢?蓝色骨头手机谁有崔健执导的电影《蓝色的骨头》。比肩工场比肩成局 什么意思地陷裂口造成地陷都有哪些原因?网站检测请问,对网站进行监控检测的工具有哪些?www.idanmu.com腾讯有qqsk.zik.mu这个网站吗?ww.66bobo.com有的网址直接输入***.com就行了,不用WWW, 为什么?33tutu.comDnf绝望100鬼泣怎么过机器蜘蛛尼尔机械纪元机械蜘蛛怎么过 机械蜘蛛打法攻略解析
hostigation 西安服务器 缓存服务器 美国仿牌空间 godaddy parseerror 一点优惠网 最好的空间 dux 网站cdn加速 169邮箱 linux使用教程 群英网络 攻击服务器 乐视会员免费领取 移动王卡 建站技术 西部数码主机 中国最年轻博士 更多