4
我有填充SQL Server 2008數據庫表這樣的ASP.NET Web應用程序:不知道有關SQL Server鎖的類型用於同步
INSERT INTO tblName1 (col1, col2, col3)
VALUES(1, 2, 3)
我也有一個單獨的服務應用程序首先重命名該表處理該表的內容(在後臺),然後通過創建一個空表是這樣:
SET XACT_ABORT ON
BEGIN TRANSACTION
--Rename table
EXEC sp_rename 'tblName1', 'temp_tblName1'
--Create new table
CREATE TABLE tblName1(
id INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
col1 INT,
col2 INT,
col3 INT
)
COMMIT
SET XACT_ABORT OFF
--Begin working with the 'temp_tblName1' table
我什麼不知道是哪個SQL鎖,我需要在此使用tblName1
桌子上的情況?
PS。爲了給你提供這兩個代碼示例運行的頻率:首先可以每秒運行幾次(儘管大多數時間,不太頻繁),第二次運行 - 一天兩次。
我不知道你的意思是「鎖定」,但這聽起來像[Transact-SQL](http://en.wikipedia.org/wiki/Transact-SQL)。 – 2013-04-20 23:49:20
是的,它是t-SQL。我更新了標籤。 「鎖定」是指同時訪問「tblName1」表的同步鎖定。 – c00000fd 2013-04-21 00:20:24
在'rename'和'CREATE'之間'INSERT'到達命中服務器*的次數可能很小 - 其他錯誤(例如機器之間的網絡連接丟失)更多很可能 - 因此只需編寫一些強大的錯誤處理並忽略這種特殊情況(或者,如果您正在構建下一個世界主導網站,請使用企業版和分區表,並且根本不要執行重命名/創建) – 2013-04-21 02:48:15