Sql server sqlazure友好的数据库版本控制思想

Sql server sqlazure友好的数据库版本控制思想,sql-server,azure,azure-sql-database,ddl,extended-properties,Sql Server,Azure,Azure Sql Database,Ddl,Extended Properties,我有许多相同的SQL Azure数据库,用于需要跟踪其版本的类似客户端。据我所知,2014年11月的SQL Azure不支持扩展属性,如果支持扩展属性,我可以使用扩展属性来跟踪版本控制更改,就像这里所做的那样: 我正在考虑通过制作一个DDL触发器来调整这个概念,该触发器改变了一个只保存版本注释的存储过程 所以我的问题是关于策略的——存储过程是保存此类信息的最佳位置,还是有更好的地方将文本版本控制信息存储在SQLAzure容器中?我不一定要在每个数据库中添加一个表,因为这会冲淡数据库的用途,并为

我有许多相同的SQL Azure数据库,用于需要跟踪其版本的类似客户端。据我所知,2014年11月的SQL Azure不支持扩展属性,如果支持扩展属性,我可以使用扩展属性来跟踪版本控制更改,就像这里所做的那样:

我正在考虑通过制作一个DDL触发器来调整这个概念,该触发器改变了一个只保存版本注释的存储过程

所以我的问题是关于策略的——存储过程是保存此类信息的最佳位置,还是有更好的地方将文本版本控制信息存储在SQLAzure容器中?我不一定要在每个数据库中添加一个表,因为这会冲淡数据库的用途,并为滑稽行为留出空间,它需要自己的维护和表结构的填充等等

我的后续问题是关于策略的——在TSQL中,通过字符串操作来附加注释文本,完全改变过程的最佳方式是什么


谢谢

您似乎在问如何在存储过程中存储一些数据,这很奇怪,因为SQL server是存储数据的绝佳工具,但不是存储过程

我想说一个更好的策略是创建一个非常简单的表来存储您在评论中提到的信息

CREATE TABLE dbo.DatabaseVersion
(
    Date datetime,
    VersionNumber decimal(5,2),
    Description narchar(40)
);
只需在每个DDL触发器上向该数据库写入一行

我想说,你反对它的理由很简单,但也许你可以为这个元数据创建一个数据库模式,即

CREATE SCHEMA Metadata;

为了明确表的用途,并将上面DDL中的“dbo.”更改为“Metadata.”某些权限可以防止滑稽行为,如果需要注意表结构,最好将其作为一级数据表,而不是作为存储过程中的一些非结构化注释来执行。

这与 ""在某种意义上,就是以模糊的方式存储一些数据

我认为函数在定义上会更短:

CREATE FUNCTION [dbo].[fn_GetVersion]()
RETURNS NVARCHAR(100)
BEGIN
  RETURN N'YYYYMMDD-HHMM and a version number and 40 chars of text'
END
。。。在数据检索方面:

Select [dbo].[fn_GetVersion]();
并且可以通过触发器中的动态DDL进行更新:

Exec ('ALTER FUNCTION [dbo].[fn_GetVersion]()
RETURNS NVARCHAR(100)
BEGIN
  RETURN N''YYYYMMDD-HHMM and version number and other 40 chars of text''
END')

您想使用过程文本来存储数据,这是对的吗?你想在那里储存什么?修改日期?@usr,我想在YYYYMMDD-HHMM中存储一个日期和一个版本号以及40个字符的文本。