Bei Assemblies z.B. ist es üblich, Versionsnummer in Assembliesinfo zu verpacken, Oberflächen besitzen eigene Dialogboxen oder Seiten About, um die Versionsinfo dem Anwender zur Verfügung zu stellen.
Was ist mit Datenbanken, muss man eine Datenbank mit einer Versionsnummer versehen? Wird eine Datenbank nur von einer Anwendung verwendet, kann man in einigen Fällen die Datenbank und die Anwendung unter einer Versionsnummer zusammen ausliefern, dann wird das About-Anwendungsfenster ausreichend sein. Bei Enterprise-Lösungen wird eine Datenbank von „zich“ Web- und Windows-Services, Enterprise Service Bus, Web- und Desktop- Anwendungen verwendet, dazu kommen noch ETL-Prozesse, BI-Lösungen, die die Datenbank als Ziel oder Datenquelle anbinden. Mit anderen Wörtern wird eine Datenbank in einer Enterprise Lösung als einzelne Komponente betrachtet, deren Aktualisierung nicht zwingend eine Aktualisierung von anderen Komponenten der Gesamtlösung erfordert. Es ist auch umgekehrt gültig, beim Bugfixing einer Middleware-Anwendung wird die Datenbank nicht neu bereitgestellt, daher bleibt sie unter einer anderen Version bestehen.
Also ja, man sollte eine Datenbank mit einer Versionsnummer versehen. Die Frage ist „Wie?“.
Man könnte eine Tabelle Version erstellen, in der die ganze Versionsinfo abgespeichert wird. Es gibt aber für SQL Server Datenbanken (ab SQL Server 2005) auch eine andere Möglichkeit, die ich persönlich viel eleganter finde als eine Version-Tabelle. Die Möglichkeit ist, erweiterte Eigenschaften einer Datenbank und Datenbankobjekten einzusetzen. Im Beispiel 1 zeige ich, wie Datenbankeigenschaften um die Version und Bereitstellungsinfo erweitert werden können. Die erweiterten Eigenschaften einer Datenbank sind in SQL Server Management Studio über das Fenster Database Properties und die Seite Extended Properties zu erreichen (s. Abbildung 1).
Möchte man die erweiterten Eigenschaften von einer Anwendung aus abfragen, steht die Funktion fn_listextendedproperty zu Verfügung, ein Einsatz der Funktion ist auch in dem Beispiel 1 zu finden.
Beispiel 1: Erstellen von erweiterten Eigenschaften Version, Last deployment, Deployed by der aktuellen Datenbank
-- Stored Procedure -- dbo.merge_extended_db_property -- erstellt oder aktualisiert erweiterte Eigenschaften -- der aktuellen Datenbank -- @name - Name der Eigenschaft -- @value - Wert der Eigenschaft create proc dbo.merge_extended_db_property @name sysname, @value sql_variant as begin if not exists ( select name from fn_listextendedproperty(@name, default, default, default, default, default, default) ) begin exec sys.sp_addextendedproperty @name, @value end exec sys.sp_updateextendedproperty @name, @value end go -- Erweiterte Eigenschaft 'Version' -- Version der bereitgestellten Datenbank declare @name sysname = N'Version' declare @value varchar(16) = '1.3.25' exec dbo.merge_extended_db_property @name,@value go -- Erweiterte Eigenschaft 'Last deployment' -- Das Datum der Bereitstellung der Datenbank declare @name sysname = N'Last deployment' declare @value varchar(128) = convert(varchar(128),getdate(),121) exec dbo.merge_extended_db_property @name,@value go -- Erweiterte Eigenschaft 'Deployed by' -- Anmeldename des Benutzers, -- der die Datenbank bereitgestellt hat declare @name sysname = N'Deployed by' declare @value varchar(128) = system_user exec dbo.merge_extended_db_property @name,@value go -- Löscht die Prozedur dbo.merge_extended_db_property drop proc dbo.merge_extended_db_property goAbbildung 1: Anzeigen erweiterter Eigenschaften in SSMS
Verwandte Links
Keine Kommentare:
Kommentar veröffentlichen