--2008-01-04
--資源管理器表修改測試
--建表test(a,b)
--修改為test(a,c,b)
--服務器sql2000
--客戶端sql2005
--資源管理器修改表profiler跟蹤結果
--1.資源管理器建表
----開頭是亂七八糟的設參數,自動建立一個Table_1的表,保存列之類的,隔離級別等,反正應該是系統自動干的,就不多說了
----保存時表名為test,語句如下:
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;BEGIN TRANSACTION
CREATE TABLE dbo.test
(
a nchar(10) NULL,
b nchar(10) NULL
) ON [PRIMARY]
COMMIT TRANSACTION
--2.資源管理器插入數據
----系統執行的略過
----實質語句如下:
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;BEGIN TRANSACTION
exec sp_executesql N''INSERT INTO test(a, b) VALUES (@a, @b)'', N''@a nvarchar(2),@b nvarchar(2)'', @a = N''a1'', @b = N''b1''
COMMIT TRANSACTION
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;BEGIN TRANSACTION
exec sp_executesql N''INSERT INTO test(a, b) VALUES (@a, @b)'', N''@a nvarchar(2),@b nvarchar(2)'', @a = N''a2'', @b = N''b2''
COMMIT TRANSACTION
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;BEGIN TRANSACTION
exec sp_executesql N''INSERT INTO test(a, b) VALUES (@a, @b)'', N''@a nvarchar(2),@b nvarchar(2)'', @a = N''a3'', @b = N''b3''
COMMIT TRANSACTION
--3.資源管理器修改表
----之後在test中插入列,即在a和b中間插入c
----又是一堆系統過程、語句執行,設置參數等,繼續不說,反正我也不太明白
----實質工作如下:
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;BEGIN TRANSACTION
CREATE TABLE dbo.Tmp_test
(
a nchar(10) NULL,
c nchar(10) NULL,
b nchar(10) NULL
) ON [PRIMARY]
IF EXISTS(SELECT * FROM dbo.test)
EXEC(''INSERT INTO dbo.Tmp_test (a, b)
SELECT a, b FROM dbo.test WITH (HOLDLOCK TABLOCKX)'')
DROP TABLE dbo.test
EXECUTE sp_rename N''dbo.Tmp_test'', N''test'', ''OBJECT''
COMMIT TRANSACTION
--結束