728x90

 

 

방법 1)
SELECT DISTINCT name
FROM
, dbo.syscomments sc
WHERE so.id=sc.id
-- AND type = 'P' -- 타입은 프로시져, 뷰, 함수등 구분(P : 프로시져, V : 뷰, FN : 함수)

AND so.name LIKE 'SIS%' -- 찾으려는 범위 프로시져
AND sc.text LIKE '%Jumin%' -- 찾으려는 컬럼



방법 2)
SELECT DISTINCT(OBJECT_NAME(id)) as spnm2
FROM syscomments
WHERE OBJECT_NAME(id) like 'SIS%' -- 찾으려는 범위 프로시져
AND text like '%Jumin%' -- 찾으려는 컬럼



-- 테이블/프로시져/함수/뷰 등 정보를 가지고 있지만 컬럼 정보는 갖고 있지 않음
SELECT *
FROM sysobjects

-- 프로시저/함수/뷰 등 작성 text(내용)을 갖고 있고, 테이블은 내용이 없으므로 테이블 정보는 찾을 수 없다.
-- text에서 해당 컬럼을 찾아 내야 한다.
SELECT *
FROM syscomments


-- 테이블/뷰 정보만 가지고 있음, 컬럼 정보 갖고 있음
SELECT *
FROM information_schema.COLUMNS

-- 테이블 정보만 가지고 있음, 컬럼 정보 갖고 있음
SELECT *
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE



-- MS-SQL에서 테이블/뷰/프로시져/함수 등 스키마의 모든 정보에서 해당 컬럼 찾기
SELECT distinct A.Name, A.Id, A.Xtype, A.Type, B.Id, C.Table_Name, C.Column_name
, case when type = 'U' then '1'
when type = 'V' then '2'
when type = 'P' then '3'
else '4'
end as sort
-- B.Text
FROM sysobjects A
LEFT JOIN syscomments B ON (A.id = B.id)
LEFT JOIN information_schema.COLUMNS C ON (A.NAME = C.Table_Name)
WHERE A.name LIKE '%SIS_%' -- 찾으려는 범위 프로시져
AND (isnull(C.Column_Name, '') = '' OR C.Column_Name LIKE '%Jumin%' OR C.Column_Name LIKE '%주민%' OR C.Column_Name LIKE '%SocialNumber%')
AND (isnull(B.TEXT, '') = '' OR B.text LIKE '%Jumin%' OR B.text LIKE '%주민%' OR B.text LIKE '%SocialNumber%')
AND Type NOT IN ('F', 'K', 'S') -- FK, PK 제외, S는 시스템인듯
ORDER BY sort, a.name


 



728x90

'개발및업무 > SQL' 카테고리의 다른 글

Sqlite 데이터 MS-sql 이관 방법  (0) 2011.06.21
dts.dll 오류  (0) 2011.06.21
[MS-SQL] auto commit  (0) 2011.05.16
[MS-SQL] 프로시저 내용검색  (0) 2011.05.16
MS SQL 2005 Linked Server 연결(연결된 서버)  (0) 2011.05.09

+ Recent posts