Ask*_*_SO 2 sql-server ssis sql-server-2008
我想通过执行SQL查询找到SSIS包的最后修改日期。例如,下面的查询按desc顺序返回过程的最后修改日期。我期望对SSIS包进行相同类型的查询。是否可以从DB获得这些信息?
select
name,
create_date,
modify_date
from sys.objects
where type='P'
order by modify_date desc
Run Code Online (Sandbox Code Playgroud)
我不允许对最后一个答案发表评论,但是在SQL Server 2016中,因为包可以单独部署,也可以作为完整项目部署(如果使用),
USE SSISDB
GO
SELECT MAX(p.last_deployed_time) AS last_deployed_time
FROM [internal].[projects] p
INNER JOIN [internal].[packages] pk
Run Code Online (Sandbox Code Playgroud)
这样一来,您将永远无法获得正确的答案,因为您正在查看项目的部署日期。
SSIS软件包的版本跟踪似乎是在2016年在项目级别上,而不是在软件包级别上,所以我不知道是否有办法找到部署特定软件包的确切日期。
请参阅https://www.timmitchell.net/post/2016/11/11/ssis-catalog-project-versioning/了解有关此方面的一些良好信息。
在 SSISDB 中,您可以看到在特定时间执行了哪个 VERSION_BUILD。如果您使用代码存储库(TFS?),您可以找到哪个版本的包具有该 version_build,以及该版本何时存储在存储库中。这就是您想知道的修改日期。
您需要的 sql 语句的 SSIS 部分可能是这样的:
use SSISDB
select top 50
xs.execution_path
,cast(xs.start_time as datetime2(0)) as start_time
,x.project_version_lsn
,p.version_build
from internal.executables x
join internal.executable_statistics xs on x.executable_id = xs.executable_id
join internal.packages p
on x.project_id = p.project_id
and x.project_version_lsn = p.project_version_lsn
and x.package_name = p.name
where x.package_name = 'Package1.dtsx'
and x.executable_name = 'Package1'
order by start_time desc
Run Code Online (Sandbox Code Playgroud)
如何查询您的代码存储库是您的下一个挑战。
在包的代码视图中,在前 20 行中,您会发现类似以下内容:
DTS:VersionBuild="62"
Run Code Online (Sandbox Code Playgroud)
如果只需要知道最新部署的版本是多少,而不管是否实际执行过,可以查询:
select max(version_build) as latest_version_build
from internal.packages
where name = 'Package1.dtsx'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9504 次 |
| 最近记录: |