2

如何在託管代理的VSTS構建任務中針對Azure SQL數據庫執行SQL,作爲PowerShell腳本的一部分?如何在PowerShell腳本中執行SQL作爲Visual Studio Team Services構建任務的一部分?

有許多可用於生成定義許多任務:我們可以遠程執行PowerShell腳本

enter image description here

或部署使用DACPAC或SQLCMD

enter image description here

甚至SQL執行的PowerShell機器

enter image description here

但如何簡單地執行SQ​​L作爲PowerShell腳本的一部分? Invoke-Sqlcmd不作爲「Azure PowerShell」任務的一部分提供。

我想可以遠程桌面到一個應用程序服務,在那裏安裝SQL Server相關的位並使用'目標機器上的PowerShell',但我覺得必須有一個更簡單的方法 - 也許我只是缺少東西明顯

+0

您是使用託管代理還是私人代理?你的SQL服務器是一個本地SQL實例還是一個Azure SQL實例? –

+0

託管代理和Azure SQL數據庫。更新了問題 – karl25233

回答

1

您可以使用Azure SQL數據庫部署任務,這裏有SQL腳本文件和內聯SQL腳本類型。

enter image description here

注意:您可以使用託管代理人,而不是託管VS 2017年代理。

+0

我們的SQL批處理腳本必須從一個自定義的PowerShell腳本執行;這用於版本化數據庫。它應該也能夠退出錯誤,至少可以通過Invoke-Sqlcmd – karl25233

+0

@thomius使用託管代理(而不是託管的vs2017),然後您可以在PowerShell腳本中調用Invoke-SqlCmd。 –

+0

(託管而不是vs2017)做到了! – karl25233

1

但如何簡單地執行SQ​​L作爲PowerShell腳本的一部分? Invoke-Sqlcmd不作爲「Azure PowerShell」任務的一部分提供。

我認爲,我們可以利用這個PowerShell腳本來運行SQL與Azure的PowerShell執行Azure的SQL數據庫:

$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() 

這裏是我的測試:

enter image description here

同時,我們也可以使用Azure門戶查詢編輯器查詢表如下:

enter image description here

+0

有可能在出錯時停止嗎?我們正在進行修補,其中包括由GO語句分隔的模式更新(以及類似於「如果當前版本不支持,然後錯誤/退出」的邏輯) – karl25233

+0

您的意思是使用powershell來實現邏輯嗎?是的,我們可以使用PowerShell檢查版本並運行 –

+0

@thomius檢查是否提供的信息是有幫助的請讓我知道是否需要進一步的幫助 –

相關問題