10

SSMS 2008 R2 など、他の既存の SSMS インストールと一緒に SSMS 2012 をインストールすると、.SQL ファイルを開くための既定のプログラムを新しい SSMS 2012 バージョンに設定する際に問題が発生します。

.sql ファイルをクエリ ウィンドウにドラッグすると、正常に機能します。ただし、ユーザーが .sql ファイルをダブルクリックすると、2008 R2 の新しいインスタンスが .sql 関連エントリとして開くことができます。Default Open With で変更しても、新しいファイルをダブルクリックしても違いはありません。さらに、オープニングのコマンド ライン スクリプトを変更すると、SSMS 2012 で .sql をオープニングに変更できる可能性がありますが、既存のインスタンスを使用する代わりに ssms のインスタンスが繰り返されます (追加の負荷とメモリ使用量が発生します)。

4

7 に答える 7

12
  1. デフォルトのエントリに変更するには、DDE (動的データ交換) 値を表示するアプリケーションを使用しました。私は個人的にFileTypesManを使用しました。
  2. 次に、SSMS のコマンド ラインを次のように変更しました。

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

    新しいインスタンスが常に編集で開かれる理由は、既存のプログラムが実行されているかどうかを識別してこのインスタンスを使用できるように、ウィンドウがファイルをプログラムに関連付ける必要があるためです。これは、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 を削除したところ、.sqlHKEY_CLASSES_ROOTのエントリがあることがわかりましたssms.sql.11.0

= ファイルの関連付けが新規インストールに設定され、SSMS.EXE が開いている場合は、追加作業なしで既存のインスタンスを使用する必要があります。

ヒント: 開いていない場合に初期ロードをさらに高速化するには、ロードで他のコマンド ライン オプションを使用できます。RUN ダイアログに移動して、次のように入力するだけssms.exe -?です。起動パラメータのリストを表示します。私は個人的-nosplashに、スプラッシュ画面の負荷をなくすために使用しています。

さらに、私はSSMSBoostを使用します。これは、SSMS を毎日使用するのに役立つ単一の最高のツールです (基本的なコードの書式設定、カーソル配置付きのスニペット、優先接続のセットアップ、完全なキーボード ショートカット プログラミング (1 回のショートカットで複数のステップを実行するオプションと一緒に)アンドレと彼のチームは、フォーラムでの新しいアイデアに非常に敏感であり、フォーラムの開発者は他の開発者の生活を改善するのに非常に役立ちます。

于 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 をクリックします。[開く] をクリックし、[OK] をクリックします。これを行うと、ssms 2012 がデフォルトになり、さらに .sql ファイルをダブルクリックすると、同じインスタンスのタブに読み込まれます。

于 2014-05-16T21:20:28.823 に答える
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

別の解決策: https://stackoverflow.com/a/24945327/813599

他の Q/A にリンクするためのより適切な方法を探しに行きましたが、15 分間検索しても見つかりませんでした。

于 2014-07-24T23:04:01.523 に答える