10

将 SSMS 2012 与任何其他现有 SSMS 安装(例如 SSMS 2008 R2)一起安装时,将用于打开 .SQL 文件的默认程序设置为新的 SSMS 2012 版本时存在问题。

将 .sql 文件拖到查询窗口可以成功。但是,当用户双击 .sql 文件时,2008 R2 的新实例可以作为 .sql 关联条目打开。双击新文件时更改默认打开方式没有区别。此外,更改打开的命令行脚本也许可以实现将 .sql 更改为 SSMS 2012 中的打开,但它仍然会导致重复 ssms 实例而不是使用现有实例(导致额外的负载和内存使用)。

4

7 回答 7

15
  1. 改编自这篇关于如何修复 .sql 文件无法使用 SSMS 2008 打开的帖子,您应该首先打开注册表 ( regedit)
  2. 转到HKEY_CLASSES_ROOT\.sql并将默认值更改为ssms.sql.11.0(SSMS 2012 是产品的 v11)。这会告诉您的计算机在尝试打开类型文件时应查找的应用程序字符串.sql

    .sql

  3. 注册表采用您刚刚输入的名称,然后查找在另一个注册表设置中实际执行的操作。

    将默认HKEY_CLASSES_ROOT\ssms.sql.11.0\Shell\Command值更改为:

    "C:\Program Files (x86)\Microsoft SQL Server\110\Tools\Binn\ManagementStudio\ssms.exe" "%1" /dde
    

    ssms.sql.11.0

  4. 关闭并再次打开您的计算机以获得良好的测量效果。

    如果由于某种原因仍然无法正常工作。右键单击任何 SQL 文件。转到属性并单击以更改它打开的文件。您可能有两个可用的 SQL 选项。尝试一个然后另一个。

    打开用

于 2015-03-20T15:53:37.923 回答
12
  1. 为了更改为默认条目,我使用了一个显示 DDE(动态数据交换)值的应用程序。我个人使用FileTypesMan
  2. 然后我将 SSMS 的命令行更改为:

    "C:\Program Files (x86)\Microsoft SQL Server\110\Tools\Binn\ManagementStudio\Ssms.exe" /dde "%1"
    

    总是通过编辑打开新实例的原因似乎是 windows 需要将文件与程序相关联,以便它可以识别现有程序是否正在运行并使用此实例。这似乎是通过使用 DDE 来实现的。/dde表示命令行应该使用 DDE。"%1" 将第一个字符串(ssms.exe 路径)传递给 DDE 协议以用作参数。

  3. DDE 消息:保持在我发现的 SSMS 2008 R2 的值:Open("%1")

  4. DDE 应用程序:将应用程序更改为ssms.11.0

    为什么?这是困难的部分。这是在哪里找到的?我找不到显示 DDE 应用程序名称的工具。我发现当我查看注册表编辑器时,它sqlwb.sql.9.0是使用 2008 R2 打开新 .sql 文件的条目。sqlwb.9.0这与我开始在 FileTypesMan 中进行更改之前显示的 SSMS 2008 R2 条目的注册表条目相匹配。我删除了 .sql 并发现HKEY_CLASSES_ROOT有一个 .sql 条目ssms.sql.11.0

= 文件关联现在设置为全新安装,如果 SSMS.EXE 打开,它应该使用现有实例,无需额外工作。

提示:如果您没有打开初始加载,要进一步加快初始加载速度,您可以在加载时使用其他命令行选项。只需转到“运行”对话框并键入:ssms.exe -?以获取启动参数列表。我个人-nosplash用来消除闪屏负载。

此外,我使用SSMSBoost,这是我每天使用 SSMS 时不得不帮助的最好的工具(基本代码格式、带光标放置的片段、首选连接设置、完整的键盘快捷键编程(以及一次快捷方式中的多个步骤的选项) ,即基本宏”。Andre 和他的团队对他们论坛中的新想法非常敏感,它的开发人员帮助改善了其他开发人员的生活。

于 2013-01-28T14:42:53.177 回答
2

对于 SQL 2014,您可以使用以下 *.reg 文件(对于 2012,将 12 替换为 11,对于 2016(我猜),将其替换为 13):

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\sql_auto_file]
@=""
"EditFlags"=hex:00,00,00,00
"FriendlyTypeName"="SQL"

[HKEY_CLASSES_ROOT\sql_auto_file\shell]

[HKEY_CLASSES_ROOT\sql_auto_file\shell\open]

[HKEY_CLASSES_ROOT\sql_auto_file\shell\open\command]
@="\"C:\\Program Files\\Microsoft SQL Server\\120\\Tools\\Binn\\ManagementStudio\\Ssms.exe\" /dde \"%1\""

[HKEY_CLASSES_ROOT\sql_auto_file\shell\open\ddeexec]
@="Open(\"%1\")"

[HKEY_CLASSES_ROOT\sql_auto_file\shell\open\ddeexec\Application]
@="ssms.12.0"

[HKEY_CLASSES_ROOT\sql_auto_file\shell\open\ddeexec\Topic]
@="system"
于 2015-05-22T15:23:35.780 回答
1

我有同样的问题。在 ssms 2012 中使用“恢复文件关联”没有效果。我可以通过右键单击并选择“打开方式”来解决它 - >选择默认程序。现在我知道你说过这不起作用,但有一个技巧。不要选择 ssms 2012 的预提供图标,而是选择浏览并转到 c:\program files(x86)\Microsoft SQL server\110\tools\binn\managementStudio\ 并单击 ssms.exe。点击打开,点击确定。完成此操作后,ssms 2012 是默认设置,双击更多 .sql 文件会加载到同一实例中的选项卡中。

于 2014-05-16T21:20:28.823 回答
0

另一种解决方案:https ://stackoverflow.com/a/24945327/813599

我去寻找一种更合适的方法来链接到其他 Q/A,但在搜索了 15 分钟后找不到它……我很想接受教育,如果是这样,我会编辑掉它。

于 2014-07-24T23:04:01.523 回答
0

我遇到了类似但略有不同的问题。我想在 SSMS 2014 的新选项卡中打开 .sqlplan 文件。我尝试了以上所有方法,但都没有奏效。

查看注册表,我发现 ssms.sql.12.0 有“DdeExec”节点,而 ssms.sqlplan.12.0 没有。

在此处输入图像描述

因此,我从 ssms.sql.12.0 导出“DdeExec”节点并将 sql 重命名为 sqlplan,然后将其重新导入。之后,我能够在新选项卡中打开 .sqlplan 文件。

这是注册表文件:Windows 注册表编辑器版本 5.00

[HKEY_CLASSES_ROOT\ssms.sqlplan.12.0\Shell\Open\DdeExec]
@="Open(\"%1\")"

[HKEY_CLASSES_ROOT\ssms.sqlplan.12.0\Shell\Open\DdeExec\Application]
@="ssms.12.0"

[HKEY_CLASSES_ROOT\ssms.sqlplan.12.0\Shell\Open\DdeExec\Topic]
@="system"
于 2016-09-12T18:05:27.377 回答
0

管理工作室 18:

"C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\Ssms.exe" /dde "%1"
于 2020-10-14T01:02:47.940 回答