我有一个应用程序将部署在带有sql Server的生产PC上.
我想要能够在我的数据库中存储和检索模式的版本.
我对最佳做法感兴趣,能够实现这一目标,具有以下主要目标:
我想要能够在我的数据库中存储和检索模式的版本.
我对最佳做法感兴趣,能够实现这一目标,具有以下主要目标:
能够存储并轻松地检索数据库的版本号.
>客户隐藏或更难找到和操纵.
>创建新版本时,可以进行编辑/更改.
>备份数据库或删除数据库保留版本#取证.
我希望有一种方法可以在元数据中存储“版本”,而不是通过系统存储过程访问/设置普通表.
任何想法或最佳做法?
编辑:我发现一个可能有希望的选项是使用sql Server扩展属性,将分配给“Schema_Version”和版本号的密钥|值分配给DB.它不是加密的(但是值可以),并且不被隐藏,但是至少从我们的一些用户和现场人员浏览的实际DB结构中移除(对我的沮丧!:))
解决方法
我是Red Gate的sql Source Control和sql Compare的产品经理.我们必须解决这个同样的问题,因为我们的工具需要知道数据库所在的版本,以便选择适当的迁移脚本来构建完整的部署脚本.
我们考虑了一个版本表,这是最常用的本土解决方案.然而,从我们的研究中,我们了解到用户希望保持数据库对象的集合无污染,所以我们选择了数据库级扩展属性.我们将脚本添加到脚本中,如下所示:
IF EXISTS (SELECT 1 FROM fn_listextendedproperty(N'sqlSourceControl Database Revision',NULL,NULL)) EXEC sp_dropextendedproperty N'sqlSourceControl Database Revision',NULL EXEC sp_addextendedproperty N'sqlSourceControl Database Revision',@RG_SC_VERSION,NULL
当数据库加载到sql Compare中时,它会执行检查,以确保其声明的版本与存储在源代码控件中的版本相对应.
希望这可以帮助!