카테고리 없음
MSSQL Meta 검색
tester______
2025. 11. 5. 10:38
모든테이블에서 데이터로 검색
DECLARE @SearchValue NVARCHAR(100) = N'검색값';
DECLARE @TableName NVARCHAR(256), @ColumnName NVARCHAR(128), @SearchSQL NVARCHAR(MAX);
DECLARE TableCursor CURSOR FOR
SELECT t.name, c.name
FROM sys.tables t
JOIN sys.columns c ON t.object_id = c.object_id
JOIN sys.types ty ON c.user_type_id = ty.user_type_id
WHERE ty.name IN ('char', 'nchar', 'varchar', 'nvarchar', 'text', 'ntext'); -- 문자형 컬럼만 검색
OPEN TableCursor;
FETCH NEXT FROM TableCursor INTO @TableName, @ColumnName;
WHILE @@FETCH_STATUS = 0
BEGIN
SET @SearchSQL =
'IF EXISTS (SELECT 1 FROM [' + @TableName + '] WHERE [' + @ColumnName + '] LIKE N''%' + @SearchValue + '%'')
PRINT ''테이블 [' + @TableName + '] 컬럼 [' + @ColumnName + '] 에 존재함''';
EXEC (@SearchSQL);
FETCH NEXT FROM TableCursor INTO @TableName, @ColumnName;
END
CLOSE TableCursor;
DEALLOCATE TableCursor;
✅ 테이블 코멘트(extended property) 검색 쿼리
✅ 테이블 코멘트(extended property) 검색 쿼리
SELECT
s.name AS SchemaName,
t.name AS TableName,
ep.name AS PropertyName,
CAST(ep.value AS NVARCHAR(500)) AS Comment
FROM sys.extended_properties ep
JOIN sys.tables t ON ep.major_id = t.object_id
JOIN sys.schemas s ON t.schema_id = s.schema_id
WHERE ep.name = 'MS_Description' -- 표준 코멘트 프로퍼티명
AND CAST(ep.value AS NVARCHAR(500)) LIKE N'%검색어%' -- 검색어 입력
ORDER BY s.name, t.name;
예를 들어 특정 컬럼 이름이 포함된 테이블을 찾고 싶다면 👇
SELECT
TABLE_SCHEMA,
TABLE_NAME,
COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME LIKE '%컬럼명%'
ORDER BY TABLE_SCHEMA, TABLE_NAME;
또는 좀 더 상세한 정보(테이블 ID 등)까지 보고 싶다면 sys 뷰를 사용할 수 있어요:
SELECT
t.name AS TableName,
c.name AS ColumnName
FROM sys.columns c
JOIN sys.tables t ON c.object_id = t.object_id
WHERE c.name LIKE '%컬럼명%'
ORDER BY t.name;
💡 LIKE '%컬럼명%' 대신 = '정확한컬럼명' 으로 하면 완전 일치 검색이 돼요.
💡 뷰(View)까지 포함해서 찾고 싶다면 sys.objects를 조인해도 됩니다.
예시 (테이블 + 뷰 포함):
SELECT
o.name AS ObjectName,
o.type_desc AS ObjectType,
c.name AS ColumnName
FROM sys.columns c
JOIN sys.objects o ON c.object_id = o.object_id
WHERE c.name LIKE '%컬럼명%'
ORDER BY o.type_desc, o.name;