社区
疑难问题
帖子详情
SQL SERVER 中的全局临时表问题
luozhengeast
2003-09-10 01:47:52
请问高人:我在 SQL SERVER 中写了一个建立全局临时表的存储过程,然后用VB 通过ADO调用,但是却发现有时能建立(在数据库tempdb中的sysobjects 表中能看到临时表),有时又不能建立,请问这是啥原因,全局临时表在什麽情况下会自动删除?
有啥办法能控制全局临时表的自动删除吗?
...全文
124
2
打赏
收藏
SQL SERVER 中的全局临时表问题
请问高人:我在 SQL SERVER 中写了一个建立全局临时表的存储过程,然后用VB 通过ADO调用,但是却发现有时能建立(在数据库tempdb中的sysobjects 表中能看到临时表),有时又不能建立,请问这是啥原因,全局临时表在什麽情况下会自动删除? 有啥办法能控制全局临时表的自动删除吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lionstar
2003-09-10
打赏
举报
回复
你可以将创建全局临时表的存储过程创建完毕后使用waitfor(xxxxxxxxx)数字越大,持续时间越长,然后存储过程设置成SQL Server启动时自动运行的:
sp_procoption [ @ProcName = ] 'procedure'
, [ @OptionName = ] 'option'
, [ @OptionValue = ] 'value'
参数
[@ProcName =] 'procedure'
是要为其设置或查看选项的过程名。procedure 为 nvarchar(776) 类型,无默认值。
[@OptionName =] 'option'
要设置的选项的名称。option 的唯一值是 startup,该值设置存储过程的自动执行状态。设置为自动执行的存储过程会在每次 Microsoft® SQL Server™ 启动时运行。
[ , [ @OptionValue = ] 'value' ]
表示选项是设置为开(true 或 on)还是关(false 或 off)。value 为 varchar(12) 类型,无默认值。
liuyun2003
2003-09-10
打赏
举报
回复
有本地和全局两种类型的临时表,二者在名称、可见性和可用性上均不相同。本地临时表的名称以单个数字符号 (#) 打头;它们仅对当前的用户连接是可见的;当用户从 Microsoft® SQL Server™ 2000 实例断开连接时被删除。全局临时表的名称以数学符号 (##) 打头,创建后对任何用户都是可见的,当所有引用该表的用户从 SQL Server 断开连接时被删除。
临时表
临时表
与永久表相似,但
临时表
存储在 tempdb
中
,当不再使用时会自动删除。
临时表
有两种类型:本地和
全局
。它们在名称、可见性以及可用性上有区别。本地
临时表
的名称以单个数字符号 (#) 打头;它们仅对当前的用户连接是可见的;当用户从
SQL
Server
实例断开连接时被删除。
全局
临时表
的名称以两个数字符号 (##) 打头,创建后对任何用户都是可见的,当所有引用该表的用户从
SQL
Server
SQL
SERVER
临时表
SQL
Server
中
的
临时表
是存储临时数据的特殊表,分为本地
临时表
(#开头)和
全局
临时表
(##开头)。本地
临时表
仅对当前会话可见,会话结束自动删除;
全局
临时表
可跨会话共享,在所有引用会话结束后删除。
临时表
支持常规表操作(创建、查询、修改等),并能创建索引提高性能,适用于存储
中
间结果、简化复杂查询等场景。使用时需注意tempdb资源占用,及时清理不再使用的
临时表
,并根据数据共享需求选择合适的
临时表
类型。
SQL
全局
临时表
防止用户重复登录
为了防止用户的重复登录,在一开始想到的一种方法: 在用户表
中
添加一个字段,登录后写1,退出后写0.这样子在用户登录进行检查的时候判断这个字段是否为0,如果是0那么就可以登录;但是这样子就又带来了新的
问题
,如果在用户正在登录的过程
中
突然断电,那么表
中
写入的是1,也就是说用户在以后的登录
中
都不能能够登录系统了。 另外一种方法:在
SQL
Server
中
建立
全局
临时表
,如果用户没有登录就建立一个
临时表
利用
SQL
Server
的
全局
临时表
防止用户重复登录
在我们开发商务软件的时候,常常会遇到这样的一个
问题
:怎样防止用户重复登录我们的系统?特别是对于银行或是财务部门,更是要限制用户以其工号身份多次登入。 可能会有人说在用户信息表
中
加一字段判断用户工号登录的状态,登录后写1,退出时写0,且登录时判断其标志位是否为1,如是则不让该用户工号登录。但是这样那势必会带来新的
问题
:如发生象断电之类不可预知的现象,系统是非正常退出,无法将
SQL
Server
存储过程并发重构解决固定
全局
临时表
(与deepseek全程交互)
会话隔离:唯一表名确保数据隔离动态适配:灵活应对不同的查询结构资源管理:完善的创建和清理机制功能保持:100%兼容原有业务逻辑这种方案不仅适用于当前存储过程,也可以作为处理类似并发
问题
的通用模式。关键是理解业务逻辑的数据流动,在保持功能完整性的前提下实现技术架构的优化。附:GOGOGO/* Author :杨广标 *//* description :获取检验结果 */@ExeType bit = 1, --执行类型,1:有返回数据集;0:无返回数据集。
疑难问题
22,296
社区成员
121,726
社区内容
发帖
与我相关
我的任务
疑难问题
MS-SQL Server 疑难问题
复制链接
扫一扫
分享
社区描述
MS-SQL Server 疑难问题
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章