讓優(yōu)化SQL Server中的數(shù)據(jù)訪問
添加時間:2014-3-24 17:19:53
添加:
思海網(wǎng)絡
在全局臨時表的生命周期一直持續(xù)到創(chuàng)建會話(不是創(chuàng)建級別)才終止。例如,如果你在存儲過程中創(chuàng)建全局臨時表,當超出存儲過程的范 圍時,該表并不會被銷毀。當創(chuàng)建會話終止后,SQL Server才會自動嘗試刪除該表,其他會話中對其提交的所有語句都將結束,并釋放它們所保持的所有鎖。
但由于在某些情況下,你可能想創(chuàng)建 一個不屬于任何會話的全局臨時表。這時,無論哪個會話打開或關閉,它總數(shù)存在,只有顯式的刪除它才能被移除。為此,可以在一個特殊的存儲過程中(使用 sp_前綴,在master中創(chuàng)建)創(chuàng)建該表并使用“startup”選項標記該存儲過程。Sql Server會在每次啟動時調用啟動過程(startup procedure)。而且,Sql Server為啟動過程中創(chuàng)建的全局臨時表維護一個大于0的引用計數(shù)器,這樣就確保Sql Server不會嘗試自動刪除它。
如下所示:
USE master;GO
IF OBJECT_ID('dbo.sp_Globals') IS NOT NULL
DROP PROC dbo.sp_Globals
GO
CREATE proc dbo.sp_Globals
AS
CREATE TABLE ##Globals
(
id varchar(36) NOT NULL PRIMARY KEY,
value varchar(500)
);
GO
EXEC dbo.sp_procoption 'dbo.sp_Globals','startup','true';
執(zhí)行并重啟Sql Server后,全局臨時表##Globals會自動重建并一直持續(xù)到被顯式刪除。
關鍵字:SQL Server、數(shù)據(jù)、存儲過程
新文章:
- CentOS7下圖形配置網(wǎng)絡的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統(tǒng)后丟失windows啟動項
- CentOS單網(wǎng)卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網(wǎng)打印機IP講解
- CentOS7使用hostapd實現(xiàn)無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網(wǎng)絡重啟出錯
- 解決Centos7雙系統(tǒng)后丟失windows啟動項
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統(tǒng)有什么不同呢
- Centos 6.6默認iptable規(guī)則詳解