Übersicht über Datenbankskripts
Aktualisiert: November 2007
Datenbankskripts sind zusätzliche Dateien mit Transact-SQL (T-SQL)-Anweisungen oder Dienstprogramme wie SQLCMD, die nicht Teil der Datenbankschemadefinition sind. Sie können Datenbankskripts im Rahmen der Bereitstellung (Skripts vor oder Skripts nach der Bereitstellung) oder als allgemeine Verwaltungsskripts verwenden, die im Datenbankprojekt gespeichert werden.
Während der Datenbankumgestaltung für ein Schemaobjekt können Sie automatisch alle Skripts aktualisieren, die ein Datenbankobjekt enthalten, das im Rahmen des Vorgangs umbenannt wird.
Der Ordner Skripts unterstützt die folgenden Vorgänge:
Neues Element hinzufügen
Ordner hinzufügen
Skript hinzufügen
Aus Projekt ausschließen
Versionskontrollvorgänge (z. B. Einchecken, Auschecken)
Ausschneiden
Kopieren
Delete
Umbenennen
Eigenschaften
Skripts im Ordner Skripts unterstützen die folgenden Aktionen:
Öffnen
Öffnen mit
Aus Projekt ausschließen
Versionskontrollvorgänge (z. B. Einchecken, Auschecken)
Ausschneiden
Kopieren
Delete
Umbenennen
Eigenschaften
Bereitstellungsskripts
Wenn Sie ein Datenbankprojekt erstellen, werden das Skript vor der Bereitstellung, die Datenbankobjektdefinitionen und das Skript nach der Bereitstellung in einem Buildskript zusammengeführt. Sie können nur ein Skript vor der Bereitstellung und ein Skript nach der Bereitstellung angeben. Diese können jedoch weitere Skripts enthalten. Zusätzliche Skripts werden mit SQLCMD eingeschlossen. (Weitere Informationen erhalten Sie im entsprechenden Abschnitt in diesem Thema.) Wenn Sie das Datenbankprojekt erstellen, werden alle eingeschlossenen Skripts mit dem Buildskript zusammengeführt.
Sie legen ein Skript vor der Bereitstellung fest, indem Sie die Build Action-Eigenschaft der Skriptdatei auf PreDeploy festlegen. Analog wird ein Skript nach der Bereitstellung festgelegt, indem die Buildvorgang-Eigenschaft der Skriptdatei auf PostDeploy festgelegt wird. Wenn Sie ein Skript als Skript vor der Bereitstellung oder als Skript nach der Bereitstellung festlegen und ein anderes Skript zuvor für diese Buildaktion festgelegt wurde, wird die Buildaktion für das andere Skript automatisch auf Nicht im Build festgelegt. Dieses Verhalten ist vorgesehen, weil für jedes Datenbankprojekt nur ein einziges Skript vor der Bereitstellung und ein einziges Skript nach der Bereitstellung vorhanden sein darf.
Beim Importieren eines Datenbankschemas werden die meisten Schemainformationen in Datenbankobjektdefinitionen des Datenbankprojekts importiert. Einige Informationen (wie Anmeldedaten, Berechtigungen, Regeln und Vorgaben) werden stattdessen in zusätzliche Skripts vor oder Skripts nach der Bereitstellung importiert. Bei diesem Vorgang werden zusätzliche Dateien im Unterordner für vor oder im Unterordner für nach der Bereitstellung des Ordners Skripts für das Datenbankprojekt erstellt. Diese zusätzlichen Skriptdateien sind je nach Bedarf im Skript vor oder im Skript nach der Bereitstellung enthalten. Die enthaltenen Skripts weisen eine Buildvorgang-Eigenschaft auf, die auf Nicht im Build festgelegt ist, da diese nicht direkt im Skript enthalten sind. Stattdessen werden sie indirekt durch das Skript vor oder das Skript nach der Bereitstellung eingeschlossen. Nicht erkannte Skriptanweisungen werden in die Datei ScriptsIgnoredOnImport.sql im Ordner Skripts eingefügt.
Wichtiger Hinweis: |
---|
Wenn die Bereitstellungsskripts auf Datenbankobjekte verweisen, deren Namen oder Merkmale sich zu einem späteren Zeitpunkt ändern, müssen Sie die Bereitstellungsskripts manuell anpassen, oder die Bereitstellung führt zu einem Fehler. Wenn Sie beispielsweise über Regeln und Vorgaben verfügen, die an eine Tabelle gebunden sind, und Sie die Tabelle umbenennen, wird das Bereitstellungsskript nicht aktualisiert, und die Bindung führt zu einem Fehler, sofern das Skript nicht geändert wird. Wenn Sie die Tabelle durch Umgestaltung mit Umbenennung umbenennen, wird das Bereitstellungsskript im Rahmen der Umgestaltung aktualisiert. |
Importieren von Datenbankschemas und Skripts vor der Bereitstellung
Die Datei script.predeployment.sql stellt standardmäßig das primäre Skript vor der Bereitstellung dar. Dieses Skript wird automatisch als leere Datei erstellt, wenn Sie ein Datenbankprojekt erstellen. Wenn Sie ein Datenbankschema importieren, werden im gleichen Ordner wie das Skript vor der Bereitstellung möglicherweise weitere Skripts automatisch erstellt. Wenn zusätzliche Skripts erstellt werden, werden der Datei script.predeployment.sql Anweisungen hinzugefügt, um die zusätzlichen Skripts einzuschließen. Sie können eine andere Datei als Skript vor der Bereitstellung festlegen, indem Sie die entsprechende Buildvorgang-Eigenschaft auf PreDeploy festlegen.
Hinweis: |
---|
Sie können nur für ein Skript vor der Bereitstellung die Buildvorgang-Eigenschaft auf PreDeploy festlegen. Wenn Sie mehrere Skripts im Vorfeld der Bereitstellung verwenden möchten, müssen Sie ein Skript vor der Bereitstellung der obersten Ebene festlegen, das weitere Skripts vor der Bereitstellung enthält. Verwenden Sie dazu die folgende Anweisung: SQLCMD :r.\Dateiname.sql. |
Wichtiger Hinweis: |
---|
Sie müssen das Skript vor der Bereitstellung manuell ändern, um Objekte zu erstellen, wenn während eines Schemaimports nicht ausreichende Informationen zum Neuerstellen der Objekte importiert werden können. Beispielsweise müssen Sie das Skript ändern, um Verschlüsselungsschlüssel und Zertifikate zu erstellen. |
Die Skriptdateien in der folgenden Tabelle werden generiert, wenn Sie ein Datenbankschema importieren:
Dateiname |
Berücksichtigungsreihenfolge |
Hinweise |
---|---|---|
Logins.sql |
Erstens |
Dieses Skript enthält Definitionen für alle Microsoft SQL Server-Anmeldedaten, die in der Quelldatenbank definiert sind. Anmeldedaten werden mit CREATE LOGIN in Microsoft SQL Server 2005 und mit sp_addlogin in SQL Server 2000 geschrieben. |
LinkedServers.sql |
Second |
Dieses Skript enthält Anweisungen, um verknüpfte Server zu erstellen. (Weitere Informationen finden Sie unter "Verknüpfen von Servern" auf der Microsoft-Website.) Wenn Sie das Datenbankschema importieren, wird dem Skript für jeden verknüpften Server in der Quelldatenbank eine sp_addlinkedserver-Anweisung hinzugefügt. |
CustomErrors.sql |
Drittens |
Dieses Skript enthält benutzerdefinierte Fehlermeldungen. Wenn Sie das Datenbankschema importieren, wird dem Skript für jede benutzerdefinierte Fehlermeldung in der Quelldatenbank eine sp_addmessage-Anweisung hinzugefügt. |
EncryptionKeysAndCertificates.sql |
Viertens |
Dieses Skript enthält Platzhalter für alle CREATE SYMMETRIC KEY-, CREATE ASYMMETRIC KEY-, CREATE MASTER KEY- und CREATE CERTIFICATE-Anweisungen in der Quelldatenbank.
Hinweis:
Dieses Skript wird nur für SQL Server 2005 verwendet.
|
Importieren von Datenbankschemas und Skripts nach der Bereitstellung
Die Datei script.postdeployment.sql stellt standardmäßig das primäre Skript nach der Bereitstellung dar. Dieses Skript wird automatisch als leere Datei erstellt, wenn Sie ein Datenbankprojekt erstellen. Wenn Sie ein Datenbankschema importieren, können zusätzliche Skripts erstellt werden. Wenn zusätzliche Skripts erstellt werden, werden der Datei script.postdeployment.sql Anweisungen hinzugefügt, um die zusätzlichen Skripts einzuschließen. Sie können eine andere Datei als Skript nach der Bereitstellung festlegen, indem Sie die entsprechende Buildvorgang-Eigenschaft auf PostDeploy festlegen.
Hinweis: |
---|
Sie können nur ein Skript nach der Bereitstellung mit einer Buildvorgang-Eigenschaft auf PostDeploy festlegen. Wenn Sie mehrere Skripts im Anschluss an die Bereitstellung verwenden möchten, müssen Sie ein Skript nach der Bereitstellung der obersten Ebene erstellen, das weitere Skripts für nach der Bereitstellung enthält. Verwenden Sie dazu die folgende Anweisung: SQLCMD :r.\Dateiname.sql. |
Wichtiger Hinweis: |
---|
Möglicherweise müssen Sie die Skripts für nach der Bereitstellung manuell ändern, um Objekte zu erstellen oder zu aktualisieren, wenn während eines Schemaimports nicht ausreichende Informationen zum Neuerstellen oder Ändern der Objekte importiert werden können. Ein Beispiel hierfür ist das Zuordnen von Benutzern zu Rollen. |
Die Skriptdateien in der folgenden Tabelle werden generiert, wenn Sie ein Datenbankschema importieren:
Dateiname |
Order |
Hinweise |
---|---|---|
Storage.sql |
Erstens |
Dieses Skript enthält Definitionen für Speicherobjekte, z. B. Dateien und Dateigruppen. |
Permissions.sql |
Second |
Dieses Skript enthält ggf. die Berechtigungen GRANT, REVOKE oder DENY für die Zieldatenbank. Wenn Sie ein Datenbankschema importieren, werden der Datei Permissions.sql Anweisungen für Berechtigungen in der Quelldatenbank hinzugefügt. |
RoleMemberships.sql |
Drittens |
Dieses Skript enthält alle sp_addrolemember-Anweisungen, die erforderlich sind, um Benutzer und Rollen einander zuzuordnen. |
RulesAndDefaults.sql |
Viertens |
Dieses Skript enthält zusätzliche Anweisungen, um Regeln und Vorgaben für die Zieldatenbank zu definieren. Wenn Sie ein Datenbankschema importieren, werden dem Skript RulesandDefaults weitere Anweisungen hinzugefügt, um Regeln und Vorgaben an Spalten oder Aliasdatentypen zu binden und Sicherheitskonten als Member einer vorhandenen SQL Server-Datenbankrolle in der Datenbank hinzuzufügen. Die Anweisungen, die dem Skript hinzugefügt werden, finden Sie in der folgenden Tabelle. |
DatabaseObjectOptions.sql |
Fünftens |
Dieses Skript enthält Optionen, die nach der Bereitstellung auf Datenbankobjekte angewendet werden. |
Signatures.sql |
Sechstens |
Dieses Skript enthält alle Signaturdefinitionen für die Zieldatenbank. Wenn Sie ein Datenbankschema importieren, werden dem Skript Signatures.sql weitere Anweisungen für jede Signatur in der Quelldatenbank hinzugefügt. Hinweis Dieses Skript wird nur für SQL Server 2005 verwendet. |
Regeln, Standards und Sicherheitskonten werden wie folgt hinzugefügt:
Ziel |
SQL Server 2005 |
SQL Server 2000 |
---|---|---|
Binden einer Regel an eine Spalte oder einen Aliasdatentyp |
ALTER TABLETabellennameADD CONSTRAINTEinschränkungsnameCHECK |
sp_bindrule |
Binden eines Standardwerts an eine Spalte oder einen Aliasdatentyp |
ALTER TABLETabellennameADD CONSTRAINTEinschränkungsnameDEFAULT |
sp_binddefault |
Hinzufügen eines Sicherheitskontos als Member einer vorhandenen SQL Server-Datenbankrolle |
sp_addrolemember |
sp_addrolemember |
Zusätzliche Skripts
Zusätzlich zu Bereitstellungsskripts können Sie dem Datenbankprojekt weitere Skripts für allgemeine Zwecke hinzufügen. Sie können dem Ordner Skripts im Datenbankprojekt zur besseren Übersicht über zusätzliche Skripts weitere Unterordner hinzufügen. Wenn Sie ein zusätzliches Skript im T-SQL-Editor öffnen, können Sie eine Verbindung mit dem Datenbankserver herstellen und das Skript teilweise oder vollständig ausführen. Wenn Sie über Standardüberwachungsskripts verfügen, können Sie auf diese Weise jedes Skript mit der zugehörigen Datenbank speichern und unter das gleiche Versionskontrollsystem stellen wie das Datenbankschema. Die Buildvorgang-Eigenschaft dieser Skripts ist auf Nicht im Build festgelegt.
Siehe auch
Aufgaben
Gewusst wie: Angeben von Skripts vor der Bereitstellung und Skripts nach der Bereitstellung
Gewusst wie: Hinzufügen von Verwaltungsskripts zu einem Datenbankprojekt
Konzepte
Übersicht über das Erstellen und Bereitstellen einer Datenbank
Übersicht über die Terminologie der Database Edition
Weitere Ressourcen
Verwalten von Datenbankverbindungen im Transact-SQL-Editor
Analysieren und Ausführen von Skripts im Transact-SQL-Editor