爲了運行我的驗收測試,我需要在SQL Azure上運行的數據庫上定義一個已知的良好狀態。我的測試在本地運行良好,並已設置連接字符串以更新Azure PaaS上的SQL實例。測試將在使用VSTS部署數據庫之後運行。爲了讓部署過程運行我的認證測試,我需要運行Visual Studio團隊系統測試的過程才能訪問數據庫。 VSTS顯然運行在美國東部的Azure區域。鑑於潛在的數百個IP地址需要列入白名單,是否有更安全的方法來執行此操作,獲取部署過程的IP地址,然後將此IP地址作爲部署的一部分訪問數據庫?允許VSTS更新測試數據庫
回答
您可以撥打New-AzureRmSqlServerFirewallRule和Remove-AzureRmSqlServerFirewallRule powershell command來添加和刪除防火牆規則。
請參考下面這些線程構建/釋放過程中做到這一點:Deploy Dacpac packages via power shell script to Azure SQL Server
首先,你需要添加防火牆規則,以便連接到SQL Azure的服務器 。
1.Edit您的構建定義
2.Select選項選項卡,並選中允許腳本訪問OAuth令牌
3.添加Azure的PowerShell的步驟(參數:-RestAddress https://[account].vsdtl.visualstudio.com/DefaultCollection/_apis/vslabs/ipaddress -Token $(系統。的accessToken)-RG [資源組] - 服務器[服務器名稱] -ruleName $(Build.BuildNumber)
代碼:
param ( [string]$RestAddress, [string]$Token, [string]$RG, [string]$Server ) $basicAuth = ("{0}:{1}" -f 'test',$Token) $basicAuth = [System.Text.Encoding]::UTF8.GetBytes($basicAuth) $basicAuth = [System.Convert]::ToBase64String($basicAuth) $headers = @{Authorization=("Basic {0}" -f $basicAuth)} $result = Invoke-RestMethod -Uri $RestAddress -headers $headers -Method Get Write-Host $result.value New-AzureRmSqlServerFirewallRule -ResourceGroupName $RG -ServerName $Server -FirewallRuleName "UnitTestRule" -StartIpAddress "$($result.value)" -EndIpAddress "$($result.value)"
更新:
允許腳本訪問OAuth令牌發佈:
- 編輯發佈定義
- 單擊運行在代理
- 檢查允許腳本訪問OAuth令牌選項
嗨,我需要運行它作爲我的部署的一部分。我已經完成了你所說的內容,但是它失敗了,'System.AccessToken'這個詞不被識別爲cmdlet,函數,腳本文件或可操作程序的名稱。我認爲,因爲我已經勾選了「允許腳本訪問OAuth令牌」,而不是發佈。無論如何要在發佈時做到這一點?我認爲我需要sql服務器纔可以授予防火牆訪問權限? – johnstaveley
@johnstaveley 1.編輯發佈定義 2.單擊在代理上運行 3.檢查允許腳本訪問OAuth令牌選項 我更新了我的答案。 –
我遇到了一個問題,但Azure給了你一個可憐的限制PowerShell腳本的長度,你可以運行它導致調試問題 – johnstaveley
- 1. 允許原子更新到數據庫
- 2. 允許數據庫更改
- 3. Eslint允許測試
- 4. 從測試數據庫更新生產數據庫的腳本
- 5. 插入時實體框架數據庫默認允許更新
- 6. 測試數據更新
- 7. 如何更新我使用新應用測試的數據庫?
- 8. 允許測試依賴於其他測試的測試框架
- 9. iTunes允許應用更新
- 10. 是否允許ClickOnce更新?
- 11. 數據庫測試
- 12. 快速RPM數據庫測試更改
- 13. 允許時間的數據庫設計
- 14. 是否允許「複製」API數據庫?
- 15. 不允許訪問數據庫文件。
- 16. 允許LocalSystem訪問PostgreSQL數據庫
- 17. 將測試數據庫重建爲生產測試數據庫
- 18. 測試數據庫更新是否成功與linq到sql
- 19. Rails的單元測試將不會更新數據庫
- 20. Django的測試 - 無法刪除並重新測試數據庫
- 21. 如何允許來自多個程序的數據庫表更新
- 22. 功能測試:在數據庫更改測試
- 23. 無法通過Django測試對數據庫的更改測試
- 24. iPad和iPhone不允許測試
- 25. 算法允許兩個程序更新同一數據
- 26. 允許本地webservice使用CanCan和Devise更新Rails數據
- 27. 訪問 - 允許更新數據,但只能通過表格
- 28. 從VSTS數據庫版本生成數據更改腳本
- 29. VSTS負載測試報告
- 30. 如何測試具有數據庫查詢以更新數據的方法?
啓用允許腳本訪問OAuth令牌以進行發佈後會出現什麼結果? –