全局临时表的生命周期在会话终止时候将销毁。在存储过程中创建的全局临时表,超出存储过程范围时,并不会销毁,直到创建会话终止。
在某些情况下,需要创建一个永久存在的全局临时表,这个时候需要一个不属于任何会话的全局临时表。这样可以创建一个特殊的存储过程
-存在于master中,并使用startup选项标记该存储过程,sqlserver数据库在每次启动时候调用启动过程startup procedure。这时,sqlserver
会为这样的过程维护一个大于0的引用计数器,确保sqlserver不会自动删除它。
创建过程:
然后执行:
最后重启数据库即可
在某些情况下,需要创建一个永久存在的全局临时表,这个时候需要一个不属于任何会话的全局临时表。这样可以创建一个特殊的存储过程
-存在于master中,并使用startup选项标记该存储过程,sqlserver数据库在每次启动时候调用启动过程startup procedure。这时,sqlserver
会为这样的过程维护一个大于0的引用计数器,确保sqlserver不会自动删除它。
创建过程:
USE [MASTER]
GO
CREATE PROC [DBO].[SP_GLOBAL]
AS
BEGIN
CREATE TABLE ##T_TMP
(ID INT NOT NULL,
NAME VARCHAR(10)
) ;
END
然后执行:
EXEC DBO.SP_PROCOPTION 'DBO.SP_GLOBAL','STARTUP','TRUE';
最后重启数据库即可