【问题标题】:Find 'Execute SQL Task' component execution server (SQL Server Integration Services)查找“执行 SQL 任务”组件执行服务器(SQL Server 集成服务)
【发布时间】:2017-05-08 00:22:20
【问题描述】:

我在 SSIS 包中有一个“执行 SQL 任务”组件。

Connection manager: 'Server A' 
Database: Finance_Warehouse 
SQL Query:   SELECT batch_date FROM Finance_Warehouse.etl_audit WHERE
   curr_batch_ind IS NULL 
SSIS Package: Runs from Server B

 

我的问题:当我在“服务器 B”中执行 SSIS 包时,“执行 SQL 任务”组件 SQL 查询将在哪里运行?服务器 A 还是服务器 B?

另外,我如何验证(该组件/SQL 查询在哪个服务器上运行)?

我的假设是,它将在“服务器 A”上运行,因为 SQL Server 安装在“服务器 A”中,但正在寻找专家的肯定答案。

提前致谢,

跟踪详细信息:

【问题讨论】:

  • ConnectionManager 指向特定数据库,您的查询将在该数据库上运行。
  • 感谢您的评论。有没有一个选项可以查看它在哪里执行?报告/日志等?
  • SELECT db_name();

标签: sql-server sql-server-2008 ssis


【解决方案1】:

它将在服务器 A 中运行,您可以通过在包运行时运行分析器/跟踪来查看。

(或)

您也可以使用 DMV。在您的程序包运行时在服务器 A 或服务器 B 中运行以下查询,如果结果显示程序包中的查询,那么这就是您的查询正在执行的服务器。

SELECT sqltext.TEXT,
req.session_id,
req.status,
req.command,
req.cpu_time,
req.total_elapsed_time
FROM sys.dm_exec_requests req
CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS sqltext

参考链接:https://blog.sqlauthority.com/2009/01/07/sql-server-find-currently-running-query-t-sql/

【讨论】:

  • 您好,感谢您的回复。我运行跟踪并试图了解查询在哪里运行。我应该查看 ServerName 还是 HostName?我无法在此处附上屏幕截图。所以,把它附加到我的主要问题上。另外,有没有办法同时监控服务器 A 和服务器 B 的 CPU?
  • HostName - 运行查询的计算机的名称。
【解决方案2】:

这取决于您如何设置任务的 ByPass 属性。

将“BypassPrepare”属性设置为 true 意味着,准备(解析)查询由您连接到的数据库引擎完成。否则准备工作由集成服务包完成。

【讨论】:

  • 感谢您的回复。好吧,它用于解析查询。我正在寻找证据来查看查询的执行位置。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-13
  • 2022-01-05
  • 2015-06-15
  • 2020-02-12
  • 1970-01-01
相关资源
最近更新 更多