SSDT无法发布:“无法连接到主服务器或目标服务器”

时间:2017-10-13 18:15:03

标签: sql azure azure-sql-database sql-server-data-tools

我正在尝试使用SSDT发布到Azure中的SQL Server数据库。当我这样做时,我看到以下错误:

  

无法连接到主服务器或目标服务器'DATABASE_NAME'。您必须在主服务器或目标服务器“DATABASE_NAME”中拥有具有相同密码的用户。

忽略它将数据库名称列为错误中的服务器名称的事实,我不知道如何解决它。当我指定目标数据库时,我可以成功测试连接。我也可以通过SSMS使用相同的信用卡连接到数据库。

在研究错误之后,似乎Azure中的数据库防火墙通常不包含您要发布的计算机的IP地址。它不仅包含我的IP,而且我添加了另一个防火墙规则,允许每个IP(0.0.0.0-255.255.255.255)消除防火墙作为问题的潜在原因。

有什么想法吗?

8 个答案:

答案 0 :(得分:11)

这是一个已知问题。这是因为新创建的SQL Azure数据库的新兼容级别140。问题已记录在案here,将SSDT从here更新到最新版本可能会解决问题。

或者,您可以将数据库的兼容级别更改为130。

ALTER DATABASE database_name   
SET COMPATIBILITY_LEVEL =  130;

希望这有帮助。

答案 1 :(得分:3)

Initializing deployment (Start)
Initializing deployment (Failed)
*** Could not deploy package.
Unable to connect to master or target server 'DbName'. You must have a user with the same password in master or target server 'DbName'.

通过VisualStudio-2015部署构建时出现问题,并支持在版本最高仅为2016的数据库服务器上发布数据库。

解决方案:对于SQL Server 2017,我们只需要使用Visual Studia 2017发布数据库。需要升级SSDT。

答案 2 :(得分:1)

尝试通过SSMS将数据库从本地SQL Server部署到Azure SQL DB时面临同样的问题。

尝试将源DB的兼容级别更改为130,仍然出现相同的错误。

尝试将相同的用户登录添加到主数据库,没有帮助。

最终,开始寻找其他方法。按照https://docs.microsoft.com/en-us/azure/sql-database/sql-database-cloud-migrate中的说明使用数据迁移助手成功。

答案 3 :(得分:1)

我的情况略有不同,因为我导出 Azure数据库(compat级别为140)来自 SQL Azure,然后尝试将其导入本地SQL Server 2017年安装 - 使用昨天我 安装的最新SSMS 2017 - 仍然收到此消息。

原来,虽然我确实安装了最新的SSMS ,但实际上我错误地打开 SSMS 2016!因此,请务必选择并固定正确的版本以避免再次发生。只需键入SSMS'进入Windows开始菜单可能不会同时显示。

因此,如果您使用SSMS导入,则只需要最新版本,而不需要单独的工具。

脚注:即使在打开正确的SSMS版本后,我又收到了一个错误 - 包含数据库的内容。

Azure数据库是一个包含的'数据库(或至少是我的) - 意味着其用户登录嵌入在数据库中。默认情况下,标准SQL Server 2017中没有启用此功能。

master中的本地SQL中运行this后,我能够成功导入它。

sp_configure 'contained database authentication', 1;
GO
RECONFIGURE;
GO

答案 4 :(得分:0)

*要发布到Azure中的SQL Server数据库* ,可以使用“数据迁移助手”(DMA)。

我刚刚尝试过,它可以顺利运行,没有任何问题(防火墙和兼容性级别)

请参考此链接SQL Server database migration to Azure SQL Database

分步进行:10. How to migrate the SQL database to Azure with the Azure Database Migration Service

答案 5 :(得分:0)

尝试从Visual Studio数据库项目(即不是i Azure)更新本地SQL Server数据库时,遇到了相同的错误。原来是我在使用Visual Studio 2015的同时为Visual Studio 2017运行SSDT。VisualStudio发现了SSDT的更新版本(恰好在通知中看到了它!),指向正确的Visual Studio版本。现在可以了!

我的设置:BizTalk Server 2016强制我使用Visual Studio2015。我的本地数据库位于SQL Server 2017上。使用SSDT for Visual Studio 2015可在SQL Server 2017中更新数据库。这就是您所知道的。 ;)

答案 6 :(得分:0)

发生这种情况的原因是我使用的工具版本不同。我以为奇怪的是,我在SqlPackage.exe中找到的最新C:\Program Files (x86)\Microsoft SQL Server无法正常工作,而从Visual Studio发布却可以,所以我发现了最新的C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\150\SqlPackage.exe 在Visual Studio目录下:

Element: Social

答案 7 :(得分:-2)

尝试使用Sql Server Management Studio连接到SQL Azure数据库,管理工作室中列出的ip是正确的IP地址。尝试添加到SQL Azure防火墙规则。 Sql Azure门户的防火墙页面中列出的IP地址不准确。