In mehreren Projekten hatten die Datenmodellierer von FastChangeCo des Data Management Center of Excellence (DMCE) Teams ein Problem, wie PowerDesigner die Kommentare für Tabellen und Spalten für die SQL Server Datenbank generiert. Xuefang Kaya (eine der Datenmodelliererinnen im Team), nach den Problemen gefragt, sagt zum DMCE-Team:

“Nein, es ist nicht so, dass PowerDesigner sich weigert, die Kommentare überhaupt zu generieren. Es ist eher so, dass PowerDesigner eine falsche DDL für den SQL Server generiert.”

Anpassen der DDL für Tabellen-/Spaltenkommentare in PowerDesigner

Was ist das Problem?

Die Nachforschungen von Xuefang zu diesem Problem ergeben folgendes:

Wenn ein Schema in der allgemeinen Registerkarte der Tabelleneigenschaften definiert ist, generiert PowerDesigner das folgende DDL, um einen Tabellenkommentar hinzuzufügen — das DDL für einen Spaltenkommentar ist ähnlich.

execute sp_addextendedproperty 'MS_Description',
'This is a column comment',
'user', 'Playground', 'table', 'MyCommentTable'
go

Wenn diese Abfrage in SQL Server Management Studio ausgeführt wird, erhält man eine Fehlermeldung:

Msg 15135, Level 16, State 1, Procedure sp_addextendedproperty, Line 37 [Batch Start Line 0]
Object is invalid. Extended properties are not permitted on 'Playground.MyCommentTable', or the object does not exist.

Warum gibt die Abfrage diese Fehlermeldung aus? Weil “Playground” kein Benutzer (user) ist, sondern ein Schema! Der Benutzer “Playground” existiert in der Beispieldatenbank gar nicht. Insofern ist die Fehlermeldung korrekt.

Übrigens, Microsoft empfiehlt nicht, einen Benutzer anzugeben, wenn man eine erweiterte Eigenschaft auf ein Datenbankobjekt anwendet! Dies kann zu Zweideutigkeiten bei der Namensauflösung führen [1].

Schema vs. User

We do not recommend specifying USER as a level 0 type when you apply an extended property to a database object, because this can cause name resolution ambiguity. For example, assume user Mary owns two schemas (Mary and MySchema) and these schemas both contain a table named MyTable. If Mary adds an extended property to table MyTable and specifies @level0type = N'USER', @level0name = Mary, it is not clear to which table the extended property is applied. To maintain backward compatibility, SQL Server will apply the property to the table that is contained in the schema named Mary.

Um eine Menge anderer Probleme zu vermeiden, ist das Anlegen des fehlenden Benutzers also wahrscheinlich nicht die beste Lösung, denkt sich Xuefang.

Was ist die Lösung?

Xuefang weiß, dass PowerDesigner die Möglichkeit bietet, die aktuellen DBMS-Eigenschaften zu bearbeiten. Mit dieser eingebauten Funktion ist es möglich, das beschriebene Problem zu beheben.

Während PowerDesigner es nicht erlaubt, die originalen RDBMS Dateien zu verändern, ist es notwendig, die existierende RDBMS Ressource Datei an einen anderen Ort zu kopieren [2].

The resource files provided with PowerDesigner inside the Program Files folder cannot be modified directly. To create a copy for editing, use the New tool on the resource file list, and save it in another location. To include resource files from different locations for use in your models, use the Path tool on the resource file list.

Die RDMBS Ressourcendateien enthalten alle Informationen für den PowerDesigner, um die DDL, DML und SQL zu generieren. Für viele Datenbanken gibt es RDBMS-Ressourcen-Dateien in unterschiedlichen Versionen.

Lest dazu den Artikel Eine angepasste DBMS-Ressourcendatei erstellen aus der PD Serie.

Die neu erstellte oder bereits vorhandene RDBMS-Ressourcendatei kann jetzt geändert werden. Dazu öffnet Xuefang den Dialog DBMS Properties über das Menu Database -> Edit Current DBMS…

Xuefang sucht und findet die richtigen Stellen in der RDBMS-Ressourcendatei um die Anpassung an dem DDL für die extendedproperty für Tabellen, Spalten und Views vorzunehmen (Ein Klick auf die Bilder öffnet diese):

 Table comment

 Verursacht einen Fehler:

Problem im Skript TableComment-Objekt des DBMS.

 Behoben:

Behoben: Problem im Skript TableComment-Objekt des DBMS.

 Table-Column comment

 Verursacht einen Fehler:

Problem im Skript ColumnComment-Objekt des DBMS.

 Behoben:

Behoben: Problem im Skript ColumnComment-Objekt des DBMS.

 View comment

 Verursacht einen Fehler:

Problem im Skript ViewComment-Objekt des DBMS.

 Behoben:

Behoben: Problem im Skript ViewComment-Objekt des DBMS.

Nachdem alle Tests erfolgreich abgeschlossen sind, freut sich das DMCE-Team, dass es am Ende eine einfache Lösung für eine lästige Unannehmlichkeit gefunden hat.

Das DMCE-Team ist so von diesem Vorgehen angetan, dass es auf diese Art und Weise noch mehr der Probleme, Unannehmlichkeiten und Fehler bei der Erzeugung der DDL-Dateien mit dem PowerDesigner beheben möchte.

Aber das ist eine andere Geschichte. Mehr darüber im nächsten Artikel der Serie. Ihr müsst unbedingt wieder vorbeischauen.

So long
Euer Dirk

Der vorherige Artikel in der PowerDesigner Serie ist: Standardwert anpassen
Der nächste Artikel in der PowerDesigner Serie ist: PowerDesigner auf Apple Mac Silicon
Zurück zur PowerDesigner Serie: PowerDesigner Serie

[1] https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-addextendedproperty-transact-sql
[2] PowerDesigner Documentation (v16.6 SP04, Chapter DBMS Definition Files)

 

 

Keine Kommentare

Kommentar hinterlassen

Als Antwort auf Some User

Dieses Formular ist durch Aimy Captcha-Less Form Guard geschützt