简单的情况。我创建了一个使用SQL Server作为数据库的应用程序。我可以在这个数据库中添加一个表,其中包含我的应用程序的版本号,因此我的应用程序可以检查它是否正在与数据库的正确版本进行通信。但是由于我没有存储在数据库中的其他设置,这意味着我将添加一个包含单个字段的表,其中只包含一个记录。
浪费了很多资源......
是否有另外一个wat,我可以告诉SQL Server数据库它链接到的产品版本?
我对SQL Server本身的版本以及它正在使用的数据库不感兴趣。
(顺便说一句,这适用于SQL Server 2000和2005。)
答案 0 :(得分:4)
如果您正在使用SQL 2005及更高版本,则可以将版本信息存储为数据库本身的扩展属性,并查询sys.extended_properties视图以获取信息,例如:
sys.sp_addextendedproperty @name=N'CurrentDBVersion', @value=N'1.4.2'
SELECT Value FROM sys.extended_properties WHERE name = 'CurrentDBVersion' AND class_desc = 'DATABASE'
如果是SQL 2000,我认为你唯一的选择是你自己的一行表。开销几乎不存在。
答案 1 :(得分:1)
我会带着一个带有tinyint PK的varchar(5)字段的大量开销。如果您正在谈论已经使用SQL Server数据库的产品,那么它最有意义。
你担心系统这么小的部分会产生开销,它变得可以忽略不计。
答案 2 :(得分:0)
我会将连接设置放在应用程序或应用程序读取的配置文件中。让应用程序检查连接设置中的版本号。
答案 3 :(得分:0)
即使SQL Server中有这样的功能,我也不会使用它。为什么呢?
答案 4 :(得分:0)
我强烈建议将数据库版本写入数据库。 在我们维护了十多年的应用程序中,我们每次发布都会更新数据库模式。 当用户在更新安装后启动应用程序时,它可以检测数据库是否已旧并将其转换为较新的架构。我们实际上做了一个增量更新:为了从7到10我们做了7 - > 8,8-> 9,9-> 10。 还可以想象某人将数据库从备份还原到较旧状态的情况。
甚至不考虑添加单个表,只需这样做(并考虑用例)。