2016-04-25 64 views
5

我有一個Team Services(Visual Studio Online)構建,其中一個MSBuild步驟使用發佈配置文件配置爲構建和部署數據庫項目。我似乎無法成功驗證它。當我排隊Team Services構建定義時,我能夠構建數據庫項目並生成.dacpac。但是,來自發布時間和此錯誤來:Visual Studio Team Services構建失敗 - 將數據庫項目設置爲Azure SQL

C:\ a \ 1 \ s \ Source \ ShopDatabase \ bin \ Output \ MyDatabase.publish.sql(0,0):錯誤Deploy72002:無法連接到主服務器或目標服務器'mydb'。您必須在主服務器或目標服務器'mydb'中擁有相同密碼的用戶。

我們確定用戶存在於mydb和Azure中的主數據庫中。

目標:天藍色的SQL數據庫

DB項目目標平臺:微軟Azure SQL數據庫

當我直接從Visual Studio運行發佈配置文件,它的工作原理。但是在Team Services構建定義中,它並沒有。我嘗試了這些作爲MSBUILD參數:

/噸:構建;發佈/p:SqlPublishProfilePath="myproject.Dev.publish.xml」/P:密碼= 「輸入mypassword」

和此:

/t:Build;發佈/p:SqlPublishProfilePath="myproject.Dev.publish.xml「/ p:TargetConnectionString =」Data Source = myproject.database.windows.net; Persist Security Info = True; User ID = myuser ;密碼=輸入mypassword;」 /p:VisualStudioVersion=14.0/P:用戶名= 「爲myuser」/ P:密碼= 「輸入mypassword」

和此:

/噸:構建;發佈/p:SqlPublishProfilePath="myproject.Dev .publish.xml「/ p:TargetConnectionString =」Data Source = myproject.database.windows.net; Persist Security Info = True; User ID = myuser; Password = mypassword;「 /p:VisualStudioVersion=14.0/p:TargetUserName =「myuser」/ p:TargetPassword =「mypassword」

但是不行。請幫助我T_T已經在網上搜索了6個小時了

回答

7

這是一個糟糕的錯誤消息,可能會掩蓋真正的問題:您需要打開防火牆以部署到Azure SQL數據庫。它是從Visual Studio開始工作的,因爲您的IP範圍已啓用。 this guide to building & deploying from VSO中的步驟,特別是deploying from VSO here,的帖子應該有所幫助。它特別介紹瞭如何在部署過程中打開防火牆。

+0

感謝凱文,這解釋了爲什麼我們可以部署在我們的機器(我們明確地將我們的公共IP添加到白名單)。我們實際上是使用MSBuild步驟,而不是部署SQL Azure步驟(因此無法使用AutoDetect防火牆)路由。您是否知道如何獲取VSO構建託管代理的IP地址,然後我們可以將其添加爲白名單。 –

+0

通過對此進行讀取,Hosted代理池沒有固定的IP地址範圍,因此您無法將防火牆中的池列入白名單。我的理解是,您需要在Azure門戶中將服務器設置爲「允許訪問Azure服務」。 – Witchfinder

+0

已更改計劃:)我們執行了「Azure SQL數據庫部署」步驟,並按照上述答案中建議的防火牆步驟進行操作。奇蹟般有效!謝謝您的幫助。 –

3

一個明顯的答案(有時在事後!),但未來的Google錯誤You must have a user with the same password in master or target server

也正好,如果你指向你部署到不存在的實例。 ie:找不到服務器。

0

我們最近遇到了這個問題,我們通過從SQL Deploy VSTS任務的SQL數據庫詳細信息部分中的服務器管理員登錄值末尾刪除了@服務器名稱來解決此問題。一些網上的指南說你需要這個,但最近看起來有些變化,不再需要它。

1

Fwiw,從視覺工作室生成一個腳本。以管理員身份運行使其停止對此進行沖洗。多麼浪費我的生活...

相關問題