0

问题:我们需要从 Azure sql 数据库中删除死 sql 对象(表、视图、存储过程等),这些对象是一些开发人员直接在 sql db 上创建的,这些对象未使用且不属于 sql db 项目(sqlproj)。

所以我想知道是否有办法识别那些死的 sql 对象或找出 Sql 数据库中的 sql 对象与从 sqlproj 创建的对象之间的区别?

Sql server Data 工具中是否有一个标志可以帮助实现这一目标或任何可以让我与众不同的东西?

4

2 回答 2

0

您可以使用 /Action:DeployReport 进行部署

https://msdn.microsoft.com/library/hh550080(vs.103).aspx#Anchor_5

这将为您提供以下对象列表:

  • 两者都存在但不同
  • 仅存在于 dacpac
  • 仅存在于实时数据库中

您也可以使用 Visual Studio (ssdt) 中的比较工具来执行此操作,或者使用 redgate sql compare 之类的工具 - 如果这是一次性的,我可能会使用它,因为我更喜欢 ui,但我有它的副本,所以可以: )

这个问题通常可以通过部署来解决,并且删除数据库中不在源代码管理中的任何内容。如果您始终遵循从 dacpac 进行部署的过程,您将无法遇到这种情况。

听起来您可能想做一次性的事情来找出不同之处,并可能在放弃它们之前在某处测试这些更改。

使用 ssdt 的每个人都曾遇到过这个确切的问题,解决它的唯一方法是让 sqlproj 或数据库进入已知状态并继续从 dacpac 进行部署。

于 2017-09-15T07:27:06.343 回答
0

您可以使用 SQL Server Data Tools (SSDT) 上提供的架构比较选项,如此此处所述。

您可以从这里免费下载 SSDT 。

希望这可以帮助。

于 2017-09-15T13:34:11.693 回答