작업자가 테이블에 컬럼을 삭제하면서
종속된 프로시저에 컬럼을 수정하지 않았습니다.
그런데 이런 경우가 수십 건이 쌓여있네요...
한 두 테이블들도 아니고 여러 테이블들을 수정해서
작업물 추적하기도 힘든 상태입니다.
오라클의 경우 패키지나 프로시저가 문제가 있으면 상태가
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