Best Practices for storing a database schema version in SQL Server?(在SQL Server中存储数据库架构版本的最佳实践?)
问题描述
我有一个将部署在安装了SQL Server的生产PC上的应用程序。 我希望能够在我的数据库中存储和检索模式的一个版本。 我对能够实现这一目标的最佳实践感兴趣,主要目标如下:
- 能够存储和轻松检索数据库的版本号。
- 隐藏或更难被客户端找到和操作。
- 创建新版本时能够编辑/更改。
- 备份数据库或分离数据库将保留版本号以供取证。
我希望有一种方法可以将"版本"存储在元数据中,而不是存储在普通表中,后者可以通过系统存储过程访问/设置。
有什么想法或最佳实践吗?
编辑:我发现的一个可能很有前途的选择是使用SQL Server扩展属性,将分配给数据库的键|值与"SCHEMA_VERSION"和版本号放在一起。它没有加密(但它的值可能是加密的),也没有隐藏,但至少从我们的一些用户和现场人员浏览的实际DB结构中删除了(令我沮丧!:))推荐答案
我是Red Gate的SQL源代码管理和SQL比较的产品经理。我们必须解决这个问题,因为我们的工具需要知道数据库的版本,以便选择适当的迁移脚本来构建完整的部署脚本。
我们考虑了版本表,这是最常见的自行设计的解决方案。然而,从我们的研究中我们了解到,用户希望保持数据库对象集‘不受污染’,因此我们选择了数据库级扩展属性。我们将其附加到脚本中,如下所示:
IF EXISTS (SELECT 1 FROM fn_listextendedproperty(N'SQLSourceControl Database Revision', NULL, NULL, NULL, NULL, NULL, NULL))
EXEC sp_dropextendedproperty N'SQLSourceControl Database Revision', NULL, NULL, NULL, NULL, NULL, NULL
EXEC sp_addextendedproperty N'SQLSourceControl Database Revision', @RG_SC_VERSION, NULL, NULL, NULL, NULL, NULL, NULL
将数据库加载到SQL Compare中时,它会执行检查,以确保它声称的版本与源代码管理中存储的版本相对应。
希望这能有所帮助!
这篇关于在SQL Server中存储数据库架构版本的最佳实践?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:在SQL Server中存储数据库架构版本的最佳实践?


基础教程推荐
- 如何在 SQL Server 的嵌套过程中处理事务? 2021-01-01
- SQL Server 中单行 MERGE/upsert 的语法 2021-01-01
- 使用pyodbc“不安全"的Python多处理和数据库访问? 2022-01-01
- ERROR 2006 (HY000): MySQL 服务器已经消失 2021-01-01
- 无法在 ubuntu 中启动 mysql 服务器 2021-01-01
- 在 VB.NET 中更新 SQL Server DateTime 列 2021-01-01
- SQL Server:只有 GROUP BY 中的最后一个条目 2021-01-01
- SQL Server 2016更改对象所有者 2022-01-01
- 将数据从 MS SQL 迁移到 PostgreSQL? 2022-01-01
- Sql Server 字符串到日期的转换 2021-01-01