我正在尝试使用.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管理中尝试此操作的。当然,在任务中提供必要的.dacpac
和publish.xml
文件。
我知道我可以手动添加存储过程,但看起来这并不是这些发布/部署方法的意图。有没有人有任何想法?
由于
答案 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)
正确的 sp_MSforeachtable 存储过程,但是您可以轻松地手动创建它。当您必须一次为所有表重建索引时,这将非常有帮助:
exec sp_MSforeachtable @command1="DBCC DBREINDEX ('?', '', 80)"