2017年計(jì)算機(jī)等考三級網(wǎng)絡(luò)技術(shù)輔導(dǎo):制作全局臨時(shí)表

字號:

  我們知道,全局臨時(shí)表的生命周期一直持續(xù)到創(chuàng)建會話(不是創(chuàng)建級別)才終止。有時(shí)候,你可能想創(chuàng)建一個(gè)不屬于任何會話的全局臨時(shí)表。而無論你進(jìn)行什么操作,它總是存在,只有顯式的刪除它才能被移除。因此,可以在一個(gè)特殊的存儲過程中(使用sp_前綴,在master中創(chuàng)建)創(chuàng)建該表并使用“startup”選項(xiàng)標(biāo)記該存儲過程。Sql Server會在每次啟動時(shí)調(diào)用啟動過程(startup procedure)。而且,Sql Server為啟動過程中創(chuàng)建的全局臨時(shí)表維護(hù)一個(gè)大于0的引用計(jì)數(shù)器,這樣就確保Sql Server不會嘗試自動刪除它。如下所示:
USE master;
GO
IF OBJECT_ID('dbo.sp_Globals') IS NOT NULL
DROP PROC dbo.sp_Global
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后,全局臨時(shí)表##Globals會自動重建并一直持續(xù)到被顯式刪除。