SSDT 发布失败:"Unable to connect to master or target server"

SSDT failing to publish: "Unable to connect to master or target server"

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

Unable to connect to master or target server 'DATABASE_NAME'. You must have a user with the same password in master or target server 'DATABASE_NAME'.

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

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

有什么想法吗?

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

这是一个已知问题。发生这种情况是由于新创建的 SQL Azure 数据库的新兼容性级别 140。该问题已记录here and updating SSDT from here到最新版本可能会解决问题。

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

ALTER DATABASE database_name   
SET COMPATIBILITY_LEVEL =  130;

希望对您有所帮助。

尝试通过 SSMS 将数据库从本地 SQL 服务器部署到 Azure SQL 数据库时遇到同样的问题。

尝试将源数据库的兼容级别更改为 130,仍然出现同样的错误。

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

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

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服务器2017,我们只需要使用Visual Studia 2017发布数据库。需要升级SSDT。

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

结果虽然我确实安装了最新的 SSMS ,但我实际上 打开 SSMS 2016 是错误的!所以一定要 select 并固定正确的版本以避免再次发生。仅在 Windows 开始菜单中键入 'SSMS' 可能不会同时显示两者。

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


脚注:即使打开了正确的 SSMS 版本,我仍然遇到另一个错误 - 关于包含的数据库。

Azure 数据库是 'contained' 数据库(或者至少我的是)- 这意味着它的用户登录信息嵌入在数据库中。这显然在标准 SQL Server 2017 中默认未启用。

运行this在本地SQL在master之后导入成功

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

* 发布到 Azure 中的 SQL 服务器数据库*,您可以使用 "Data Migration Assistant" (DMA)。

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

请参考这个linkSQL Server database migration to Azure SQL Database

一步一步:10. How to migrate the SQL database to Azure with the Azure Database Migration Service

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

我的设置:BizTalk Server 2016 强制我使用 Visual Studio 2015。我的本地数据库在 SQL Server 2017 上。对 Visual Studio 2015 使用 SSDT 可以更新 SQL Server 2017。如你所知。 ;)

我遇到这种情况是因为我使用的工具版本不同。我觉得奇怪的是,我在 C:\Program Files (x86)\Microsoft SQL Server 中找到的最新 SqlPackage.exe 不起作用,而从 visual studio 发布的却起作用了,所以我找到了最新的 visual studio 目录下:

C:\Program Files (x86)\Microsoft Visual Studio17\Professional\Common7\IDE\Extensions\Microsoft\SQLDB\DAC0\SqlPackage.exe