SQL Server 2005的几个新功能,转一个老贴,加入自己一些体会和补充

本文介绍 SQL Server 2005 的几项关键改进,包括 TOP 表达式的灵活性增强、分页查询简化、引入 TRY...CATCH 异常处理机制、通用表达式 CTE 支持及 WebService 直接发布等功能。
(红色字是我添加的。)
转自:http://www.cnfan.net/microsoft/mssql/2006-1/18/2006_01_18_735.html ? 其实我也不知道谁是最初的作者。

SQL Server 2005相对于SQL Server 2000改进很大,有些还是非常实用的。

举几个例子来简单说明 这些例子我引用了Northwind库。

1. TOP 表达式
SQL Server 2000的TOP是个固定值,是不是觉得不爽,现在改进了。 

None.gif -- 前n名的订单
None.gif
declare   @n   int   
None.gif
set   @n   =   10   
None.gif
select   TOP ( @n *   from  Orders 


2. 分页
不知各位过去用SQL Server 2000是怎么分页的,大多都用到了临时表。SQL Server 2005一句话就支持分页,性能据说也非常不错。
None.gif
None.gif
-- 按Freight从小到大排序,求20到30行的结果  
None.gif
select   *   from (  
None.gif    
select  OrderId, Freight, ROW_NUMBER()  OVER ( order   by  Freight)  as  row  from  Orders  
None.gif) a  
None.gif
where  row  between   20   and   30  

3. 排名

None.gif
None.gif
select   *   from (  
None.gif    
select  OrderId, Freight, RANK()  OVER ( order   by  Freight)  as  rank  from  Orders  
None.gif) a  
None.gif
where  rank  between   20   and   30  
None.gif

排名和分页不是用的同一个东西吗?

4. try ... catch
SQL Server 2000没有异常,T-SQL必须逐行检查错误代码,对于习惯了try catch程序员,2005是不是更加亲切:
None.gif
None.gif
SET  XACT_ABORT  ON    --  打开 try功能  
None.gif
BEGIN  TRY  
None.gif    
begin   tran   
None.gif        
insert   into  Orders(CustomerId)  values ( - 1 )  
None.gif    
commit   tran   
None.gif    
print   ' commited '   
None.gif
END  TRY  
None.gif
BEGIN  CATCH  
None.gif    
rollback      
None.gif    
print   ' rolled back '   
None.gif
END  CATCH 

而且,现在可以进行单步的运行调试了,真好。


5. 通用表达式CTE
通过表达式可免除你过去创建临时表的麻烦。
None.gif
   -- 例子:结合通用表达式进行分页 
None.gif
WITH  OrderFreight  AS (  
None.gif    
select  OrderId, Freight, ROW_NUMBER()  OVER ( order   by  Freight)  as  row  from  Orders  
None.gif)  
None.gif
select  OrderId, Freight  from  OrderFreight  where  row  between   10   and   20  
特别,通过表达式还支持递归。


6. 直接发布Web Service
想要把store procedure变成Web Service就用这个吧,.NET, IIS都不需要,通过Windows 2003的HTTP Protocol Stack直接发布WebService,用这个功能需要Windows 2003 sp1
None.gif
None.gif
-- DataSet CustOrdersOrders(string customerID)  
None.gif
CREATE  ENDPOINT Orders_Endpoint  
None.gifstate
= started  
None.gif
as  http(  
None.gif    path
= ' /sql/orders ' ,  
None.gif    AUTHENTICATION
= (INTEGRATED),  
None.gif    ports
= (clear)  
None.gif)  
None.gif
for  soap(  
None.gif    WebMethod 
' CustOrdersOrders ' (    
None.gif        name
= ' Northwind.dbo.CustOrdersOrders '   
None.gif    ),  
None.gif     
None.gif    wsdl
= default ,  
None.gif    
database = ' Northwind ' ,  
None.gif    namespace
= ' http://mysite.org/ '   
None.gif

Web Service就发布好了,敲入http://localhost/sql/orders?wsdl得到wsdl
这个 功能我们在项目里使用了一把,算是可以用吧,不够在授权上还是困惑了一把。

其余功能,比如对Reporting Service的改进算是不小。
至少配置起来算容易一点了(虽然还是容易配置实效),还有一个报表编辑器不错,微软使用.net 2.0的ClickOne部署的咚咚。使得你不需要安装VS或者SQLServer的编辑器也可以设计报表。(不过好像有个前提是你的报表是基于报表模型的,这个报表模型也是个有意思的东西,有时间下次介绍一下)
另外一个重要功能就是对Analysis Service,真是个好东西,只要按照向导,很快就可以分析多维数据了,好。

转载于:https://www.cnblogs.com/cleo/archive/2006/09/09/499994.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值