SQLServer Temp tables 数据疑问

1. 现象

使用Cacti监控,有关于临时表的一个图形

可以看到正在使用的临时表Active Temp Tables的数量非常大,并且在非工作时间,也维持在400个左右。感觉非常奇怪,所以追查下!

2. 探索

首先,先验证下Cacti数据是否准确,已知Cacti数据是从SQLServer的sys.dm_os_performance_counters 计数器DMV中取数的。所以查询下数据:

select *
from sys.dm_os_performance_counters
where counter_name =‘Active Temp Tables‘

查询结果和图中展示数据没有差别

然后,查询下目前的临时表究竟有哪些。使用如下SQL:

use tempdb
go
select *
from sys.objects
where name like ‘#%‘
order by create_date asc 

查询结果如下:

可以得出如下结论:

1) 临时表的数量与Cacti图中的数量基本一致

2)从临时表的命名来看,基本为表变量对应的临时表。因为若是创建的临时表,命名为#temp_xxxx_随机标识

3)很多临时表,基本是表变量对应的,创建日期为十几天前,且最近并未更改,但SQLServer一直为销毁

3.未解谜题

按照已有的知识,表变量在所在批处理语句结束后,就会释放掉,为什么会有如此的temp tables 未被销毁呢?

请指教!谢谢~

SQLServer Temp tables 数据疑问

时间: 2024-12-21 05:27:08

SQLServer Temp tables 数据疑问的相关文章

从SQLserver中导出表数据到Access

每篇随便都得有个背景吧,这次做一个项目时,突然碰到这个样一个问题,需要将本地sqlserver中的数据导出到access后,再传输access数据库,所以就在想怎样实现这样的操作.后面经过在网上查找了一些资料结合以前的知识,搞了这样一个东西出来: 1 /// <summary> 2 /// 从sqlserver中导出数据到access 3 /// state=0 Jzjl 导出菜品信息表 4 /// state=1 lbxf_jz 导出收银信息表 5 /// </summary>

sqlserver导出带数据的脚本

说明: 以前要将一个表中的数据导出为脚本,只有用存储过程.现在在SQL Server 2008中增加了一个新特性,除了导出表的定义外,还支持将表中的数据导出为脚本. 步骤: 右击需要导出数据的数据库,在弹出式菜单中选择"任务"下的"生成脚本"选项 在第二步选择"高级选项"如果不是2008(R2)的选择 "编写数据的脚本"选择为TRUE,这里默认是为FALSE的 ,   是2008(R2)的选择"要编写的脚本的数据的类

sqlserver主要数据类型数据范围

整数型 Bigint 范围为-263(-9223372036854775808)-263-1(9223372036854775807),其精度为19,小数位数为0,长度为8字节. int 范围为-231(-2,147,483,648)-231-1(2,147,483,647),其精度为10,小数位数为0,长度为4字节. smallint 范围为-215(-32768)-215-1(32767),其精度为5,小数位数为0,长度为2字节. tinyint 范围为0-255,长度为1字节,其精度为3,

sqlserver中将行数据转为Xml文件格式

将sqlserver中的某张表中的行数据转为XML格式的文件的方法: 语法:select * from  表名   for xml path(xml文件中父节点的名称) 案例: //  在Movie数据库下创建一张用户基本信息表[UserInfoes]: USE [Movie]GOCREATE TABLE [dbo].[UserInfoes]( [userId] [int] IDENTITY(1,1) NOT NULL PRIMARY KEY, [userName] [varchar](50)

在sqlServer中把数据导出为insert脚本

有时候为了把数据导出为insert脚本,不得不用一些小工具,或者通过自己写存储过程来完成这一操作.其实SqlServer本身就有这种功能.以下是详细步骤:

SqlServer表EXCEL数据复制的另一种方法

一个.SqlServer表中的数据复制到excel 1.新建查询,用sql语句把表数据读出来 2.然后,选择数据,右键.复制(也能够点击连同标题复制),拷贝到记事本中(不然会乱码) 3.然后再把记事本的内容复制,在excel中粘贴就能够了. 二.excel拷贝到SqlServer表数据 1.打开excel复制数据. 2.用编辑状态打开sql表 3.右键点击表最以下一行左側的序号,选择粘贴(注意,excel的列一定要和sql表的列相应) 4.假设增量,不要复制自动递增场 版权声明:本文博客原创文章

SqlServer高版本数据本分还原到低版本方法

最近遇见一个问题: 想要将Sqlserver高版本备份的数据还原到低版本SqlServer上去,但是这在SqlServer中是没法直接还原数据库的,所以经过一系列的请教总结出来一下可用方法. 首先.你得在电脑上装有你将要操作的高版本以及低版本的SqlServer或者你能够连上SqlServer高版本所在的数据库(便于后面拷贝数据), 第二步.打开高版本数据库中你需要备份的数据库,将你备份的数据库相关的登录名或者用户删除.右键数据库->任务->生成脚本.在生成脚本的“选择对象”步骤选择“编写整个

sqlserver与mysql数据同步问题

由于短信项目的需求,需要将sqlserver当中的表实时同步到mysql当中,于是采用触发器完成该功能,对insert操作进行监控,当sqlserver进行插入操作时,同时将数据插入到mysql当中. 安装sqlserver2008以及mysql. 建立mysql链接服务器. 在本电脑上安装mysql驱动.Mysql-connector-odbc-5.1.6-win32.msi. 安装完毕后,在电脑控制面板-管理工具-odbc数据源-系统dsn-添加-选择mysql odbc driver-完成

solr6.6.2学习记录之三:从sqlserver数据库导入数据(全量导入)

1.配置准备 前提已经配置好了solr,并新创建了一个core;(我的是:D:\solr_home\core_demo) sqlserver数据库 ,  以数据库:demo_solr ,单表(demo_user)为例. 2.修改sorlconfig.xml sorlconfig.xml 位置: D:\solr_home\core_demo\conf ; 在 soreconfig.xml 的<requestHandler name="/select" class="sol