암호화 대칭키 아이디가 변경 되어서 DECRYPTBYKEYAUTOCERT 함수의 아이디값 호출 부분을 변경해야 하는데
검색해보니 바꿔야할 sp가 200개 정도가 되네요 ㅠㅠㅠㅠ
해당 문자열을 한번에 alter 하는 방법이 있을까요?
Comment 4
-
건우아빠
2013.07.15 17:24
초짜해커님이 이미 말씀 하셨지만
스크립트로 이용하실수는 있는데 하나의 변수로 하게 되면 스크립트가 짤리게 됩니다.
크기를 계산해서 여러 변수로 분할해서 저장하시고 그걸 동적쿼리로 실행하시면 가능합니다..
게시판에 디비의 프로시저를 화일로 내려받는 프로시저가 있을겁니다. 있을지는 가물거리네요.. ?
이걸 이용해서 화일로 내려받고 화일을 읽어서 실행하는 방법도 가능 할것 같구요...
SSMS로 전체를 한꺼번에 프로시저를 스크립트로 내려 받으신다음 문자열 바꾸기로 한꺼번에 바꾸고 나서 그냥 그냥 실행하시는 방법을
하시는게 좋을듯 합니다.
-
상쿨
2013.07.15 18:04
답변 감사합니다-
역시 전체 sp 스크립트로 뽑고 에디터로 일괄 수정후 전체 실행.
이방법 뿐인가보네요..
전체 sp가 천개가 넘는데. 200개 alter를 위해 천개 넘는 sp를 통으로 alter 한다는게 살짝 부담스러워서..
방법이 있나 싶었는데..
어쩔수 없네요 ^^
답변 감사드립니다!
-
헐... 1000개를 다 고치라는게 아니고 그 200개만 찾아서 고쳐야죠
SELECT 'EXEC SP_HELPTEXT ' + A.NAME
FROM SYS.OBJECTS A INNER JOIN
SYS.SQL_MODULES B ON A.OBJECT_ID = B.OBJECT_ID
WHERE B.DEFINITION LIKE '%키워드%'
이렇게 하면 원하는 SP만 소스를 뽑을 수 있는 문장이 결과로 나올겁니다.
그 스크립트 돌려서 해당 SP들의 소스를 몽땅 뽑은 다음
적당히 스크립트 수정해서 돌려야죠.
프로시져의 소스를 고칠 수 있는 방법은
새로 만들거나 Alter Procedure 하는 방법 뿐입니다.
syscomments나 sys.sql_modules의 소스 부분을 직접 수정하려고 하면
"시스템 카탈로그에 대한 임의 업데이트를 사용할 수 없습니다." 라는 에러가 발생합니다.
결론은 sp_helptext로 소스 다 뽑아서 에디터로 수정 후 Alter Procedure 하는 수 밖에 없는거 같습니다.