Wenn Sie SQLCMD verwenden , können Sie :r FileName
eine separate .sql-Datei hinzufügen.
: r Dateiname
Analysiert zusätzliche T-SQL-Anweisungen und SQLCMD-Befehle aus der durch FileName angegebenen Datei in den Anweisungscache. Dateiname wird relativ zum Startverzeichnis für Visual Studio gelesen. Die Datei wird gelesen und ausgeführt, nachdem ein Stapelabschluss festgestellt wurde. Sie können mehrere: r-Befehle ausgeben. Die Datei kann einen beliebigen SQLCMD-Befehl enthalten, einschließlich des in Extras, Optionen definierten Stapelabschlusszeichens. Sie können Folgendes verwenden: r in einem Skript vor oder nach der Bereitstellung, um andere Skripts einzuschließen.
Michael Fredrickson
quelle
Im Sinne der alten C-Präprozessoren definitiv nein
Wenn Sie eine Reihe von Dateien mit vorgegebenen absoluten Pfaden haben, die Sie in einer bedingungslosen Reihenfolge einschließen möchten, können Sie das Befehlszeilentool sqlcmd oder SSMS in sqlcmdmode verwenden, wie von @mfredrickson und @Marian erwähnt.
Wenn Sie jedoch relative Pfade oder bedingte Includes wünschen, müssen Sie einen Wrapper verwenden, der sqlcmd (oder einen seiner veralteten Vorgänger isql oder osql) aufruft.
Derzeit bin ich in dieser Situation in meinem Job und überprüfe und erweitere alte vbs- und hta-Codes. Ich bin nicht ganz glücklich, aber es ist eine pragmatische Entscheidung. Es funktioniert und der Endbenutzer ist mit der hta-GUI zu Hause und es ist keine zusätzliche Softwareinstallation erforderlich.
Für ein frisches Design würde ich anfangen, über WPF und PowerShell nachzudenken, um Aufrufe von sqlcmd zu verpacken, aber bei unseren derzeitigen Kunden kann ich nicht davon ausgehen, dass PowerShell V2 vorhanden ist.
In früheren Zeiten haben wir für diesen Zweck einfache Cmd-Stapel geschrieben, von denen einige noch in Gebrauch sind.
Ich denke, es gibt aktuelle Tools, insbesondere für das Targeting von Workflows, die hier geeignet sein könnten. Mit denen kenne ich mich nicht aus.
quelle
Neben dem SQLCMD-Modus in Management Studio können Sie auch eine Stapeldatei als Masterdatei verwenden, um alle Ihre SQL-Dateien mithilfe des SQLCMD-Dienstprogramms anzuordnen und aufzurufen .
Der SQLCMD-Modus ist eine Simulation der Dienstprogrammnutzung im Management Studio, sodass zwischen den Modi kein großer Unterschied besteht. Abgesehen davon, dass ich irgendwann lieber Batches ausführen möchte (kein Öffnen von M Studio mehr ... Laden der korrekten Datenbank ... usw.). Ich bevorzuge es, alles im Batch zu konfigurieren, einschließlich der Ausgabedateien.
quelle
Ich stimme zu, ein T-SQL-Präprozessor wird dringend benötigt. Ich habe mein eigenes in C # entwickelt, was mich eine Stunde gekostet hat. Neben der Kontrolle über die Ausführungsreihenfolge von SQL-Skripten kann ich auch Makros verwenden, die wie skalare UDFs aussehen und bequem zu verwenden sind, aber genauso schnell arbeiten wie Inline-UDFs.
quelle
Ich mag die Antwort von bernd_k . Abhängig davon, wie Sie Ihre Skripte benannt haben, z. B. mit einer Nummer, kann SQL Server PowerShell (SQLPS) verwendet werden, wenn Sie SQL Server 2008 oder höher ausführen. Selbst wenn Sie SQL 2005 verwenden, können Sie PowerShell und SMO für 2005 verwenden.
Randnotiz: Ich glaube, SQLCMD wird irgendwann in die Abschreibungsliste aufgenommen und durch SQLPS, PowerShell, ersetzt.
Es gibt noch einige andere Optionen.
quelle
SQLCMD
lassen Sie es mich wissen, da das meiste, was ich finde, auf PowerShell verweist . Ich sehe auch nicht die Referenz, wosqlcmd
mit SSDT außer vielleicht für den Schema-Vergleich verwendet wird, aber ich verwende nie die generierten Skripte.