2017-05-08 124 views
1

我在SSIS包中有'执行SQL任务'组件。查找'执行SQL任务'组件执行服务器(SQL Server集成服务)

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 

我的问题:当我执行SSIS包 '服务器B',其中将 '执行SQL任务' 组件SQL查询运行?服务器A或服务器B?

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

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

由于提前,

跟踪细节:

trace details

+1

的ConnectionManager指向一个特定的数据库,你的查询将在该数据库上运行。 – observer

+0

感谢您的评论。有没有一个选项可以看到它被执行的地方?报告/日志等? – Ash

+0

SELECT db_name(); – observer

回答

1

它将在服务器A中运行,您可以通过在包运行时运行profiler/trace来查看该服务器。

(或)

您也可以使用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/

+0

嗨,谢谢你的回应。我运行跟踪并试图了解运行查询的位置。我应该查看ServerName还是HostName?我无法在此处添加屏幕截图。所以,附在我的主要问题上。另外,有没有办法同时监控服务器A和服务器B的CPU? – Ash

+0

HostName - 查询正在运行的计算机的名称。 –

+0

通过添加DMV代码编辑主帖。 –

0

这取决于你如何设置你的任务的旁路性能。

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

+0

谢谢你的回应。那么,它是用来解析查询的。我正在寻找证据来查看查询的执行位置。 – Ash