検索

2012-10-26 6 views
52

は、私は私のストアドプロシージャ内の文字列を検索するには、次を使用できますか?検索

答えて

77
select name 
    from DBname.sys.tables 
where name like '%xxx%' 
    and is_ms_shipped = 0; -- << comment out if you really want to see them 
+0

はライン '0 = is_ms_shippedをコメントアウト。 '多くのことをしていないようです。 – whytheq

+2

通常はデータベースダイアグラムのサポートテーブルだけが隠れています。関数/プロシージャを探すときにはより便利です。 – RichardTheKiwi

+0

スキーマ名を追加してみませんか? Tは、内側がt.schema_idのSとして\t DBNAME.sys.schemasに参加として\t \t t.schema_id、 \t \t \t s.name、 \t \t \t t.Name \t \tからDBNAME.sys.tablesを選択= \t \t t.name – Acroneos

5

私はちょうど実行あなたがパラメータとしてデータベース名を渡したいと仮定していない午前:

SELECT * 
FROM DBName.sys.tables 
WHERE Name LIKE '%XXX%' 

をもしそうなら、あなたはクエリにDBNAMEを追加するために、動的SQLを使用することができます。

DECLARE @DBName NVARCHAR(200) = 'YourDBName', 
     @TableName NVARCHAR(200) = 'SomeString'; 

IF NOT EXISTS (SELECT 1 FROM master.sys.databases WHERE Name = @DBName) 
    BEGIN 
     PRINT 'DATABASE NOT FOUND'; 
     RETURN; 
    END; 

DECLARE @SQL NVARCHAR(MAX) = ' SELECT Name 
           FROM ' + QUOTENAME(@DBName) + '.sys.tables 
           WHERE Name LIKE ''%'' + @Table + ''%'''; 

EXECUTE SP_EXECUTESQL @SQL, N'@Table NVARCHAR(200)', @TableName; 
46

私はこれを使用して正常に動作してい

SELECT * FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_NAME LIKE '%%' 
+0

0 = と\t \t \tはis_ms_shipped '%yourtabletosearch%' などがあまりにも:-) –

+0

accepより良い景色を眺めることができ をs.schema_id ted答え。 –

2

@ [RichardTheKiwi]さんの答えに追加しています。

テーブルのリストを検索するたびに、一般的にはすべてのテーブルから選択するか、削除する必要があります。以下はあなたのためにそれらのスクリプトを生成するスクリプトです。

あなたが見ているものを知っているので、テーブル生成を選択したスクリプトもtableNameの列を追加します。

select 'select ''' + name + ''' as TableName, * from ' + name as SelectTable, 
'delete from ' + name as DeleteTable 
from sys.tables 
where name like '%xxxx%' 
and is_ms_shipped = 0; 
2

あなたはまた、showコマンドを使用することができます。

show tables like '%tableName%' 
+2

これは、質問SQL Serverのタグ付きMySQL構文です。 –

2

あなたはすべてのデータベース・サーバ全体ですべてのテーブルで見て、出力を取得したい場合は、文書化されていないsp_MSforeachdb手順を利用することができます:

sp_MSforeachdb 'SELECT "?" AS DB, * FROM [?].sys.tables WHERE name like ''%Table_Names%''' 
+0

この回答は、テーブルがどのデータベースに含まれているかわからない場合にのみ有効です – Matthew