SSIS存储过程使用临时表2008和2014

2024-01-06

我目前正在编写一个 SSIS 包,它通过 OLE DB 源从存储过程中检索数据。存储过程包含一个相当讨厌的查询,我可以通过使用临时表来改进它。如果我将这些临时表切换为表变量,逻辑读取次数会从大约 130 万次跃升至大约 5600 万次。我对 130 万已经够不舒服了,但对 5600 万逻辑读取我绝对无法满意。因此,我无法真正将临时表转换为表变量。

但是,SSIS(或更确切地说 SQL Server)无法解析此查询的元数据,因此该包将无法运行。我在网上找到了一些不同的解决方案,但它们似乎都不适用于 SQL Server 2008 和 SQL Server 2014。我们目前正在将所有服务器升级到 2014 年,这个特定的包针对 2008 年运行DEV,2014 年进行质量检查,2008 年目前正在生产中。到秋季,PROD 级别将是 2014 年,DEV 级别将在此后的某个时间升级。不幸的是,我迫不及待地要等到这些升级发生才发布这个 SSIS 包。数据需要在下周开始变化。因此,我需要找到一种方法来解决这两种环境的元数据。到目前为止,这是我尝试过的:

  1. 添加一个虚拟选择IF 1=0 返回正确元数据的块。这在 2008 年有效,但在 2014 年则无效。

  2. Use SET FMTONLY OFF在存储过程的开头。这适用于 2008 年,但不适用于 2014 年。此外,它会导致存储过程为返回的每个列(在本例中超过 30 个)运行一次,即使它确实有效,这也是一个破坏性的因素。

  3. Use EXEC ... WITH RESULT SETS (( ... ));。这在 2014 年有效,但在 2008 年则无效。

  4. 部署一个返回正确元数据的存储过程,构建并部署 SSIS 包,然后将存储过程修改为正确的版本。这似乎在这两种环境中都不起作用,并且这会使我们的 ETL 框架内开发的任何其他 ETL 应用程序变得复杂。

如果我想不出任何办法,我可以将不同的存储过程和包部署到不同的层,但我非常不喜欢这样做。一方面,这将使未来的版本变得复杂,而且我还需要确保在升级服务器后我不会忘记更新存储过程和包。

我还可以在数据库中创建真实的表来代替这些临时表。我不太喜欢这个解决方案,但这是我可以忍受的。如果我最终这样做,我可能会转而使用WITH RESULT SETS将来。

然而,我个人不太关心这些解决方案,所以我想知道是否有任何我错过的解决方法可能会更好一些。


尽管您不情愿,但我认为您做出了正确的选择,并且专门的暂存区是正确的选择。我合作过的大多数生产 ETL 都有专门的暂存区database,不用介意桌子。然后,您将受益于能够更明确地控制存储,这使得性能更加可靠,并且整个事情通常更易于维护。例如,您可以为这些具有自己的文件组等的表创建一个专用的连续快速磁盘空间块。我当然宁愿看到 2 个独立的 SP 依赖于几个物理表,而不是一个真正粗糙的单个 SP。

也就是说,在不知道任何细节的情况下,这只是我的经验,因此对未来的读者提出警告:与所有数据库一样,一定要测量场景的实际性能(之前和之后),而不是根据查询做出任何假设计划——它可能会误导你。

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

SSIS存储过程使用临时表2008和2014 的相关文章

  • 从 SQL Server 中的子查询值或其他聚合函数获取平均值

    我有 SQL 语句 SQL Server SELECT COUNT ActionName AS pageCount FROM tbl 22 Benchmark WHERE DATEPART dw CreationDate gt 1 AND
  • 如何在 SQL Server 2008 中使用 GUID 数据类型?

    我想使用建立一个员工表SQL SERVER 2008 在我的表中 我希望为每个员工提供一个 ID 我听说过GUID我有点明白它是一种数据类型 但我无法使用它 你能告诉我使用它的方法吗 顺便说一句 假设我想要这样的东西 CREATE TABL
  • 导入到 SQL Server 时忽略 Excel 文件中的列

    我有多个具有相同格式的 Excel 文件 我需要将它们导入 SQL Server 我当前遇到的问题是 有两个文本列我需要完全忽略 因为它们是自由文本 并且某些行的字符长度超出了服务器允许我导入的长度 这会导致截断错误 因为我的分析不需要这些
  • SQL Server查询麻烦,多对多关系

    不知道如何用一行字来表达这个问题 对标题表示歉意 我的数据库中有3个表 例如 Shop Item 商店库存 Shop 和 Item 具有多对多关系 因此 ShopStock 表将它们链接起来 ShopStock 中的字段是 ID ShopI
  • SSIS 包失败并出现“无法获取连接”错误

    我们有一个从 Web 服务启动的 SSIS 包 在开发环境中 一切正常 但在 QA 环境中 尝试运行包时出现以下错误 无法获取连接 ConnectionName 连接可能未正确配置 或者您可能没有正确的权限这个连接 连接使用 SQL 登录
  • 解释 SQL Server 中 sys.objects 中的类型代码

    在 SQL Server 上 sys objects 表包含 Type 和 Type Desc 属性 例如 对于我的一个数据库 SELECT DISTINCT Type Type Desc FROM Sys Objects ORDER BY
  • 从 SQL Server 2012 查询结果中减去小时数

    我正在 SQL Server 2012 Management Studio 中的警报系统信号自动化平台数据库上运行查询 但遇到了一些问题 我的查询运行得很好 但我无法将结果细化到我想要的水平 我正在选择一些格式为的列DATETIME 我只想
  • 如何将 SQL 结果存入 STRING 变量?

    我正在尝试获取 C 字符串变量或字符串数 组中的 SQL 结果 是否可以 我需要以某种方式使用 SqlDataReader 吗 我对 C 函数和所有功能非常陌生 曾经在 PHP 中工作 所以如果可以的话请给出一个工作示例 如果相关 我已经可
  • 如何更新 SQL Server 2000 中的 text 或 ntext 字段

    所以我需要更新一个文本字段 在下面使用时 UPDATE 语句或 WRITETEXT 语句都不起作用 CREATE TABLE MyTable IDField int MyField text INSERT INTO MyTable IDFi
  • SQL Server 之间

    我有一个表 其中有年 月和一些数字列 Year Month Total 2011 10 100 2011 11 150 2011 12 100 2012 01 50 2012 02 200 现在 我想要SELECT2011 年 11 月至
  • 插入后触发更新表列?

    在同一个表中添加任何记录后 我需要更新表中的列 这是我的sql代码 CREATE TRIGGER dbo EmployeeInsert ON dbo APP Employees AFTER INSERT AS BEGIN SET NOCOU
  • 在 SSIS 2012 中为 Oracle CLOB 转换 DT_TEXT

    我正在使用 SSIS 2012 我有一个带有 DT TEXT 类型的输出列的脚本组件 它是来自网页的 XML 我有一个 OLE DB 目标 使用 OLE DB 的本机 OLD DB Oracle 提供程序 并且该字段的表定义为 CLOB 这
  • 如何防止 SQL Server 在导入数据时去除前导零

    A data file被导入到SQL Server桌子 数据文件中的一列是文本数据类型 该列中的值只能是整数 SQL Server 数据库中目标表中的相应列的类型为varchar 100 但在数据导入后 SQL Server 会存储以下值
  • 为什么某些字符无法从 CFQUERY 正确注入到 SQL Server?

    我有一个在 Lucee 上运行的 Coldfusion 应用程序 它连接到 SQL Server 数据库 当我直接在 SQL Server 管理器中运行以下查询时 UPDATE article SET content 20m WHERE i
  • 仅当变量不为空时 SQL 添加过滤器

    您好 我有疑问如下 SELECT route id ROUTE ID FROM route master NOLOCK WHERE route ou 2 AND route query l s query AND lang id 1 这里
  • 如何在 SQL Server 中添加具有自动增量值的字符串?

    如何在SQL Server中添加具有自动增量值的字符串 create table date sno int emp identity 1 1 我需要以下作为输出 emp 1 emp 2 用普通定义你的表INT IDENTITY column
  • SQL - 为每条记录调用存储过程

    我正在寻找一种方法来为 select 语句的每条记录调用存储过程 SELECT SomeIds SELECT spro Id FROM SomeTable as spro INNER JOIN Address addr ON addr Id
  • SQL Server Express 到 .mdf 文件的连接

    两部分问题 我使用 VS 2015 Update 3 创建了一个 ASP NET MVC 5 应用程序 我在本地计算机上完成了该项目 突然 我无法再通过 SQL Server 对象资源管理器连接到 mdf数据库文件并出现以下错误 无法打开数
  • SQL Server 相当于 MySQL 的 USING

    在 MySQL 中 当您连接不同表中具有相同名称的列时 可以在连接中使用关键字 USING 例如 这些查询产生相同的结果 SELECT FROM user INNER JOIN perm USING uid SELECT FROM user
  • SQL Server 转换选择一列并将其转换为字符串

    是否可以编写一条从表中选择列并将结果转换为字符串的语句 理想情况下 我希望有逗号分隔的值 例如 假设 SELECT 语句看起来像这样 SELECT column FROM table WHERE column lt 10 结果是一列包含值的

随机推荐

  • 如何合并单个提交?

    有时我同时与多个分支机构合作 假设我有名为 master release 1 1 和 Experimental 的分支 我创建一个新文件或在实验中进行更改 并且我希望将一项更改应用于其他分支 我可以在 git 中执行此操作吗 如果我只是将提
  • “已连接”UDP 套接字收到 ICMP 端口不可达

    基于 UDP 是无连接协议的前提 我假设主机是否启动或关闭都无关紧要 然而 现在我正在进行测试 我发现当我 连接 我的 UDP 客户端套接字时 write到该套接字会返回错误 因为服务器已发回 ICMP 端口不可达错误 连接 UDP端口的目
  • 如何测量 Android 上的 VRAM 消耗?

    我想获取Android设备VRAM大小 有没有从程序中获取的方法 让我们使用 Nexus One 进行一些计算 屏幕分辨率为 480x800 因此所需的最小视频内存大小为 400 800 4 bytes 1536000 bytes 假设驱动
  • 用于获取 HDR(高动态范围)是否处于活动状态的 Windows API

    我的环境是Windows 10 20H2 64位 和Visual Studio 2019 我正在开发一个应用程序作为 C WPF NET 5 项目 我想编写一个代码 表明 HDR 高动态范围 当前在系统上处于活动状态 在本文档中 https
  • 如何在 Objective C 中将一个块作为参数传递给另一个块

    我正在尝试定义一个以块作为参数的块 下面这行代码有什么问题 id cacheResult NSString id void NSString name id void block NSObject item nil block return
  • nvm:无法卸载当前活动的节点版本

    我正在 OSX 上执行此操作 我需要删除节点 但是当我输入 cmd 后 nvm uninstall v4 4 7它提示我nvm 无法卸载当前活动的节点版本 v4 4 7如何彻底卸载node 只需输入以下命令 nvm deactivate 然
  • AWS Kinesis 中的分区键是什么?

    我正在读关于AWS Kinesis 在下面的程序中 我将数据写入名为的流中TestStream 我运行这段代码 10 次 将 10 条记录插入到流中 var params Data More Sample data into the tes
  • Javascript函数变量突然变得未定义?

    这是最奇怪的事情 我的代码如下 function menuSwipe init dojo query div fill div container div menu div group ul forEach function item do
  • 配置 jsor 库以使 symfony 2/doctrine 2 与 postgis 扩展一起使用

    使用 Symfony 2 8 24 和 PostGIS 我需要THE TITLE 我发现this https github com jsor doctrine postgis在 github 中 但问题是那里的配置步骤对我没有多大帮助 我不
  • CSS 变换不影响子元素?

    我试图让卡片元素在悬停时向上移动 然后在不再悬停时向下移动 我目前正在通过使用来实现这一点transform and translate在CSS中 但是 我注意到这可能会影响子元素以及我希望此动画受影响的元素 这是我目前拥有的卡片的 HTM
  • 如何将md5字​​符串转换为普通文本? [复制]

    这个问题在这里已经有答案了 我已将用户密码以 MD5 形式保存在数据库中 现在我想以明文形式向用户发送密码 有什么方法可以将 MD5 字符串转换为明文吗 MD5 是一个hashing http en wikipedia org wiki C
  • 如何防止PHP页面被直接访问?

    下面是我用作 AJAX 脚本一部分的 JavaScript 片段 如何防止 user back end friends php 被直接访问 我不希望人们能够访问domain com user back end friends php 并查看
  • Node.js 在控制台上按下按键之前没有响应

    我有一个 Node js 应用程序 在 Windows Server 2008 上运行 我在这里面临一个奇怪的问题 我的应用程序执行多个异步任务 向socket io MySQL HTTP 连接 TCP 连接等发送数据 我的 Node 应用
  • 如何使用 @OneToMany 集合进行分页

    假设我有一个 Post 实体和 Comment 实体以及一对多关系 Entity class Post OneToMany List
  • Windows 服务在安装时选择用户或系统帐户

    安装Windows服务时 有没有办法让安装的用户在特定用户帐户和计算机帐户 例如LocalSystem 之间进行选择 我了解如何在构建时通过服务安装程序属性执行此操作 但不是在安装过程中执行此操作 Doobi Eric 根据我的经验 Win
  • 有没有办法自动输出requirements.txt?

    我想输出requirements txt对于我在 PyCharm 中的 Python 3 项目 有任何想法吗 尝试以下命令 pip freeze gt requirements txt
  • 如何同时实现 Laravel 5.5 和 Angular 4 项目?

    如果我想用 Laravel 5 5 实现 Angularjs 4 或 2 Angular 将使用 Laravel 的 API 最好的方法应该是什么 1 我应该在 xampp htdocs 中创建两个文件夹 例如 c xampp htdocs
  • 在 Spring4+STOMP+SockJS 应用程序中配置外部代理(RabbitMQ)

    我正在开发一个聊天应用程序 该应用程序使用 Spring4 Messaging 开发 并使用 SockJS 实现 STOMP 当我使用时该应用程序运行良好简单消息代理 config enableSimpleBroker queue topi
  • 如何在 GWT 表单面板中发布整个页面

    使用 GWT FormPanel 时 提交表单后 它会发布表单但不会重定向到操作 url 有谁能够帮助我 formPanelObject getElement
  • SSIS存储过程使用临时表2008和2014

    我目前正在编写一个 SSIS 包 它通过 OLE DB 源从存储过程中检索数据 存储过程包含一个相当讨厌的查询 我可以通过使用临时表来改进它 如果我将这些临时表切换为表变量 逻辑读取次数会从大约 130 万次跃升至大约 5600 万次 我对