在SSMS 2012中打开.sql文件作为默认程序和现有实例

时间:2013-01-28 14:42:53

标签: sql-server ssms-2012

安装SSMS 2012以及任何其他现有SSMS安装(例如SSMS 2008 R2)时,将打开.SQL文件的默认程序设置为新的SSMS 2012版本时出现问题。

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

7 个答案:

答案 0 :(得分:15)

  1. 根据这篇文章改编如何how to fix .sql file not opening with SSMS 2008,您应该首先打开注册表(regedit
  2. 转到HKEY_CLASSES_ROOT\.sql并将默认值更改为ssms.sql.11.0(SSMS 2012是产品的第11版)。这会告诉您的计算机在尝试打开.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选项。尝试一个然后另一个。

    open with

答案 1 :(得分:11)

  1. 要更改为默认条目,我使用了显示DDE(动态数据交换)值的应用程序。我个人使用FileTypesMan
  2. 然后我将SSMS的命令行更改为:

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

    始终通过编辑打开新实例的原因似乎是Windows需要associate the file with a program,以便在现有程序运行并使用此实例时它可以进行标识。这似乎是通过使用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文件的条目时。在我开始在FileTypesMan中进行更改之前,这与SSMS 2008 R2条目显示的sqlwb.9.0的注册表项相匹配。我删除了.sql,发现HKEY_CLASSES_ROOT有一个ssms.sql.11.0条目。

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

    提示:要在没有打开初始加载的情况下进一步加快初始加载速度,可以在加载时使用其他命令行选项。只需转到RUN对话框并输入:ssms.exe -?以获取启动参数列表。我个人使用-nosplash来消除启动画面负载。

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

答案 2 :(得分: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"

答案 3 :(得分:1)

我有同样的问题。使用&#34;恢复文件关联&#34;在ssms 2012没有任何影响。我能够通过右键单击并选择&#34;打开&#34;来解决它。 - &GT;选择默认程序。现在我知道你说这不起作用,但有一个技巧。不要为ssms 2012选择预先提供的图标,而是选择浏览并转到c:\ program files(x86)\ Microsoft SQL server \ 110 \ tools \ binn \ managementStudio \并单击ssms.exe。单击打开,单击确定。一旦我这样做,ssms 2012是默认的,双击更多.sql文件加载到同一实例的选项卡中。

答案 4 :(得分:0)

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

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

答案 5 :(得分:0)

我遇到了类似但略有不同的问题。我想在SSMS 2014的新标签页中打开.sqlplan文件。我尝试了以上所有内容,但没有一个有效。

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

enter image description here

所以我从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"

答案 6 :(得分:0)

Management Studio 18:

"C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\Ssms.exe" /dde "%1"