Hinzufügen von vorhandenen Dateien zu einem SQL-Projekt
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance
Als Konzept können Objekte nach der Erstellung eines SQL-Projekts einzeln oder massenweise hinzugefügt werden. Das gleichzeitige Hinzufügen von Objekten ist einfach, während das Hinzufügen von Objekten im Massenvorgang über den Inhalt einer .dacpac
-Datei oder eines oder mehrerer SQL-Skripts erfolgen kann. In diesem Artikel wird erklärt, wie man den Inhalt eines dacpacs oder von SQL-Skripten zu einem SQL-Projekt hinzufügt und welche Unterschiede es zwischen den beiden Quellen gibt.
Aus einer .dacpac
-Datei importieren
Eine .dacpac
-Datei ist ein kompiliertes Datenbankmodell und erfordert spezifische Tools zum Lesen und Anwenden der Datei. Eine .dacpac
-Datei kann als SQL-Projekt-Buildartefakt oder aus einer vorhandenen Datenbank generiert werden, und Sie erhalten möglicherweise eine Datei ohne Zugriff auf die Quelle. Zusätzlich zu den vielen Tools, die ein .dacpac
auf eine Datenbank anwenden kann, kann SQL Server Data Tools (SSDT) in Visual Studio den Inhalt einer .dacpac
-Datei direkt in ein Projekt importieren. Die Fähigkeit, ein Schema aus einer Datenbank oder DACPAC-Datei zu importieren, ist nur verfügbar, wenn noch keine Schemaobjekte im Projekt definiert sind.
Beim Import werden für Objektdefinitionen Skripts in Projektdateien erstellt, wobei die in SSDT enthaltenen betrieblichen Standardwerte für neue Objekte verwendet werden: neue Dateien für allgemeine Objekte, untergeordnete Hierarchieelemente, die in derselben Datei wie das übergeordnete Element definiert sind, oder inline definierte Tabellen- oder Spalteneinschränkungen (sofern möglich). Um die Sichtbarkeit und Steuerung der einzelnen Objekte zu verbessern, verwenden Sie anstelle von Importieren die Option Schemavergleich. Wenn die Importquelle Skripts vor und nach der Bereitstellung, RefactorLog-Dateien oder Definitionen von SQLCMD-Variablen enthält, werden diese in das Projekt importiert. Wenn eines dieser Artefakte bereits im Projekt enthalten ist, werden die importierten Dateien einem Projektordner namens Beim Import ignoriert hinzugefügt.
Wenn Visual Studio und SQL Server Data Tools nicht verfügbar sind, können Sie eine der folgenden Aktionen ausführen:
- Verwenden Sie die Erweiterung Schemavergleich in Azure Data Studio, um den Inhalt einer
.dacpac
-Datei mit einem Projekt zu vergleichen, und wenden Sie dann selektiv die Änderungen auf das Projekt an. - Verwenden Sie das Befehlszeilen-Hilfsprogramm SqlPackage, um den Inhalt einer
.dacpac
-Datei in eine Datenbank zu importieren und dann ein Projekt aus der Datenbank zu erstellen.
Importieren aus SQL-Skripts
T-SQL-Skripts können auf zwei Arten in ein SQL-Projekt importiert werden: durch Hinzufügen der Skriptdateien zum Projektverzeichnis oder durch Verarbeiten der Inhalte der Skripts in Visual Studio. Die von Ihnen ausgewählte Methode hängt vom Projekttyp und der gewünschten Kontrolle über den Importvorgang ab. In beiden Fällen muss die Syntax der Skriptdateien gültig sein.
Hinzufügen von Dateien zu einem Projekt
Mit SQL-Projekten im SDK-Stil können Sie einem Projekt vorhandene SQL-Skripts hinzufügen, indem Sie sie in das Projektverzeichnis einfügen, da Microsoft.Build.Sql automatisch alle *.sql
-Dateien im Projekt enthält. Wenn Sie ein Projekt im Nicht-SDK-Stil verwenden, müssen Sie vorhandene SQL-Skripts in das Projekt importieren, indem Sie die Skriptverarbeitung in Visual Studio verwenden. Die im Projekt automatisch enthaltenen *.sql
-Dateien werden im Datenbankmodell-Build als SQL-Objekte eingeschlossen.
Eine Datei, die dem Projektordner hinzugefügt wird, der eine doppelte Objektdefinition zu einem Objekt enthält, das bereits im Projekt vorhanden ist, führt dazu, dass der Projekt-Build fehlschlägt. Sie müssen den Konflikt manuell beheben, indem Sie das doppelte Objekt entfernen oder eines der Objekte umbenennen.
Um einem Projekt eine Datei als Skript vor/nach der Bereitstellung hinzuzufügen, müssen Sie die Datei zusätzlich zum Hinzufügen der Datei zum Projektverzeichnis auch in die Projektdatei aufnehmen. Wenn Sie beispielsweise eine Datei mit dem Namen Pre-DeploymentScript.sql
als Skript vor der Bereitstellung hinzufügen möchten, fügen Sie der Projektdatei Folgendes hinzu:
<ItemGroup>
<PreDeploy Include="Pre-DeploymentScript.sql" />
</ItemGroup>
Weitere Informationen zu Skripts vor/nach der Bereitstellung finden Sie in der Dokumentation zu SQL-Projekten.
Prozessinhalt von Dateien
SQL Server Data Tools (SSDT) in Visual Studio verfügt auch über die Möglichkeit, den Inhalt von SQL-Skripts zu verarbeiten und sie einem ursprünglichen Projekt hinzuzufügen. Während dieser Verarbeitung wird die Definition des Objekts aktualisiert, wenn ein Skript bereits im Projekt definiert ist. Wenn das Skript ein Objekt enthält, das noch nicht im Projekt definiert ist, wird eine neue Datei für das Objekt erstellt.
Es gibt bekannte Probleme, bei denen die Skriptverarbeitung zu doppelten Einschränkungen und Schlüsselanweisungen führen kann. Wenn diese Probleme auftreten, verwenden Sie das Build-Ausgabefenster, um die Quelle der Duplikate zu identifizieren und manuell aus dem Projekt zu entfernen.
Beim Import aus Skripts sind Skripts vor und nach der Bereitstellung, SQLCMD-Variablen oder RefactorLog-Dateien nicht enthalten. Diese und andere nicht unterstützte Konstrukte, die beim Import erkannt werden, werden projektweise in einer Datei ScriptsIgnoredOnImport.sql im Ordner Skripts abgelegt.