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

Posted

技术标签:

【中文标题】Visual Studio 架构比较找不到生成的脚本【英文标题】:Visual Studio schema compare can't find generated script 【发布时间】:2018-12-01 09:20:48 【问题描述】:

我正在使用 Visual Studio 2017 执行 SQL Server 架构比较。我正在按下架构比较实用程序的“生成脚本”按钮并查看消息

“更新脚本生成成功”

但是,我看不到生成的脚本。知道这去了哪里或失败了吗?

【问题讨论】:

Visual Studio 架构比较工具在 %TEMP% 文件夹中创建更新脚本。尝试搜索名称为 %TEMP%\LQDB_State_Update1.publish.sql 的文件。文件名中的数字自动递增 很遗憾,我看过那里并没有找到任何东西。 可能是架构没有区别的问题,在这种情况下visual studio并没有真正生成脚本 它在窗格中显示了许多差异。不知道该怎么办。 你有什么版本的 SQL Server 开发工具?从docs.microsoft.com/en-us/sql/ssdt/…安装最新版本的SSDT可能有意义 【参考方案1】:

不是从连接字符串直接比较,而是生成架构文件,然后比较该文件

执行以下步骤:

    在 Visual Studio 中转到 Sql Server 对象资源管理器 右键单击数据库名称 选择提取数据层应用程序 选择文件保存位置 选择仅架构 取消选择所有复选框选项或根据您的比较要求进行检查

对源数据库和目标数据库执行相同的操作

然后

比较架构时选择选项数据层应用文件选项

【讨论】:

【参考方案2】:

我注意到如果 SSMS 正在运行,SSDT 不会生成 Schema Compare 脚本。一旦我关闭 SSMS 并尝试再次生成脚本,SSDT 就会成功创建一个。

【讨论】:

【参考方案3】:

根据this page“生成的脚本出现在新的 Transact-SQL 编辑器窗口中”。

当这对我不起作用时,我关闭了架构比较窗口以外的所有打开的窗口,并重新勾选了列表中的所有差异(我没有勾选一些)。执行此操作并再次运行“生成脚本”后,Visual Studio 实际上确实打开了一个带有脚本的新窗口(文件名是“C:\Users\me\AppData\Local\Temp\MyDbName_Update1.publish.sql”)。

【讨论】:

以上是关于Visual Studio 架构比较找不到生成的脚本的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio 2010 架构比较 - 更新脚本生成

Visual Studio 2012 架构资源管理器

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

Visual Studio 2013 无法编译、执行 【此项目已经过期】【是不是希望生成它?】【系统找不到指定文件】

Visual Studio 编译项目失败,提示找不到文件

Visual Studio C++ 项目找不到.dll