安装SSMS 2012以及任何其他现有SSMS安装(例如SSMS 2008 R2)时,将打开.SQL文件的默认程序设置为新的SSMS 2012版本时出现问题。
将.sql文件拖动到查询窗口可以成功运行。但是,当用户双击.sql文件时,2008 R2的新实例可以作为.sql关联条目打开。使用默认打开更改在双击新文件时没有任何区别。此外,更改开头的命令行脚本也许可以实现将.sql更改为在SSMS 2012中打开,但它仍然会导致重复的ssms实例而不是使用现有实例(导致额外的负载和内存使用)。
答案 0 :(得分:15)
regedit
)转到HKEY_CLASSES_ROOT\.sql
并将默认值更改为ssms.sql.11.0
(SSMS 2012是产品的第11版)。这会告诉您的计算机在尝试打开.sql
注册表采用您刚刚输入的名称,然后在另一个注册表设置中查找实际执行的操作。
转到HKEY_CLASSES_ROOT\ssms.sql.11.0\Shell\Command
并将默认值更改为:
"C:\Program Files (x86)\Microsoft SQL Server\110\Tools\Binn\ManagementStudio\ssms.exe" "%1" /dde
关闭计算机然后重新打开以获得良好的效果。
如果由于某种原因它仍然无法运作。右键单击任何SQL文件。转到“属性”,然后单击以更改打开的文件。您可能有两个SQL选项。尝试一个然后另一个。
答案 1 :(得分:11)
然后我将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协议以用作参数。
DDE消息:保存在我发现的SSMS 2008 R2值:Open("%1")
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
条目。
=文件关联现在设置为新安装,如果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没有。
所以我从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"