2017-01-26 17 views
0

TLDR:私が最終的に探しているのは、SQLクエリエディタの一部のテキストを強調表示できるようにすることです(部分的なオブジェクト名)、次にキーボードのショートカット(たとえばCTRL+5)を押すと、強調表示されたテキストの一致に基づいてオブジェクトの現在のデータベースが検索されます。次に結果にオブジェクトを配置し、それをコピー(またはエイリアス化されたバージョン)し、CTRL+Rを押してグリッドを閉じて貼り付けます。その後、コーディングを続けます(そして、おそらく1分後にもう一度やり直してください)。コーディングするときSQL Server検索データベースオブジェクトネイティブSSMS機能/ SSMSブースト


/SSMSは、SQLクエリエディタを使用してクエリを書いて、私は常にオブジェクトが私の現在のクエリで使用するためにデータベースを検索する自分自身を見つけます。私はSSMS Boostを使用していますので、私の方法は次のとおりです。

  1. 新しいウィンドウが開きます(CTRL + N)
  2. 使用SSMS AutoReplace次のコードを貼り付けします。 (#が位置する場所にカーソルが配置されている。)

    DECLARE @t nvarchar(100) 
    SET @t = N'%#%' 
    
    SELECT 
        o.Type, 
        o.Type_Desc, 
         '['+SCHEMA_NAME(o.schema_id)+'].['+o.name+']' AS ObjectName, 
    CASE WHEN Type IN (N'U') AND o.name LIKE N'%[_]%' THEN o.name + N' AS ' + STUFF(o.name, 1, CHARINDEX(N'_', o.name), N'') END AS Alias 
    FROM sys.objects AS o 
    WHERE o.name like @t 
    AND RIGHT(REPLACE(o.name, N'sel', N''), 3) NOT IN (N'upd', N'del', N'ins', N'bdc') 
    --AND Type IN (N'U') 
    ORDER BY o.name 
    
  3. タイプまたは

  4. クエリで使用する結果からオブジェクト名をコピーし、クエリを実行するテキスト

  5. 押しF5を貼り付け
  6. 結果のテーブル(およびエイリアス)を貼り付けCTRL+F4
  7. とウィンドウを閉じ

私はこれをやるのがかなり早かったが、かなりの時間が浪費されているような気がします。


この問題を解決し、SSMS Boostと機能性を高めるためにしようとするために、私はコピーをテキスト強調表示Macro Functionality

  1. 使用しようとしました - Edit.Copy、(グローバル::はCtrl + Cを、グローバル:: Ctrl + Ins)
  2. 新しいウィンドウを開く - File.NewQuery、(グローバル:: Ctrl + N)
  3. 自動置換を実行する - ???あるように表示されませんのでEdit.Paste、(グローバル::はCtrl + V、グローバル+ Insをシフト::) SSMS Boost Macro

- またはテキストを貼り付け

  • 上記のSQLを貼り付ける別の方法を使用しますマクロにパラメタ/フリーテキストを追加することができなくなってしまい、何ができるのか分からない。私はSSMS Boost Forumsに掲示しようとしましたが、私は多くの回答を得ていませんでした。


    また、ネイティブSSMSキーボードショートカットをうまく組み込もうとしました。 SSMS keyboard shortcuts

    オブジェクト(ビューまたはテーブル)が有効な場合、次の2つのクエリはSSMSショートカットでうまく機能します。また、ショートカットは、強調表示されたテキストをショートカットコード/ SQLの最後に追加できるため、ショートカットが機能するように見えます。

    SELECT COUNT(*) AS [Count] FROM --to get a quick count of the number of records in a table 
    SELECT TOP 100 * FROM --to get a glimpse of the data in the highlighted table or view 
    

    最後に、私は(かなりくそ良い機能のように思える)SSMSのテンプレートを使用してに見えたが、私はキーボードショートカットで、その場でそれらを使用する方法を見つけ出すことができませんでした。ここで

  • 答えて

    1

    は、キーの組み合わせ(1長い行)に以下を割り当てSSMS 2016年に私のために働くように見えるSSMSキーボードショートカットを使用したソリューション、です:

    EXEC('CREATE PROC#up_helpalias @t sysname AS SELECT o.Type, o.Type_Desc, ''[''+SCHEMA_NAME(o.schema_id)+''].[''+o.name+'']'' AS ObjectName, CASE WHEN Type IN (N''U'') AND o.name LIKE N''%[_]%'' THEN o.name + N'' AS '' + STUFF(o.name, 1, CHARINDEX(N''_'', o.name), N'''') END AS Alias FROM sys.objects AS o WHERE o.name like N''%'' + @t + ''%'' AND RIGHT(REPLACE(o.name, N''sel'', N''''), 3) NOT IN (N''upd'', N''del'', N''ins'', N''bdc'') ORDER BY o.name;DROP PROC#up_helpalias;');exeC#up_helpalias 
    

    それが作成し、実行することで動作しますあなたのクエリに基づいて一時的なストアドプロシージャ - ステートメント定義のより読みやすいバージョンは以下の通りです。手順は、実行の終了時に、それ自体を削除するコードを含むことに注意してください:

    続い
    CREATE PROC#up_helpalias 
        @t sysname 
    AS 
    BEGIN 
        SELECT 
        o.Type, 
        o.Type_Desc, 
         '['+SCHEMA_NAME(o.schema_id)+'].['+o.name+']' AS ObjectName, 
        CASE WHEN Type IN (N'U') AND o.name LIKE N'%[_]%' THEN o.name + N' AS ' + STUFF(o.name, 1, CHARINDEX(N'_', o.name), N'') END AS Alias 
        FROM sys.objects AS o 
        WHERE o.name like N'%' + @t + '%' 
        AND RIGHT(REPLACE(o.name, N'sel', N''), 3) NOT IN (N'upd', N'del', N'ins', N'bdc') 
        ORDER BY o.name 
    
        DROP PROC#up_helpalias 
    END 
    

    :キーボードショートカットから渡された値を使用して、手順を実行

    exeC#up_helpalias 
    

    +0

    ワウ。それは私が探していたものを正確に*達成します。ネイティブのSSMSショートカットを使用してストアドプロシージャを実行すると、強調表示されたテキストがパラメータとして渡されることはわかりませんでした。完璧。また、一時的なストアドプロシージャを作成できるかどうかもわかりませんでした。 – JoeFletch

    +0

    @JoeFletch - それは起こっていることではありません。私は私の説明をより明確にしようとしました。ハイライトされたテキストは一時的な手続きの 'exec'に渡されます。 –

    +0

    はい、私は理解しています(少なくとも私はそうすると思います)。私のコメントはおそらく完全にはっきりしていなかった。しかし、更新をありがとう! – JoeFletch

    関連する問題