본문 바로가기

반응형

msSQL

(69)
[MSSQL] 0으로 나누기 오류가 발생했습니다. 0으로 나누기 오류가 발생했습니다. 해당 쿼리 상단에 SET 선언 SET ANSI_WARNINGS OFF SET ARITHIGNORE ON SET ARITHABORT OFF SET ANSI_WARNINGS ON/OFF 값을 ON으로 설정하면 0으로 나누기 및 산술 오버플로 오류로 인해 명령이 취소되고 오류 메세지가 발생한다. 값을 OFF로 설정하면 0으로 나누기 및 산술오버플로 오류로 인해 NULL값이 반환된다. SET ARITHIGNORE ON/OFF 오류 메세지가 리턴되는 상황을 제어한다. SET ARITHABORT ON/OFF 값을 ON으로 설정하면 0으로 나누기 및 산술 오버플로 오류로 인해 명령이 취소되고 트랜잭션에서 해당 오류가 발생하면 트랜잭션이 롤백된다. (하지만 INSERT, UPDATE..
[MSSQL] DB LOCK 확인 및 해제 DB가 갑자기 느려질 경우 LOCK을 확인해보자 LOCK 걸린 SPID 확인 EXEC sp_lock SPID : 잠금을 요청하는 프로세스의 세션 ID DBID : 데이터베이스의 식별번호 OBID : 개체의 식별번호 INDLD : 인덱스의 식별번호 TYPE : 잠금유형 RESOURCE : 리소스 식별값 MODE : 잠금 STATUS : 잠금요청상태 MODE S : 공유 잠금 U : 업데이트 잠금 X : 독점 잠금 IS : 의도 공유 IU : 의도 업데이트 IX : 독점 의도 BU : 대량 업데이트 수행된 쿼리 정보 확인 DBCC inputbuffer (spid값) SPID 관련 정보 확인 EXEC sp_who (spid값) 해당 프로세스 종료 kill (spid값)
[MSSQL] SEQUENCE 시퀀스 시퀀스를 이용해서 별도의 유니크한 번호를 생성해보자 시퀀스 생성 CREATE SEQUENCE [schema_name . ] sequence_name [ AS [ built_in_integer_type | user-defined_integer_type ] ] [ START WITH ] [ INCREMENT BY ] [ { MINVALUE [ ] } | { NO MINVALUE } ] [ { MAXVALUE [ ] } | { NO MAXVALUE } ] [ CYCLE | { NO CYCLE } ] [ { CACHE [ ] } | { NO CACHE } ] [ ; ] 예제 다음과 같은 정수형 시퀀스를 생성해보자 CREATE SEQUENCE [dbo].[SEQ_TEST_NO] AS [int] -- 정수형 STA..
[MSSQL] sp_executesql 사용 (EXECUTE sp_executesql vs EXEC) 효율적인 동적쿼리 실행을 위해 sp_executesql 저장 프로시저를 사용해보자 sp_executesql - sp_executesql 저장 프로시저는 매개 변수 대체를 지원하기 때문에 EXECUTE보다 융통성이 뛰어나다. - sp_executesql은 SQL Server에서 재사용이 쉬운 실행 계획을 생성하므로 sp_executesql이 EXECUTE 문보다 효율적이다. CREATE PROCEDURE [dbo].[USP_TEST_PROC] @in_Name VARCHAR(20) = '', @in_Age INT = '' AS BEGIN DECLARE @query VARCHAR(MAX); DECLARE @whereQuery VARCHAR(MAX); SET @query = ''; SET @whereQuery ..
[DB_MSSQL] TRY CATCH / ERROR / XACT_STATE (오류 처리) TRY CATCH을 이용하여 오류를 처리해보자 BEGIN SET NOCOUNT ON; SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; BEGIN TRY BEGIN TRAN /* 쿼리 작업 */ SELECT '성공' COMMIT TRAN; END TRY BEGIN CATCH DECLARE @ErrorNumber INT DECLARE @ErrorSeverity INT DECLARE @ErrorState INT DECLARE @ErrorProcedure NVARCHAR(MAX) DECLARE @ErrorLine INT DECLARE @ErrorMessage NVARCHAR(MAX) SELECT @ErrorNumber = ERROR_NUMBER(), -- 오류 번호 @E..

반응형