架构比较后,Visual Studio 中的“生成脚本”按钮被禁用

Posted

技术标签:

【中文标题】架构比较后,Visual Studio 中的“生成脚本”按钮被禁用【英文标题】:Generate Script button is disabled in visual studio after schema comparison 【发布时间】:2017-10-23 11:52:25 【问题描述】:

我想从数据库和我的数据库项目中创建一个增量脚本。数据库作为源,数据库项目作为目标。 Update 按钮工作正常,没有任何错误,我的错误列表仅包含此警告:

源的登录名没有 VIEW ANY DEFINITION 权限。如果目标是数据库,则比较将仅限于数据库范围的元素。

此权限:https://technet.microsoft.com/en-us/library/ms175808(v=sql.105).aspx

Update target button is disabled after schema comparison 的帖子对我没有帮助。

如何在 Visual Studio Enterprise 2017 中激活 generate Script 按钮? 我真的需要访问元数据来生成脚本吗?

(编辑):

即使有此权限,它也不起作用。但是我可以在比较两个数据库时生成一个脚本。

【问题讨论】:

我在这里遇到了同样的问题。对我来说,这是一个小的 SQL 错误,隐藏在我的数据库项目的存储过程中。显然,如果您在数据库项目中出现错误,“生成脚本”按钮将被禁用,即使它们与您尝试编写脚本的更改无关。 这个工具有很大的潜力,但很难使用。我的项目中有错误,我正在尝试通过将固定的数据库项目应用于数据库来修复它们....不可能!我必须尝试猜测正确的数据库更改,在数据库和架构中更改它并与项目进行比较,并希望它能修复它。 【参考方案1】:

如果您的目标是数据库项目,则“生成脚本”按钮将被禁用。要生成脚本,您可以直接与目标数据库而不是数据库项目进行比较。

【讨论】:

我确认这是可行的,但是通过这样做,当您从项目与数据库进行比较时,脚本与您需要的脚本完全不同。我不完全理解为什么只为 PROJECT to DATABASE 而不是 DATABASE to PROJECT 启用 GENERATE SCRIPT 按钮【参考方案2】:

确保在比较数据库架构之前重建解决方案。在 Visual Studio 中执行此操作:

转到解决方案资源管理器 右键单击解决方案的根级别 点击重建解决方案

Rebuild solution

现在尝试比较数据库模式。您应该能够看到生成脚本选项现已启用。

【讨论】:

没有。我刚刚尝试使用 Visual Studio 2015 Update 3。我建议您在给出解决方案之前尝试一下。【参考方案3】:

尝试构建项目,你可能有一些无法编译的东西

【讨论】:

【参考方案4】:

如果您没有收到错误或警告,请确保在 Sql 项目属性“项目设置”中目标平台与您正在比较的 SQL Server 版本匹配。

当你将它更改为对应版本时,你会看到更新和生成脚本按钮将被启用,

【讨论】:

以上是关于架构比较后,Visual Studio 中的“生成脚本”按钮被禁用的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio 架构比较找不到生成的脚本

与 Visual Studio 2017 中的架构比较的意外差异

Visual Studio2017 数据库架构比较

使用 Visual Studio 2012 高级版导出架构比较升级脚本到 transact-sql

Visual Studio2017 数据库架构比较

Visual Studio2017 数据库架构比较