将数据库部署到 Azure SQL 失败,sp_MSforeachtable 未找到

Deploy database to Azure SQL fails, sp_MSforeachtable not found

我正在尝试使用 .dacpac 发布 SQL 服务器数据库,并将配置文件发布到 Azure SQL 数据库。我们已经在本地 SQL 服务器上使用了很长一段时间,没有出现任何问题,现在我们正在评估 Azure 和 AWS,看看哪个最适合我们的需求。

我们有一个SQL服务器数据库项目,想将它部署到AzureSQL数据库,但是无法执行SSDT生成的脚本。这是因为生成的脚本包含对 Azure SQL 中不存在的存储过程 sp_MSforeachtable 的调用。

我还将目标平台从 SQL Server 2016 更改为 Azure SQL V12。我正在从 Visual Studio 2017 的发布配置文件和使用 Azure SQL 数据库部署任务的 VSTS 发布管理中尝试此操作。当然,通过在任务中提供必要的 .dacpacpublish.xml 文件。

我知道我可以手动添加存储过程,但这些 publishing/deployment 方法似乎并非如此。有人有什么想法吗?

谢谢

sp_MSforeachtable 是 Master 数据库中未记录的存储过程。这显然还没有移植到 Azure SQL。我相信您需要手动将其添加到 Master 数据库中。完成后,您的 DACPAC 应该可以在您自己的 Azure SQL 数据库上正常工作。我没有发现手动添加 sp_MSforeachtable 有问题。 DACPAC 旨在使您的 数据库保持同步,而不是主数据库。

此功能未在 Azure 的 SQL 数据库中实现。

您可以在以下位置找到它的副本:https://gist.github.com/metaskills/893599

正确,Azure SQL 中仍然缺少 sp_MSforeachtable 存储过程,但您可以轻松地手动创建它。当您必须一次为所有表重建索引时,这非常有用:

exec sp_MSforeachtable @command1="DBCC DBREINDEX ('?', '', 80)"