sql-server - SQL Server - 在 SSMS 中关闭查询窗口后,全局范围的临时过程立即消失
问题描述
我正在尝试从服务器上获取一些数据,而我只有在使用尚未在那里推广的分析存储过程时才具有读取权限,所以我像手动使用它一样
CREATE PROCEDURE ###MyProcedure
然后在另一个查询窗口中,我可以很好地运行新的临时过程。但是,当我关闭具有创建语句的查询窗口时,临时过程就消失了。更糟糕的是,有多个子例程需要我用打开的查询窗口向我的工作区发送垃圾邮件才能使用这种方法。
我认为保留全局范围的临时对象,直到所有引用连接都关闭。SSMS 中查询窗口之间的连接详细信息(使用 F4 属性选项卡)的唯一区别是 SPID,但我看到相同的连接名称。
解决方案
这是使用本地和全局存储过程的已知特性;它们仅在连接存在时才存在。由于每个查询窗口都使用自己的连接,因此当它们的定义查询窗口关闭时,过程将被删除。
而不是使用CREATE PROC ##YourSP...
Try making it persistent in tempdb
: CREATE PROC tempdb.dbo.YourSP...
。然后它将一直持续到 SQL Server 重新启动(因为每次启动服务时都会重建 tempdb)。
编辑:如果您使用的是 SQL Server 2016+,您也可以改为使用...如果服务尚未重新启动,CREATE OR ALTER PROC
这将停止生成错误;CREATE
因此SP还没有丢失。
推荐阅读
- ubuntu - 在 ubuntu pycharm 中我找不到 anaconda 包
- sql - PostgreSQL - Distinct on 的随机顺序
- python - Pip install PyAudio 失败,错误代码为 1
- java - 将插入排序应用于对象数组
- android-studio - 如何在 Android Studio 中打开现有的 Flutter 项目
- reactjs - react-google-maps“'google'未定义”错误
- javascript - 为什么即使我没有明确使用 React,我也需要 import React 语句?
- apache-spark - 使用 PySpark 的 Librosa 特征提取方法
- python - 安装情节
- c++ - 在多个源文件中拆分代码,现在我收到一个数组错误