2

Wie führe ich SQL in einer Azure SQL-Datenbank als Teil eines PowerShell-Skripts in einer VSTS-Build-Aufgabe in einem gehosteten Agenten aus?Wie Ausführen von SQL in einem PowerShell-Skript als Teil einer Visual Studio Team Services-Erstellungsaufgabe?

Es gibt viele verfügbaren Aufgaben für Build-Definitionen: Wir haben ein Powershell-Skript

enter image description here

oder implementieren SQL mit DACPAC oder SQLCMD

enter image description here

oder sogar ausführen Powershell mit Fernsteuerung Maschinen

enter image description here

aber wie SQL als Teil eines PowerShell-Skripts einfach ausführen? Invoke-Sqlcmd ist im Rahmen der Azure PowerShell-Aufgabe nicht verfügbar.

Ich denke, es wäre möglich, Remotedesktop zu einem App-Service zu installieren, installieren Sie die SQL Server-verwandten Bits und verwenden Sie "PowerShell auf Zielmaschinen", aber ich denke, es muss einen einfacheren Weg - vielleicht fehlt mir nur etwas Offensichtliches

+0

Verwenden Sie den gehosteten Agenten oder einen privaten Agenten? Ist Ihr SQL Server eine vorläufige SQL-Instanz oder eine Azure SQL-Instanz? –

+0

Gehosteter Agent und Azure SQL-Datenbank. Die Frage wurde auch aktualisiert – karl25233

Antwort

1

Sie können die Aufgabe Azure SQL Database Deployment verwenden. Es gibt SQL Script File- und Inline SQL Script-Typen.

enter image description here

Hinweis: Sie können Hosted Mittel verwenden, aber nicht VS 2017 Agent Hosted.

+0

Unsere SQL-Batch-Skripte müssen von einem benutzerdefinierten PowerShell-Skript ausgeführt werden; Dies wird für die Versionierung der Datenbank verwendet. Es sollte auch möglich sein, einen Fehler zu beenden, der zumindest über Invoke-Sqlcmd – karl25233

+0

@thomius Hosted Agent statt (nicht gehostet vs2017) möglich ist, dann können Sie Invoke-SqlCmd im PowerShell-Skript aufrufen. –

+0

Das (statt vs2017 gehostet) hat den Trick! – karl25233

1

aber wie man einfach SQL als Teil eines PowerShell-Skripts ausführt? Invoke-Sqlcmd ist im Rahmen der Azure PowerShell-Aufgabe nicht verfügbar.

Ich denke, wir dieses Powershell-Skript verwenden können SQL Azure Powershell für Azure SQL-Datenbank ausgeführt wird:

$connectionString = "Data Source=jasontest321.database.windows.net;Initial Catalog=jasonsql;User ID=jason;Password='password';Connection Timeout=90" 
$connection = New-Object -TypeName System.Data.SqlClient.SqlConnection($connectionString) 
$query = "insert into test1 values (3) ; ;" 
$command = New-Object -TypeName System.Data.SqlClient.SqlCommand($query, $connection) 
$connection.Open() 
$command.ExecuteNonQuery() 
$connection.Close() 

Hier ist mein Test:

enter image description here

Auch können wir verwenden Azure-Portal Abfrage-Editor zum Abfragen der Tabelle, wie folgt:

enter image description here

+0

Wäre es möglich, bei einem Fehler zu stoppen? Wir machen das Patchen mit Schema-Updates, getrennt durch GO-Anweisungen (und Logik wie "wenn die aktuelle Version nicht unterstützt wird, dann Fehler/Beenden) – karl25233

+0

Meinst du Powershell verwenden, um die Logik zu erreichen? Ja, wir können PowerShell verwenden, um die Version zu überprüfen und auszuführen Dieses Skript –

+0

@thomius Einfach einchecken, um zu sehen, ob die bereitgestellten Informationen hilfreich waren. Bitte lassen Sie mich wissen, wenn Sie weitere Unterstützung wünschen. –

Verwandte Themen