曾毅微软企业服务部顾问议程•SSMS增强•新管理特性•新增T-SQL语法•新的数据类型•稀疏列•FILESTREAM存储设置状态栏颜色活动监视对象资源管理器详细信息数据库对象搜索智能感知T-SQL调试多服务器查询加密•透明数据加密整个数据库可以通过SQL引擎加密。该方式加密了所有数据库的数据和数据库的日志文件。通过使用这个包罗万象的方式,所有的索引和表都是加密的。不必更改你的应用程序。•备份加密SQLServer2008加密备份的方式可以防止数据泄漏和被窜改。另外,备份的恢复可以限于特点的用户。数据压缩•SQLServer2008支持表和索引的行压缩和页压缩。可以为以下数据库对象配置数据压缩:–存储为堆的整个表。–存储为聚集索引的整个表。–整个非聚集索引。–整个索引视图。–对于已分区表和已分区索引,可为每个分区配置压缩选项,且对象的各个分区的压缩设置不必相同。备份压缩•备份压缩可以大大减小数据库备份文件的大小,由于降低了备份时的I/O,所以进行备份压缩通常可以提高备份的速度。•备份压缩是用CPU换空间,虽然减少了存储空间大小,但是在备份和还原时将消耗更多的CPU。审核•审核功能用于审核系统中的活动和更改。SQLServer审核将收集单个服务器实例或数据库级操作和操作组以进行监视。•在SQLServer中创建审核后接下来可以定义服务器审核规范和数据库审核规范。策略管理•基于策略的管理是一种用于管理一个或多个SQLServer2008实例的系统。使用策略管理可以检查数据库对象的属性甚至限制数据库对象的修改。–公司策略禁止将数据库备份文件和数据库文件放在同一个驱动器中。–定义策略某个数据库中的命名约定要求所有的存储过程以“usp_”开头。MicrosoftConfidential管理新特性新增T-SQL语法•INSERT语句一次插入多条记录•新增操作符:+=、-=、*=、/=……•变量定义同时初始化INSERTINTOt1VALUES('JohnDoe','425-333-5321'),('JaneDoe','206-123-4567'),('JohnSmith','650-434-7869');UPDATEt1SETc1+=1WHEREc2='a'DECLAER@vint=5;DECLARE@v1varchar(10)=‘xxxxx’;Merge语法在SQLServer2008中可以使用MERGE在一条语句中执行INSERT、UPDATE和DELETE操作。MERGE语法允许将数据源与目标表或视图联接,然后根据该联接的结果执行多项操作。MERGE语法包括四个主要子句:•MERGE子句用于指定作为INSERT、UPDATE或DELETE操作目标的表或视图。•USING子句用于指定要与目标联接的数据源。•ON子句用于指定决定目标与源的匹配位置的联接条件。•WHEN子句用于根据ON子句的结果指定要执行的操作。MERGEXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXSourceSourcecanbeanytableorqueryMERGEXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXSourceTargetXXXXXXXXXXXXXXXXTargetcanbeanytableorupdateableviewMERGEXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXSourceTargetXXXXXXXXXXXXXXXXXXXXXXXXIfsourcematchestarget,UPDATEMERGEXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXSourceTargetXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXIfnomatch,INSERTMERGEXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXSourceTargetXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXIfsourcenotmatched,DELETEGroupingSets•使用GROUPINGSETS的GROUPBY子句可以生成一个等效于由多个简单GROUPBY子句的UNIONALL生成的结果集。Codeexample(GROUPINGSETS)--UseUNIONALLondualSELECTstatementsSELECTcustomerType,NullasTerritoryID,MAX(ModifiedDate)FROMSales.CustomerGROUPBYcustomerTypeUNIONALLSELECTNullascustomerType,TerritoryID,MAX(ModifiedDate)FROMSales.CustomerGROUPBYTerritoryIDorderbyTerritoryID--UseGROUPINGSETSonsingleSELECTstatementSELECTcustomerType,TerritoryID,MAX(ModifiedDate)FROMSales.CustomerGROUPBYGROUPINGSETS((customerType),(TerritoryID))orderbycustomerType表值参数•表值参数是使用用户定义的表类型来声明的。使用表值参数,可以不必创建临时表或许多参数,即可向Transact-SQL语句或例程(如存储过程或函数)发送多行数据。Codeexample(TVP)--CreateauserTABLEtypeCREATETYPEmyTableTypeASTABLE(idINT,nameNVARCHAR(100),qtyINT);--Createastoredprocedurethatacceptsatable-variable--oftypeTABLEasaparameterCREATEPROCEDUREmyProc(@tvpmyTableTypeREADONLY)ASUPDATEInventorySETqty+=s.qtyFROMInventoryASiINNERJOIN@tvpAStvpONi.id=tvp.idGO--Declare&populatevariableoftheTABLEtypeDECLARE@listASmyTableType;INSERTINTO@listVALUES(1,‘Bicycle’,10),(2,‘Rollerblades’,5),(3,‘Soccerball’,25);--ExecutethestoredprocedurewithTVPEXECmyProc@list;日期和时间类型•新增4种日期和时间类型:•Dateonly•From0001-01-01to9999-01-01inGregoriancalendarDate•Timeonly•Optionaluserspecifiablefractionalprecisionsupto100nanosecondsTime(n)•Time-zoneaware/preservedUTCdatetime•Optionaluserspecifiablefractionalprecisionsupto100nanosecondsDateTimeOffset(n)•Largedaterange•Optionaluserspecifiablefractionalprecisionsupto100nanoseconds(Default)•Time-zoneNOTawareDateTime2(n)数据类型格式范围精度timehh:mm:ss[.nnnnnnn]00:00:00.0000000~23:59:59.9999999100nanosecondsdateYYYY-MM-DD0001-01-01~9999-12-311天smalldatetimeYYYY-MM-DDhh:mm:ss1900-01-01~2079-06-061minutedatetimeYYYY-MM-DDhh:mm:ss[.nnn]1753-01-01~9999-12-310.00333seconddatetime2YYYY-MM-DDhh:mm:ss[.nnnnnnn]0001-01-0100:00:00.0000000~9999-12-3123:59:59.9999999100nanosecondsdatetimeoffsetYYYY-MM-DDhh:mm:ss[.nnnnnnn][+|-]hh:mm0001-01-0100:00:00.0000000~9999-12-3123:59:59.9999999(inUTC)100nanosecondshierarchyid•用于创建具有层次结构的表,或引用位于另一个位置的数据层次结构。•系统提供了多个方法用于操作hierarchyid数据类型。•支持深度优先遍历和广度优先遍历:空间地理数据类型•Geometry•几何数据类型•X,Y坐标系•Geography•地理数据类型•经度纬度空间地理数据类型•可实例化的类型:–Points,Linestrings,Polygons–Collectionsoftheabove•计算使用的方法:–Spatialrelationships:intersects,disjoint,etc.–Spatialconstructions:intersection,union,etc.–Metricfunctions:distance,area–Planarisconceptuallysimpler,butmorespecializedMicrosoftConfidential地理空间数据稀疏列•稀疏列是对null值采用优化的存储方式的普通列。•当至少能够节省20%到40%的空间时,才应考虑使用稀疏列。•一般情况下表最多可以创建1024个列。使用稀疏列时可以在表中创建更多的稀疏列。稀疏列pkc1sc1sc2sc3sc4sc5sc6sc7sc8sc91A192B243C674D155E486F397G578H289I36稀疏列存储NULL值:0bytes.非NULL:+(2-4)b。在稀疏列中检索非NULL数据性能有一定下降。pkc1sc1sc2sc3sc4sc5sc6sc7sc8sc91A(sc1,sc9)(1,9)2B(sc2,sc4)(2,4)3C(sc6,sc7)(6,7)4D(sc1,sc5)(1,5)5E(sc4,sc8)(4,8)6F(sc3,sc9)(3,9)7G(sc5,sc7)(5,7)8H(sc2,sc8)(2,8)9I(sc3,sc6)(3,6)稀疏列宽表每个表可以创建非常大数量的稀疏列,最多可达100,000个!pkc1sc1sc2sc3sc4sc5sc6sc7sc8sc9…sc1000001A(sc1,sc9)(1,9)2B(sc2,sc4)(2,4)3C(sc6,sc7)(6,7)4D(sc1,sc5)(1,5)5E(sc4,sc8,sc100000)(4,8,100000)6F(sc3,sc9)(3,9)7G(sc5,sc7)(5,7)8H(sc2,sc8)(2,8)9I(sc3,sc6,sc50000)(3,6,50000)筛选索引•筛选索引是一种经过优化的非聚集索引,尤其适用于涵盖从定义完善的数据子集中选择数据的查询。FILESTREAM存储•使用FILESTREAM允许以独立文件的形式存放大对象数据(varbinary(max)),而不是以往一样将所有数据都保存到数据