다음을 사용하여 저장 프로 시저에서 문자열을 검색합니다.
use DBname
SELECT Name
FROM sys.procedures
WHERE OBJECT_DEFINITION(OBJECT_ID) LIKE '%xxx%'
특정 db “DBname”에서 테이블 이름을 검색하도록 위의 내용을 쉽게 수정할 수 있습니까?
답변
나는 이것을 사용하고 있으며 잘 작동합니다.
SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME LIKE '%%'
답변
select name
from DBname.sys.tables
where name like '%xxx%'
and is_ms_shipped = 0; -- << comment out if you really want to see them
답변
서버 전체 데이터베이스의 모든 테이블을보고 출력을 얻으려면 문서화되지 않은 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%'