一般全域暫存表 ##Temp 隨建立工作階段結束而消失。需求: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
BEGIN
CREATE TABLE ##Globals
(
id VARCHAR(36) NOT NULL PRIMARY KEY,
value VARCHAR(500)
)
END
GO
-- 標記為啟動預存程序
EXEC dbo.sp_procoption 'dbo.sp_Globals', 'startup', 'true'
GO
sp_procoption ... 'startup', 'true' 讓 SQL Server 啟動時自動在背景執行該程序##Globals 會獲得 參考計數器 > 0,系統不會自動清理##Globals 自動重建CONTEXT_INFO 或應用層快取的輕量方案master 資料庫,需 sysadmin 權限建立INSERT)