我有一個數據倉庫過程,可以將數十個表從鏈接服務器下載並替換爲本地數據庫。每隔一段時間,代碼就會卡在鏈接服務器上的其中一個表上,因爲鏈接服務器上的表處於轉換狀態。我假設,由於整個過程被認爲是一個事務提交,所以當過程被阻塞時,到目前爲止,這個過程沒有發生任何變化。但事實恰恰相反,在程序卡住之前「下載」的表格會在本地服務器上使用當今版本進行更新。在更改持久之前,SQL Server是否應該等待整個過程完成?在SQL Server中大量事務回滾中的數據狀態
CREATE PROCEDURE MYIMPORT
AS
BEGIN
SET NOCOUNT ON
IF EXISTS (SELECT * FROM INFORMATION.SCHEMA.TABLES WHERE TABLE_NAME = 'TABLE1')
DROP TABLE TABLE1
SELECT COLUMN1, COLUMN2, COLUMN3
INTO TABLE1
FROM OPENQUERY(MYLINK, 'SELECT COLUMN1, COLUMN2, COLUMN3 FROM TABLE1')
IF EXISTS (SELECT * FROM INFORMATION.SCHEMA.TABLES WHERE TABLE_NAME = 'TABLE2')
DROP TABLE TABLE2
SELECT COLUMN1, COLUMN2, COLUMN3
INTO TABLE2
FROM OPENQUERY(MYLINK, 'SELECT COLUMN1, COLUMN2, COLUMN3 FROM TABLE2')
--IF THE PROCEDURE GETS STUCK HERE, THEN CHANGES TO TABLE1 WOULD HAVE BEEN MADE ON THE LOCAL SERVER WHILE NO CHANGES WOULD HAVE BEEN MADE TO TABLE3 ON THE LOCAL SERVER
IF EXISTS (SELECT * FROM INFORMATION.SCHEMA.TABLES WHERE TABLE_NAME = 'TABLE3')
DROP TABLE TABLE3
SELECT COLUMN1, COLUMN2, COLUMN3
INTO TABLE3
FROM OPENQUERY(MYLINK, 'SELECT COLUMN1, COLUMN2, COLUMN3 FROM TABLE3')
END
我在存儲過程中看不到任何'BEGIN TRAN' ... –