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

时间:2017-10-09 17:08:47

标签: sql-server azure azure-sql-database azure-devops azure-pipelines-release-pipeline

我正在尝试使用.dacpac发布SQL Server数据库并将配置文件发布到Azure SQL数据库。我们在很长一段时间内一直在使用SQL Server,没有问题,现在我们正在评估Azure和AWS,以确定哪个最适合我们的需求。

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

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

我知道我可以手动添加存储过程,但看起来这并不是这些发布/部署方法的意图。有没有人有任何想法?

由于

3 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:4)

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

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

答案 2 :(得分:0)

在Azure SQL中仍然缺少

正确的 sp_MSforeachtable 存储过程,但是您可以轻松地手动创建它。当您必须一次为所有表重建索引时,这将非常有帮助:

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