SQL Server 中临时表的范围

2023-12-14

我编写了一个存储过程来将数据从一个数据库导入和转换到另一个数据库。每次导入都会采用一个公司 ID 并导入与该公司相关的所有数据。

为了帮助完成转换步骤,我使用临时表。作为脚本审查的一部分,我被告知要使用表变量而不是临时表。 审阅者声称,如果我们同时运行两个不同的导入,临时表将被共享并损坏导入。


问题:

  • 如果我们同时运行两个不同的导入,临时表是否会共享?
  • 是否每次调用EXEC创建一个新范围?

这是一个人为的脚本示例。

CREATE PROC [dbo].[ImportCompany]
(
    @CompanyId AS INTEGER
)
AS
EXEC [dbo].[ImportAddress] @CompanyId = @CompanyId 
--Import other data

CREATE PROC [dbo].[ImportAddress]
(
    @CompanyId AS INTEGER
)
AS
    CREATE TABLE #Companies (OldAddress NVARCHAR(128), NewAddress NVARCHAR(128))
    INSERT INTO #Companies(OldAddress, NewAddress)
    SELECT
        Address as OldAddress,
        'Transformed ' + Address as NewAddress
    FROM
        [OldDb].[dbo].[Addresses]
    WHERE
        CompanyId = @CompanyId

    --Do stuff with the transformed data

    DROP TABLE #Companies

EXEC [dbo].[ImportCompany] @CompanyId = 12345

From CREATE TABLE:

本地临时表仅在当前会话中可见

并且(更重要的是):

如果在可由多个用户同时执行的存储过程或应用程序中创建本地临时表,则数据库引擎必须能够区分不同用户创建的表[原文如此 - 几乎可以肯定这应该说会话而不是用户]。数据库引擎通过在内部将数字后缀附加到每个本地临时表名称来实现此目的。

这恰恰反驳了那些说他们会被分享的人的观点。


另外,也没有必要DROP TABLE在程序结束时(再次来自同一链接):

当存储过程完成时,在存储过程中创建的本地临时表将自动删除

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQL Server 中临时表的范围 的相关文章

  • 选择出现多次的行

    TableOne PersonId PersonScore 1 10 1 20 2 99 2 40 3 45 我只需要获取 PersonId 多次出现的那些行 例如以下是我想要实现的结果集 PersonId PersonScore 1 10
  • sql server中的str_to_date函数?

    MySQL有一个函数叫STR TO DATE 将字符串转换为日期 http dev mysql com doc refman 5 1 en date and time functions html function str to date
  • SQL Server 中“WITH SCHEMABINDING”的缺点?

    我有一个数据库 其中有数百个名称尴尬的表 CG001T GH066L 等 并且我对每个表都有其 友好 名称的视图 例如 视图 CUSTOMERS 是 SELECT FROM GG120T 我想将 WITH SCHEMABINDING 添加到
  • 检查SQL Server数据库表中是否存在表或列

    在 SQL Server 数据库中创建列或表之前 我想检查所需的表和 或列是否存在 我已经四处搜寻 到目前为止发现了两种方法 我不想使用存储过程 通过使用SqlCommand ExecuteScalar 方法并捕获异常来确定表 列是否存在
  • 在每个条目一分钟内通过联系人查找 20 个或更多条目

    我们正在收集联系人及其访问的每个页面的一些分析数据 许多分析数据来自恶意攻击或机器人 因此它们在一分钟之内就访问了网站的 20 多个页面 我希望能够每天清除一次这些数据 但不知道如何编写一个 SQL 查询来选择该联系人在一分钟内访问超过 2
  • mysql查询获取根父级

    我的表中有以下数据categories id parent id title 1 0 A 2 1 B 3 2 C 4 3 D 5 4 E 现在我想获取类别 id 4 的根类别标题 parent id 0 即标题 A 的类别 id 1 如何在
  • MySQL JOIN 的评估顺序是什么?

    我有以下查询 SELECT c FROM companies AS c JOIN users AS u USING companyid JOIN jobs AS j USING userid JOIN useraccounts AS us
  • CROSS APPLY WHERE 子句在交叉应用之前或结果之后起作用吗

    我正在做一种我们在一个内部应用程序中需要的自定义模糊匹配算法 我正在努力加快速度 当我对模糊函数进行交叉应用以查找建议的匹配项时 我不想搜索不必要的数据 这是函数 select top 5 Manufacturer Manufacturer
  • 用数组“插入”

    我想知道是否有一种方法可以在值列表上使用 插入 我正在尝试这样做 insert into tblMyTable Col1 Col2 Col3 values value1 value2 value3 所以 我想说的是 value2 将是一个字
  • 如何在后台调用存储过程?

    我有一个存储过程 大约需要 2 3 分钟才能完成执行 从 ado net 我想让存储过程执行在后台发生 一旦我向存储过程发出请求 我就必须返回到我的代码 谁可以帮我这个事 你应该调查一下螺纹加工 http msdn microsoft co
  • 如何在 MySQL 中进行数据透视表

    我有一个关于如何在 MySQL 中旋转表的问题 我有一个数据集 像这样的列 ID Name job title 1 Sam Fireman 2 Tomas Driver 3 Peter Fireman 4 Lisa Analyst 5 Ma
  • 如何使用 SQL 获取数据库中所有表的列表?

    获取 SQL Server 上特定数据库中所有表的名称的最佳方法是什么 SQL Server 2000 2005 2008 2012 2014 2016 2017 或 2019 SELECT FROM INFORMATION SCHEMA
  • “'OFFSET'附近的语法不正确”将sql comm 2012修改为2008

    我用这个列出问题 SELECT q qTitle q qDescription q qCreatedOn u uCode u uFullname qcat qcatTitle q qId q qStatus FROM tblQuestion
  • 从 SQL Server 中查询 XML 列返回多行(重访)

    问题的答案从 SQL Server 2008 中查询 XML 列返回多行 https stackoverflow com questions 9873192 returning multiple rows from querying xml
  • 在 ASP.Net Core 应用程序中动态更改 SQL Server 连接字符串

    我一开始打开一个数据库 然后需要根据用户选择两个值打开另一个数据库 数据库选择必须在运行时进行 并且每次都会改变 尝试使用连接字符串类访问连接字符串 并尝试了其他选项 例如我不理解的单例 我在运行 SQL Server Express 的本
  • WHERE IN 条件不接受字符串值

    我正在动态构造一个带有名称的字符串用户数据在 PL Sql 过程中通过附加用户名 单引号 和逗号 的形式 abc123 xyz456 pqr789 但是当我将此字符串传递给 SELECT 语句的 WHERE IN 条件时 SELECT FR
  • 在创建 IDENTITY 的同一个 T-SQL 语句中获取 IDENTITY 值?

    有人问我是否可以有一个插入语句 其中有一个作为 身份 列的 ID 字段 以及分配的值是否也可以插入到同一插入语句中同一记录中的另一个字段中 这可能吗 SQL Server 2008r2 Thanks 你不能真正做到这一点 因为将用于的实际值
  • 什么时候数据库被称为嵌入式数据库?

    术语 嵌入式数据库 与 数据库 具有不同的含义吗 我见过的嵌入式数据库有两种定义 嵌入式数据库就像专门为 嵌入式 空间 移动设备等 设计的数据库系统一样 这意味着它们在紧张的环境中 内存 CPU 方面 可以合理地执行 嵌入式数据库就像不需要
  • 更改使用文本文件的 SSIS 日志提供程序创建的文件的文件编码

    我是 SSIS 新手 我已经设计了一个包并为文本文件配置了 SSIS 日志提供程序 这工作正常并且日志文件已成功生成 我们有一个监控团队 他们使用这个日志文件进行监控 他们无法读取日志文件 因为文件编码是 Unicode 格式 他们期望使用
  • 将 GROUP BY 与 FIRST_VALUE 和 LAST_VALUE 结合使用

    我正在处理一些当前以 1 分钟间隔存储的数据 如下所示 CREATE TABLE MinuteData Id INT MinuteBar DATETIME Open NUMERIC 12 6 High NUMERIC 12 6 Low NU

随机推荐

  • UML 用例图中是否存在泛化?

    我正在尝试对一些需求进行建模 并且在网上看到了一些带有用例概括的示例 但是UML 2 5 标准审查没有提到用例图中的泛化 或者我找不到它 那么 泛化有标准支持吗 由于用例是一个分类器 因此它们可以被泛化 UML 2 5 规范包含一个示例 如
  • 如何在 Swift 中表示质量大小?

    SI units enum Magnitude Measurement case Milli Measurement 3 ml case Centi Measurement 2 cl case Desi Measurement 1 dl c
  • 在 Javascript 中查找复选框是否获得焦点

    在 Javascript 中 我如何判断复选框是否具有焦点 我认为会有一个名为 isfocused 的方法或属性 但显然不是 我所说的焦点是指他们已经使用键盘切换到它 此时按空格键会选中该框 创建一个连接到 onfocus 事件的事件处理程
  • 按线程排序

    我有一项任务 需要工作代码 在开始之前我想了解这个问题 但我不知道如何写它 我有一组数据 以此为例 var arr new byte 5 3 1 7 8 5 3 2 6 7 9 3 2 4 2 1 我需要将此数组分成两半 将其放入线程池中并
  • xml 资源中的警告

    昨天我再次安装了 ADT 插件 因为我已经拥有的版本遇到了问题 间歇性 问题是 我没有在所有 xml 资源中收到警告 我非常确定我以前没有见过他们 其中一些很烦人 因为我对此无能为力 Nested weights are bad for p
  • Django 如何从给定模型实例的自定义字段调用方法?

    我有以下模型 class CustomField models CharField def foo self return foo class Test models Model col1 models CharField max leng
  • 请帮助我理解这段 JavaScript 代码片段中的“while”循环

    我见过这样的代码片段 用于使用条件注释在 JavaScript 中检测 IE var ie function var undef v 3 div document createElement div the while loop is us
  • 数组中的匿名函数

    我已声明 func array a gt array b gt function echo hello 我尝试以这种方式调用但它不起作用 call func a b call 我收到一个错误致命错误 函数名称必须是字符串 如何调用匿名函数
  • 在 api.ai 中处理范围的最佳方法?

    我有一个房地产机器人 我需要处理以下情况 我正在寻找 1200 平方英尺的房子 我正在寻找 1200 1500 平方英尺的房子 我正在寻找面积在 1200 平方英尺到 1500 平方英尺之间的房子 另一种情况是我的机器人询问 您要找多少平方
  • 使用 BeautifulSoup 仅获取 URL 列表的第一个链接

    我解析了整个 HTML 文件 使用 Python 中的 Beautifulsoup 模块提取了一些 URL 代码如下 for link in soup find all a for line in link if condition in
  • phpseclib sftp->put() 命令:文件内容只是一个字符串,不是预期的 PDF 文档

    我正在尝试使用 sftp put 将 PDF 文档从阶段服务器上传到远程位置 CODE sftp new SFTP config SFTP SERVER login to remote server if sftp gt login con
  • Excel VBA,从非活动工作表获取范围

    当我查看 临时 表时 该脚本运行良好 但是当我在另一张纸中时 复制命令失败 它给出了一个Application defined or object defined error Sheets Temp Range Cells 1 Cells
  • 显示:内联块在 safari 上不起作用

    我一直在我朋友的网站上解决菜单问题 该网站的网址是 colorfil webd pl sandbox sylwia 请查看菜单 主导航 右上角菜单 文件管理器菜单 在所有现代浏览器上 chrome FF opera 菜单看起来不错 在 Sa
  • 如何列出bash脚本中声明的变量?

    在我的 bash 脚本中 有很多变量 我必须做一些事情来将它们保存到文件中 我的问题是如何列出脚本中声明的所有变量并获取如下列表 VARIABLE1 abc VARIABLE2 def VARIABLE3 ghi set将输出变量 不幸的是
  • struts如何查找css文件?

    我正在使用 struts 2 在我的 JSP 中我有一个
  • 如何使用 ffmpeg 转换整个目录?

    如何通过命令行或批处理脚本使用 ffmpeg 转换整个目录 文件夹 For Linux and macOS这可以在一行中完成 使用参数扩展更改输出文件的文件扩展名 for i in avi do ffmpeg i i i mp4 done
  • 如何在不设置行高的情况下设置div中的行间距

    我有一个包含显示设置为内联块的元素的 div 这些包含的元素具有不同的高度 div 中生成的行具有不同的高度 具体取决于其中元素的高度 这就是我想要的 但我想在 div 的行之间添加一些空格 例如 具有背景颜色设置的相邻行中的元素之间应该有
  • 如何做相当于“限制不同”?

    如何将结果集限制为n给定列的不同值 其中实际行数可能更高 输入表 client id employer id other value 1 2 abc 1 3 defg 2 3 dkfjh 3 1 ldkfjkj 4 4 dlkfjk 4 5
  • 如何使用 ms sql 进行更新和排序

    理想情况下我想这样做 UPDATE TOP 10 messages SET status 10 WHERE status 0 ORDER BY priority DESC 中文 我想从数据库获取前 10 条可用 状态 0 消息并锁定它们 状
  • SQL Server 中临时表的范围

    我编写了一个存储过程来将数据从一个数据库导入和转换到另一个数据库 每次导入都会采用一个公司 ID 并导入与该公司相关的所有数据 为了帮助完成转换步骤 我使用临时表 作为脚本审查的一部分 我被告知要使用表变量而不是临时表 审阅者声称 如果我们