回答:
select name
from DBname.sys.tables
where name like '%xxx%'
and is_ms_shipped = 0; -- << comment out if you really want to see them
and is_ms_shipped = 0;
てもあまり効果がないようです
サーバー全体のすべてのデータベースのすべてのテーブルを調べて出力を取得する場合は、ドキュメントに記載されていないsp_MSforeachdbプロシージャを使用できます。
sp_MSforeachdb 'SELECT "?" AS DB, * FROM [?].sys.tables WHERE name like ''%Table_Names%'''
単に実行するのではなく、データベース名をパラメーターとして渡したいと想定しています。
SELECT *
FROM DBName.sys.tables
WHERE Name LIKE '%XXX%'
その場合、動的SQLを使用してクエリにdbnameを追加できます。
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;
@ [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;
showコマンドを使用することもできます。
show tables like '%tableName%'