2014-06-10 80 views
0

我想爲下面的SQL代碼快捷方式在SQL Server中的搜索功能

DECLARE @Proc_Name VARCHAR(255) 
SET @Proc_Name ='norway' 
SELECT * FROM sys.tables WHERE name LIKE '%' + @Proc_Name + '%' 

現在我用下面的快捷方式相同 enter image description here

然後我鍵入創建快捷方式{LIKE「%測試% '}並按下Ctrl + 8。

但是我想讓它更簡化(就像我可以鍵入{test}並按下Ctrl + 8),以便我可以快速使用它。

我試圖以不同的方式創建proc>然後執行>並將其放在快捷鍵按下。欲瞭解更多信息,請訪問以下鏈接:

Single line GO(Batch) statement giving error in SQL Server?

感謝,

維沙爾

回答

0

我有我添加到主數據庫我的SQL Server上的以下存儲過程

USE [master] 
GO 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 

CREATE PROCEDURE [dbo].[SP_FindAllReferences] 
@targetText nvarchar(128) 
AS 
BEGIN 
    SET NOCOUNT ON; 

    declare @origdb nvarchar(128) 
    select @origdb = db_name() 

    declare @sql nvarchar(1000) 

    set @sql = 'USE [' + @origdb +'];' 
    set @sql += 'select object_name(m.object_id), m.* ' 
    set @sql += 'from sys.sql_modules m where m.definition like N' + CHAR(39) + '%' + @targetText + '%' + CHAR(39) 

    exec (@sql) 

    SET NOCOUNT OFF; 
END 

然後,我已將dbo.SP_FindAllReferences添加到我的某個SSMS鍵盤快捷鍵中,以便我可以在任何數據庫的上下文中搜索文本在我的服務器上。

例如,如果我在一個SSMS查詢窗口中鍵入用戶,突出顯示它並按下快捷鍵組合,然後我得到了一個包含用戶

如果當前數據庫的每個存儲過程的列表你替換我的選擇

set @sql = 'USE [' + @origdb +'];' 
set @sql += 'Select * FROM sys.tables WHERE name LIKE N' + CHAR(39) + '%' + @targetText + '%' + CHAR(39) 

然後你就可以實現你的目標。

+0

DeanOC:謝謝!!!我真的很感謝你的方法。這很棒。 但在我的情況下,我無法訪問Master以執行此操作。所以我試圖在單個Key上創建並執行並刪除proc,這樣,沒有人會知道我創建了一些用於個人使用的過程(因爲它在使用後就被放棄了)。對不起,說需要任何其他方法..但你的方法很少。 – vishaldk