我使用sql server 2008 r2 dmvs和dmfs创建了一个监控工具。我通过tsql为它创建了一个sql server作业,有9个步骤将它部署到客户端站点。
我的问题是找出一种方法来以某种方式包含与作业一起存储的版本,以便我知道何时升级作业以进行下一次部署。任何想法如何做到这一点?
提前致谢!
答案 0 :(得分:0)
您可以向数据库对象添加自定义属性,如下所示:
EXEC sp_addextendedproperty
N'YourProperyName', N'SomeValue',
N'SCHEMA', N'dbo',
N'TABLE', N'MyTable'
但我不知道它是否适用于工作。 或者也许使用作业的描述字段:
select top 10 * from msdb.dbo.sysjobs
答案 1 :(得分:0)
您可以使用sp_addextendedproperty来版本化msdb.dbo.sysjobs表或列(例如version_number);但是,您不能为特定记录执行此操作。由于扩展属性值的TYPE是SQLVARIANT,因此可以在msdb.dbo.sysjobs表上存储XML,描述所有作业的版本。
或者您可以在数据库中创建一个表并存储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';
答案 2 :(得分: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。 Source
这样做需要更改' level1_object_type'到' JOB'这不是一个选择。