안녕하십니까?
프로그램에서 다음과 같이 조회를 하여 sp, fnction, view등의 Query source 수정한 후 다시 저장을 하는 프로그램을 만들고 있습니다.
SELECT A.ID, A.NAME, B.TEXT,
CASE WHEN A.XTYPE = 'FN' THEN 'FN(스칼라함수)'
WHEN A.XTYPE = 'IF' THEN 'IF(인라인테이블함수)'
WHEN A.XTYPE = 'P' THEN 'P(저장프로시저)'
WHEN A.XTYPE = 'RF' THEN 'RF(복제필터저장프로시저)'
WHEN A.XTYPE = 'TF' THEN 'TF(테이블 함수)'
-- WHEN A.XTYPE = 'TR' THEN 'TR(트리거)'
WHEN A.XTYPE = 'V' THEN 'V(뷰)'
WHEN A.XTYPE = 'X' THEN 'X(확장저장 프로시저)'
END TYPE
FROM DBO.SYSOBJECTS A
INNER JOIN DBO.SYSCOMMENTS B ON A.ID = B.ID
WHERE PATINDEX(:SPName + '%', A.NAME) > 0 -- 프로시저 등의 이름(name)으로 검색
AND PATINDEX('%' + :SPText + '%', B.TEXT) > 0 -- Query내의 특정 내용을 검색
AND A.XTYPE IN ('FN', 'IF', 'P', 'RF', 'TF', 'TR', 'V', 'X')
ORDER BY A.NAME
그런데 syscomments 테이블의 TEXT 칼럼에 4096바이트 밖에 저장이 안됩니다. 그래서 4096바이트 보다 크면 2개, 3개의 Text로 나누어서 저장을 하네요.. 즉, 2개 이상의 row가 생깁니다. 이것을 하나로 합쳐서 보는 방법이 있겠는지요?
'exec sp_helptext 프로시저이름' 해서 보면 되겠지만 이것은 이름 및 내용으로 검색이 안되는지라...
좋은 방법이 있으면 조언을 부탁드리겠습니다.
sql server2005 이상입니다.
감사합니다...
http://www.jasonstrate.com/2012/07/lost-in-translation-deprecated-system-tables-syscomments/
여기를 참고해 보시면 어떨까요?
-- catchv