制作全局临时表

  我们知道,全局临时表的生命周期一直持续到创建会话(不是创建级别)才终止。有时候,你可能想创建一个不属于任何会话的全局临时表。而无论你进行什么操作,它总是存在,只有显式的删除它才能被移除。因此,可以在一个特殊的存储过程中(使用sp_前缀,在master中创建)创建该表并使用“startup”选项标记该存储过程。SQL Server会在每次启动时调用启动过程(startup procedure)。而且,SQL Server为启动过程中创建的全局临时表维护一个大于0的引用计数器,这样就确保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';

  执行并重启SQL Server后,全局临时表##Globals会自动重建并一直持续到被显式删除。

类别:数据库技术  来源:本站原创  作者:hpping  日期:2010-06-07 13:56

上一条:让百万级数据瞬间导入SQL Server
下一条:超越批量处理与MapReduce:如何让Hadoop走得更远