2010-04-16 49 views
2

有SQLServer中sp_help將「表名」(表名或其他東西)的sp_help使用通配符

有沒有使用它,當你不知道整個表名,使用通配符或類似這樣的東西可能命令:

sp_help將ADMIN_

編輯:

運行sp_help (SELECT * FROM INFORMATION_SCHEMA.Tables WHERE TABLE_NAME like '%admin_%'),但有一個奇怪的結果......

回答

3

沒有,SP_HELP需要一個完整的名字,所以採用這種先找到表名:

SELECT 
    * 
    FROM INFORMATION_SCHEMA.Tables 
    WHERE TABLE_NAME like '%your table name guess here%' 

那麼你可以使用sp_help 'the_real_complete_name'

編輯基於OP的評論

你不需要記住查詢,只需創建一個過程來搜索對象名稱:

CREATE PROCEDURE [FO] 
    @SearchFor sysname='' 
AS 

SELECT 
    name,type_desc 
    FROM sys.objects 
    WHERE name like '%'[email protected]+'%' 
    ORDER BY type,name 
GO 

現在只是用它喜歡:

fo 'xyz' 

exec fo 'xyz' 

找到的所有對象具有匹配名稱。這些都是可以找到的對象類型:

AGGREGATE_FUNCTION 
CHECK_CONSTRAINT 
DEFAULT_CONSTRAINT 
FOREIGN_KEY_CONSTRAINT 
PRIMARY_KEY_CONSTRAINT 
SQL_STORED_PROCEDURE 
CLR_STORED_PROCEDURE 
SQL_SCALAR_FUNCTION 
CLR_SCALAR_FUNCTION 
CLR_TABLE_VALUED_FUNCTION 
RULE 
REPLICATION_FILTER_PROCEDURE 
SYNONYM 
SERVICE_QUEUE 
CLR_TRIGGER 
SQL_TRIGGER 
SQL_INLINE_TABLE_VALUED_FUNCTION 
SQL_TABLE_VALUED_FUNCTION 
USER_TABLE 
UNIQUE_CONSTRAINT 
VIEW 
EXTENDED_STORED_PROCEDURE 
INTERNAL_TABLE 

這關的主要話題,但你也可以使用這個搜索存儲過程,觸發器,視圖或函數內的任何文字:

CREATE PROCEDURE [FT] 
    @Search varchar(255) 
AS 

SELECT DISTINCT 
    o.name,o.type_desc 
    FROM sys.sql_modules  m 
     INNER JOIN sys.objects o ON m.object_id=o.object_id 
    WHERE m.definition Like '%'[email protected]+'%' 
    ORDER BY type_desc 

GO 

只是用它喜歡:

ft 'fkgjfg' 

exec ft 'fkgjfg' 
+0

是的。這有助於,有點長,應該記住。 – serhio 2010-04-16 14:28:18

1

以下查詢將爲您提供與您想要的名稱匹配的表的列表。

select * from INFORMATION_SCHEMA.Tables 
where TABLE_NAME like 'admin%' 

然後,您可以對生成的表名執行sp_help

0

如果您嘗試使用sp_help的功能實現一些特殊功能,您可以通過複製它的源代碼來創建自己的版本。 (sp_helptext sp_help