Я использую следующее для поиска строк в моих хранимых процедурах:
use DBname
SELECT Name
FROM sys.procedures
WHERE OBJECT_DEFINITION(OBJECT_ID) LIKE '%xxx%'
Легко ли изменить это выше, чтобы он искал имена таблиц в определенном db "DBname"?
Я использую следующее для поиска строк в моих хранимых процедурах:
use DBname
SELECT Name
FROM sys.procedures
WHERE OBJECT_DEFINITION(OBJECT_ID) LIKE '%xxx%'
Легко ли изменить это выше, чтобы он искал имена таблиц в определенном db "DBname"?
select name
from DBname.sys.tables
where name like '%xxx%'
and is_ms_shipped = 0; -- << comment out if you really want to see them
Я использую это и прекрасно работаю
SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME LIKE '%%'
Я предполагаю, что вы хотите передать имя базы данных в качестве параметра, а не просто запустить:
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].
Всякий раз, когда я ищу список таблиц, я вообще хочу выбрать из них или удалить их. Ниже приведена script, которая генерирует эти сценарии для вас.
Сгенерированный select script также добавляет столбец 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%'
Если вы хотите посмотреть во всех таблицах во всех Базах данных по всему серверу и получить вывод:
sp_MSforeachdb 'SELECT "?" AS DB, * FROM [?].sys.tables WHERE name like ''%Table_Names%'''