데이터베이스 개발자 질문과 답변 게시판
데이터베이스 개발/운영 관련 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나, 장애 발생 전 상황을 상세히 올려 주시면 답글을 적어주시는 SQLER분들의 답변이 더 정확할 수 있으니 도움 되시길 바랍니다. 쿼리 문의일 경우, 실제 문제가 재현되는 테이블생성, 샘플데이터 생성 쿼리를 함께 올려 주시면 더 빠르고 정확한 쿼리 문의 응답이 가능합니다.
작업자가 테이블에 컬럼을 삭제하면서
종속된 프로시저에 컬럼을 수정하지 않았습니다.
그런데 이런 경우가 수십 건이 쌓여있네요...
한 두 테이블들도 아니고 여러 테이블들을 수정해서
작업물 추적하기도 힘든 상태입니다.
오라클의 경우 패키지나 프로시저가 문제가 있으면 상태가
invalid object 처리되서 전체 목록을 뽑을 수 있는데
ms sql server 에서는 비슷한 기능이 없나요?
Comment 1
-
catchv
2018.02.01 10:51
이게 정답이 아닐 수도 있지만 저는 아래와 같은 쿼리로 문제의 프로시져 들을 확인하고 있습니다. sp_msforeachtable 등을 사용해서 돌리시면 프로시져의 에러를 확인 하실수 있습니다. 참고만 하시기 바랍니다.
CREATE TABLE t1
(
col1 INT
, col2 INT
)
GO
CREATE PROC usp_test1
AS
SELECT col1, col2
FROM t1
GO
EXEC usp_test1
ALTER TABLE t1 DROP COLUMN col2
GO
BEGIN TRY
EXEC sp_refreshsqlmodule 'usp_test1'
END TRY
BEGIN CATCH
SELECT
ERROR_NUMBER() AS ErrorNumber
,ERROR_SEVERITY() AS ErrorSeverity
,ERROR_STATE() AS ErrorState
,ERROR_PROCEDURE() AS ErrorProcedure
,ERROR_LINE() AS ErrorLine
,ERROR_MESSAGE() AS ErrorMessage;
END CATCH