我需要将版本放到SQL Server 2005数据库上,并从.NET应用程序中访问它们.我在想的是在数据库上使用名为"version"的扩展属性,当然值将是数据库的版本.然后,我可以使用SQL来实现此目的.我的问题是这听起来像一个好的计划还是有更好的方法将版本添加到SQL Server数据库?
让我们假设我无法使用表来保存元数据.
我这样做:
创建架构表:
CREATE TABLE [dbo].[SchemaVersion]( [Major] [int] NOT NULL, [Minor] [int] NOT NULL, [Build] [int] NOT NULL, [Revision] [int] NOT NULL, [Applied] [datetime] NOT NULL, [Comment] [text] NULL)
更新架构:
INSERT INTO SchemaVersion(Major, Minor, Build, Revision, Applied, Comment) VALUES (1, 9, 1, 0, getdate(), 'Add Table to track pay status')
获取数据库架构版本:
SELECT TOP 1 Major, Minor, Build from SchemaVersion ORDER BY Major DESC, Minor DESC, Build DESC, Revision DESC
改编自我对Coding Horror的看法
我们按照您的描述使用扩展属性,它的效果非常好.
我认为拥有一张桌子有点矫枉过正.如果我想跟踪数据库中的差异,我使用源代码控制并将所有数据库生成脚本保留在其中.
我还使用了一些ER图工具来帮助我跟踪数据库版本的变化.这不在实际应用程序之内,但它允许我快速查看更改的内容.
我认为这是CASEStudio,或类似的东西.