3

我使用 sql server 2008 r2 dmvs 和 dmfs 创建了一个监控工具。我通过 tsql 为它创建了一个 sql server 作业,通过 9 个步骤将其部署到客户端站点。

我的问题是找到一种方法以某种方式包含与作业一起存储的版本,以便我知道何时升级作业以进行下一次部署。任何想法如何做到这一点?

提前致谢!

4

3 回答 3

0

您可以像这样向数据库对象添加自定义属性:

EXEC sp_addextendedproperty
    N'YourProperyName', N'SomeValue',
    N'SCHEMA', N'dbo',
    N'TABLE', N'MyTable'

但我不知道它是否适用于工作。或者也许使用工作的描述字段:

select top 10 * from msdb.dbo.sysjobs
于 2013-03-14T14:08:25.867 回答
0

您可以使用 sp_addextendedproperty 对 msdb.dbo.sysjobs 表或列进行版本化(例如 version_number);但是,您不能对特定记录执行此操作。由于扩展属性值的 TYPE 是 SQLVARIANT,您可以将 XML 存储在 msdb.dbo.sysjobs 表中,描述所有作业的版本。

或者您可以简单地在您的数据库中创建一个表并存储 job_id (GUID) 和您当前的版本号 - 一个自定义解决方案。

值得一提的是,这里是您如何使用 sp_addextendedproperty 在 sysjobs 表上添加、查看、更新和删除扩展属性的方法。我去了 COLUMN,但你可以在桌子上停下来:

--Add the 'Version' extended property to msdb.dbo.sysjobs.[version_number] column.
EXECUTE sp_addextendedproperty N'Version', '1.0.0.0', 'SCHEMA', N'dbo', 'TABLE', N'sysjobs', 'COLUMN', N'version_number';

--Update the 'Version' extended property
EXECUTE sp_updateextendedproperty N'Version', '1.0.0.2', 'SCHEMA', N'dbo', 'TABLE', N'sysjobs', 'COLUMN', N'version_number';

--View the current value of 'Version'
SELECT objtype, objname, name, value
FROM fn_listextendedproperty(N'Version', 'SCHEMA', N'dbo', 'TABLE', N'sysjobs', 'COLUMN', N'version_number');

--Drop the 'Version' extended property
EXECUTE sp_dropextendedproperty N'Version', 'SCHEMA', N'dbo', 'TABLE', N'sysjobs', 'COLUMN', N'version_number';
于 2014-03-31T16:50:18.557 回答
0

您不能使用 sp_addextendedproperty 在作业中保存版本号

[@level1type=]{'level1_object_type'}

是级别 1 对象的类型。level1_object_type 是 varchar(128),默认为 NULL。有效输入为 AGGREGATE、DEFAULT、FUNCTION、LOGICAL FILE NAME、PROCEDURE、QUEUE、RULE、SYNONYM、TABLE、TABLE_TYPE、TYPE、VIEW、XML SCHEMA COLLECTION 和 NULL。资源

这样做需要将“level1_object_type”的值更改为“JOB”,这不是一个选项。

于 2018-02-05T17:09:28.840 回答