Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 在sql server代理作业中搜索链接的服务器名称_Sql Server_Ssis - Fatal编程技术网

Sql server 在sql server代理作业中搜索链接的服务器名称

Sql server 在sql server代理作业中搜索链接的服务器名称,sql-server,ssis,Sql Server,Ssis,我有大约4台服务器(test1、test2、test3、test4),每台服务器都有5-6个数据库。每台服务器都安排了大约60个SQL server代理作业 服务器中的每个作业都有sql语句和SSIS包的组合。在SQL语句中,我们存储了从其他服务器访问表的过程 现在我想检查其他服务器的SQLServer代理作业中是否使用了ServerTest2 我尝试了以下查询,但没有得到任何结果 SELECT Job.name AS JobName, Job.enabled AS ActiveStatus,

我有大约4台服务器(test1、test2、test3、test4),每台服务器都有5-6个数据库。每台服务器都安排了大约60个SQL server代理作业

服务器中的每个作业都有sql语句和SSIS包的组合。在SQL语句中,我们存储了从其他服务器访问表的过程

现在我想检查其他服务器的SQLServer代理作业中是否使用了ServerTest2

我尝试了以下查询,但没有得到任何结果

SELECT Job.name AS JobName, Job.enabled AS ActiveStatus, 
       JobStep.step_name AS JobStepName, JobStep.command AS JobCommand
FROM sysjobs Job INNER JOIN
     sysjobsteps JobStep
     ON Job.job_id = JobStep.job_id
 WHERE JobStep.command LIKE '%test2%'
但当我在test1服务器中手动检查时,我可以看到test2服务器正在存储的进程和ssis包中使用


如何实现这一点?

这有点棘手。您需要分别搜索过程、文件系统和SQL Server。作业表仅包含入口点,而不包含每个步骤的定义

SSIS包,存储在SQL Server中

SSIS包存储在表中。定义存储在packagedata列中。在读取/搜索数据之前,您需要强制转换数据

-- How to read package data column.
SELECT TOP 10 
    [name],
    packagedata                                         AS [Before],
    CAST(CAST(packagedata AS VARBINARY(MAX)) AS XML)    AS [After]
FROM
    sysssispackages
;
存储在文件系统上的SSIS包

这些是XML文本文件。您可以使用自己喜欢的方法进行搜索。如果您想构建自己的解决方案

存储过程

有几种方法,它们都从系统表返回数据。一种方法是使用

如果你想把这个全部带来


使用该表,您可以构建一个包/应用程序来搜索给定的服务器名称。最终产品需要支持所有三种搜索方法。您可以使用subsystem列来选择每个步骤应使用的搜索方法。

SSIS包存储在哪里?在SQL Server中还是在文件系统中?如果是SQL Server,每个服务器上都有包吗?包存储在服务器和文件系统中。是的,所有服务器中都有包。
-- Returns definition of stored procedure.
SELECT
     OBJECT_DEFINITION(OBJECT_ID(N'[Your-Schema].[Your-Procedure]'))
;