2013-02-19 64 views
1

我有託管在Windows Azure實例上的Web應用程序。我們有一個測試和現場雲服務,測試服務有1個實例,現場服務有3個實例。在部署到Windows Azure實例時升級數據庫模式

測試應用程序每晚通過TFS Builds自動部署,並使用Power Shell腳本部署到Windows Azure。

問題是我們有舊學校的SQL腳本,用於數據庫模式和數據更改(如果需要)。目前我們必須手動登錄到azure sql數據庫(SMSS)並運行腳本。

我想通過使用PowerShell腳本通過TFS生成計算機每晚運行的每個構建自動化SQL腳本。我怎樣才能做到這一點 ?

SQL腳本是可重新運行的,因此如果它每天運行相同的腳本,就不會擔心,因爲這不會在測試應用程序上產生任何問題。

回答

0

也許我錯了,但我看到這很簡單。爲什麼不通過PowerShell腳本調用SQL腳本文件作爲參數的「sqlcmd.exe」實用程序?

請務必使用SQL Server 2008 R2或更高版本附帶的sqlcmd.exe,以便與SQL Azure正常協作。

+0

嗨大衛 感謝您的回覆。 當azure項目部署在Azure實例上時,默認情況下在機器上未安裝sqlcmd.exe實用程序。 我有遠程桌面的實例,並試圖sqlcmd在命令提示符,但沒有運氣。 您是否必須在項目中包含SQL Server 2008 R2客戶端工具的安裝? 請指教? – user1754675 2013-02-21 09:48:35

+0

是的,您可以在您的角色中包含sqlcmd.exe(和依賴關係),然後從.cmd啓動任務調用它。我在過去的某些項目中已經完成了這項工作,但是......從描述中,您需要從TFS構建機器運行此腳本,而不是從角色運行。您的TFS構建計算機是否在Azure上運行虛擬機角色? – 2013-02-25 11:24:47

0

我想了解SQL包是如何部署的。

看起來您有一個必須在部署數據庫後每次運行的腳本。這可以使用powershell(ExecuteNonQquery)完成,就像它可以爲內部部署的SQL Server完成一樣。

單個查詢:

$SqlConnection = New-Object System.Data.SqlClient.SqlConnection 
$sqlQuery = "Your Query here" 
$SqlConnection.ConnectionString = "Database Conncetion String" 
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand 
$SqlCmd.CommandText = $sqlQuery 
$SqlCmd.CommandTimeout = 300 
$SqlCmd.Connection = $SqlConnection 
$sqlConnection.Open() 
$result = $sqlCmd.ExecuteNonQuery() 
$sqlConnection.Close() 

有你在的地方

查詢和連接字符串對於SQL腳本: 您可以參考這個問題here

希望這有助於

相關問題