Sql Server临时表的生存周期

数据库 SQL Server
Sql Server临时表并不是永远有效,下面对Sql Server临时表的生存周期作了详尽的描述,如果您对此方面感兴趣的话,不妨一看。

Sql Server临时表的生存周期可能很多人都不是非常了解,下文就为您介绍Sql Server临时表的生存周期,供您参考,希望对您能有所帮助。

局部临时表#temp_table:
只在当前会话结有效。会话终止则生存终止。
根据session不同开辟不一样的内存存放数据。
相同session的用户可以使用同一张临时表,只能create table 一次。
不同session建的临时表,即使表名相同,指向的内存也是不一样的,互相内容不可见。

全局临时表##temp_table:
顾名思义,不同的session可以使用同一块内存。但是其中的内容到底什么时候才被回收呢?

自己做了一个测试,结果用小白文说起来就是:
只要有任何session用到过这个表,且这些session没有被全部终止,就不被回收。
所谓session终止,我的理解,就sqlserver本身来说就是query窗体被关掉。如果是因为有应用程序连接而产生的session的话(以上所说的session都是sqlserver的session),web系就是session重启(IIS application pool重启,这里所说的session是http的session),应用系的话就是充启应用程序了(←猜想,没试过)。

下面是网上找的,概括一下机能就是,创建一个不被自动回收的全局临时表。没有经过测试,虽然貌似看上去没啥意义,和常规表有什么区别?说不定以后有用,所以还是记下来:
USE master;
GO
IF OBJECT_ID('dbo.sp_Globals') IS NOT NULL
  DROP PROC dbo.sp_Globals
GO
CREATE proc dbo.sp_Globals
AS
CREATE TABLE ##Globals
(
id varchar(36) NOT NULL PRIMARY KEY
value varchar(500)
)
GO
↑sp内容

EXEC dbo.sp_procoption 'dbo.sp_Globals','startup','true';

只有显示删除##Globals才会被清除

以上Sql Server临时表的生存周期的介绍。

 

 

【编辑推荐】

SQL SERVER临时表的语法

SQL SERVER恢复的方法

带您深入了解SQL Server事务

SQL Server连接错误的解决方法

25条mysql和sql server区别

责任编辑:段燃 来源: 互联网
相关推荐

2010-10-19 14:45:01

SQL SERVER临

2010-09-16 17:56:31

SQL server临

2010-09-16 15:03:10

SQL Server临

2010-07-22 16:02:29

2010-07-08 14:42:34

SQL Server临

2021-01-18 05:23:14

SQL 排序Server

2011-03-29 13:22:07

SQL Server临时表表变量

2010-09-16 15:10:48

SQL Server表

2011-09-02 14:45:43

Oracle临时表SQL Server临

2010-07-22 15:56:04

SQL Server临

2010-07-01 14:46:10

SQL Server临

2010-09-02 16:28:03

SQL删除

2010-10-19 14:56:05

sql server临

2010-11-11 10:41:03

sql server遍

2010-07-01 14:11:40

SQL Server内

2009-03-18 10:56:29

生命周期全局临时表SQL Server

2010-10-19 15:31:40

sql server触

2010-07-08 14:24:21

SQL Server

2010-07-22 16:07:02

SQL Server数

2010-07-26 13:56:38

SQL Server临
点赞
收藏

51CTO技术栈公众号