Sql Server制作全局临时表

网络整理 - 07-27

  我们知道,全局临时表的生命周期一直持续到创建会话(不是创建级别)才终止。有时候,你可能想创建一个不属于任何会话的全局临时表。而无论你进行什么操作,它总是存在,只有显式的删除它才能被移除。因此,可以在一个特殊的存储过程中(使用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会自动重建并一直持续到被显式删除