📖💡 Befehlszeilenanwendung
Das Dienstprogramm sqlcmd
sqlcmd
Um eine Verbindung zu SQL Server herzustellen, ist nicht unbedingt eine grafische Oberfläche wie das Management Studio nötig, sondern es können dafür genauso Dienstprogramme von der Kommandozeile aus benutzt werden. Ein solches Dienstprogramm ist die Befehlszeilenanwendung sqlcmd. Dieses Tool ist vor allem bei regelmässig auszuführenden Datenbank- bzw. Wartungstasks sehr nützlich und hilfreich.
sqlcmd
kann in drei Modi ausgeführt werden:
SQLCMD-Modus im SSMS (SQL Server Management Studio)
In diesem Modus können über die grafische Oberfläche des SSMS entweder sqlcmd- oder T-SQL-Anweisungen eingegeben werden. Kennzeichnend ist, dass quasi vor jedem sqlcmd-Befehl ein : steht. Ein :!! bedeutet, dass ein Befehl in der Windows Command-Shell ausgeführt wird. Oft verwendete Befehle sind:
:help
zeigt Liste der Befehle:connect server[\instance] [-U user [-P password]]
stellt Verbindung her:out
lenkt den Output einer Anweisung in ein File z.B.:setvar
belegt oder löscht eine sqlcmd Variable:exit
verlässt sqlcmd unmittelbar
sqlcmd
im interaktiven Modus
sqlcmd
im interaktiven Modus In diesem Modus wird ausschliesslich über die Eingabeaufforderung gearbeitet und werden vor allem ad hoc-Queries abgesetzt. Welche Parameter mit diesem Programm verwendet werden können und was diese bedeuten, kann über die Eingabeaufforderung mit -?
angezeigt werden. Bei der Angabe der Parameter wird zwischen Gross- und Kleinschreibung unterschieden. Ohne Angabe eines Parameters baut sqlcmd
eine vertraute Verbindung zum lokalen Server auf. Eine erfolgreich hergestellte Verbindung wird dadurch deutlich, dass eine Zeilennummer am Anfang jeder Zeile eingeblendet wird.
sqlcmd
im Command-Modus
sqlcmd
im Command-ModusDieser Modus bietet für einen DBA den wahrscheinlich grössten Nutzen. In diesem Modus wird ebenfalls über die Eingabeaufforderung ein kompletter Befehl abgesetzt und mit ENTER ausgeführt. So kann beispielsweise mit einem Befehl eine Verbindung zu einer Instanz hergestellt, eine Abfrage ausgeführt und deren Ergebnis in eine Datei geschrieben werden.
SQL Server-Integration in die Windows PowerShell
Windows PowerShell-Befehle können als wertvolle Ergänzung zum SQL Server Management Studio angesehen werden. Die Windows PowerShell kann nicht nur T-SQL-Befehle ausführen, sondern stellt darüber hinaus eine mächtige Umgebung zur Skripterstellung dar, in welcher eine objektorientierte, auf dem .NET Framework basierende Skriptsprache zur Verfügung gestellt wird. Ein Vorteil der PowerShell-Umgebung ist, dass mit dieser in einer Windows- Infrastruktur verschiedene Server verwaltet werden können: Windows, Exchange, SharePoint, SQL Server, etc.
Das Dienstprogramm sqlps
Damit mit der Windows PowerShell auf SQL Server zugegriffen werden kann, liefert Microsoft das Dienstprogramm sqlps
mit. Bei diesem Programm handelt es sich um eine speziell für die Verwendung mit SQL Server angepasste PowerShell-Oberfläche (quasi eine PowerShell mit geladenen SQL-Erweiterungen), in welcher – ähnlich wie in einem Dateisystem – in der Verzeichnisstruktur des SQLSERVER-Laufwerks navigiert und eine bestimmte Aktion ausgeführt werden kann. Zudem kann sqlps
für Folgendes verwendet werden:
- Interaktives Ausführen von Windows PowerShell-Befehlen
- Ausführen von Windows PowerShell-Skriptdateien
- Ausführen von SQL Server-Cmdlets
Cmdlets: vordefinierte PowerShell-Skripts
Da in der PowerShell kein entsprechender Laufwerksbefehl zum Anzeigen eines Tabelleninhalts resp. überhaupt zum Ausführen von SQL-Befehlen existiert, muss hierfür ein sogenanntes SQL Server-Cmdlet verwendet werden: in diesem Fall das Invoke-Sqlcmd. Dieses spezifische Cmdlet ruft das Dienstprogramm sqlcmd auf und dient dazu, SQL-Anweisungen auszuführen. Das Cmdlet wird in der Regel vor die SQL- Direktive gesetzt.
Cmdlets werden mit dem sqlps-Module geladen und können als vordefinierte Skripte angesehen werden, die einem bestimmten Zweck dienen. Neben dem Invoke-Sqlcmd
gibt es noch eine Reihe weiterer Cmdlets wie z.B.:
Get-Command
Get-Help
Backup-SqlDatabase
Restore-SqlDatabase
Get-SqlCredential
Get-SqlDatabase
💡Aufgaben
Last updated
Was this helpful?