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