SQL Server 2005中增强的性能

本文介绍 SQL Server 中的新特性,包括支持更大容量的数据类型如 varchar(max) 和 XML 类型,改进的错误处理机制 TRY/CATCH,快照隔离提高数据可用性,TOP 增强功能以及新增的 OUTPUT 子句。
摘要由CSDN通过智能技术生成

丰富的数据类型 Richer Data Types
  1、varchar(max)、nvarchar(max)和varbinary(max)数据类型最多可以保存2GB的数据,可以取代text、ntext或image数据类型。

CREATE TABLE myTable
(
id INT,
content VARCHAR(MAX)
)
  2、XML数据类型

  XML数据类型允许用户在SQL Server数据库中保存XML片段或文档。


错误处理 Error Handling
  1、新的异常处理结构

  2、可以捕获和处理过去会导致批处理终止的错误。前提是这些错误不会导致连接中断(通常是严重程度为21以上的错误,例如,表或数据库完整性可疑、硬件错误等等。)。

  3、TRY/CATCH 构造

SET XACT_ABORT ON
BEGIN TRY
<core logic>

END TRY
BEGIN CATCH TRAN_ABORT
<exception handling logic>
END TRY
@@error may be quired as first statement in CATCH block
  4、演示代码
USE demo
GO
  --创建工作表

CREATE TABLE student
(
stuid INT NOT NULL PRIMARY KEY,
stuname VARCHAR(50)
)
CREATE TABLE score
(
stuid INT NOT NULL REFERENCES student(stuid),
score INT
)
GO
INSERT INTO student VALUES (101,'zhangsan')
INSERT INTO student VALUES (102,'wangwu')
INSERT INTO student VALUES (103,'lishi')
INSERT INTO student VALUES (104,'maliu')
  --调用一个运行时错误
SET XACT_ABORT OFF
BEGIN TRAN
INSERT INTO score VALUES (101,90)
INSERT INTO score VALUES (102,78)
INSERT INTO score VALUES (107, 76) /*
外键错误 */
INSERT INTO score VALUES (103,81)
INSERT INTO score VALUES (104,65)
COMMIT TRAN
GO
SELECT * FROM student
SELECT * FROM score
  --使用TRY...CATCH构造,并调用一个运行时错误

SET XACT_ABORT OFF
BEGIN TRY
BEGIN TRAN
INSERT INTO score VALUES (101,90)
INSERT INTO score VALUES (102,78)
INSERT INTO score VALUES (107, 76) /*
外键错误 */
INSERT INTO score VALUES (103,81)
INSERT INTO score VALUES (104,65)
COMMIT TRAN
PRINT '事务提交
'
END TRY
BEGIN CATCH
ROLLBACK
PRINT '事务回滚
'
SELECT ERROR_NUMBER() AS ErrorNumber,
ERROR_SEVERITY() AS ErrorSeverity,
ERROR_STATE() as ErrorState,
ERROR_MESSAGE() as ErrorMessage;
END CATCH
GO
SELECT * FROM score
GO

快照隔离
Snapshot Isolation
  1、写入程序不会阻碍读取程序

  2、新的隔离级别提供了以下优点:

  1) 提高了只读应用程序的数据可用性

  2) 允许在OLTP环境中执行非阻止读取操作

  3) 可对写入事务进行自动的强制冲突检测

  3、演示代码

CREATE DATABASE demo2
GO
USE demo2
ALTER DATABASE demo2 SET allow_snapshot_isolation ON
CREATE TABLE test
(
tid INT NOT NULL primary key,
tname VARCHAR(50) NOT NULL
)
INSERT INTO test VALUES(1,'version1')
INSERT INTO test VALUES(2,'version2')
--连接一

USE demo2
BEGIN TRAN
UPDATE test SET tname='version3' WHERE tid=2
SELECT * FROM test
--
连接二
USE demo2
SET transaction isolation level snapshot
SELECT * FROM test
  

TOP 增强功能
  1、TOP 增强。可以指定一个数字表达式,以返回要通过查询影响的行数或百分比,还可以根据情况使用变量或子查询。

  可以在DELETE、UPDATE和INSERT查询中使用TOP选项。

  2、更好地替换SET ROWCOUNT选项,使之更为有效。

  
OUTPUT
  1、SQL Server 2005引入一个新的OUTPUT子句,以使您可以冲修改语句(INSERT、UPDATE、DELETE)中将数据返回到表变量中。

  2、新的OUTPUT子局的语法为:
OUTPUT INTO @table_variable
  可以通过引用插入的表或删除的表来访问被修改的行的旧/新影象,其方式与访问触发器类似。在INSERT语句中,只能访问插入的表。在DELETE语句中,只能访问删除的表。在UPDATE语句中,可以访问插入的表和删除的表。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值