본문 바로가기

반응형

프로그래밍/MSSQL

(76)
[MSSQL] RECOMPILE 저장 프로시저 리컴파일 (c# 프로시저 timeout 에러) recomplie에 대해 알아보기 전에 먼저 c# 프로시저 timeout 에러 상황에 대해 설명해보겠습니다. 저장 프로시저를 호출하는 c# 코드에서 timeout 에러가 발생했다. 그런데.. 해당 저장 프로시저를 SSMS에서 실행해보니, 0초도 안돼서 결과를 뱉어낸다. 파라미터 값마저 동일하게 해봐도 똑같다. 도대체 이게 무슨 상황인지..? 이 상황은 RECOMPLIE을 통해 해결할 수 있었습니다. recomplie 방법은 3가지이고, 저는 첫 번째 방법으로 해결하였습니다. 1. 프로시저에 RECOMPILE 쿼리 힌트 CREATE PROCEDURE dbo.USP_FOOD_LIST ( @id INT ) WITH RECOMPILE AS BEGIN ... 쿼리문 END 2. WITH RECOMPILE 옵션 E..
[MSSQL] NOT MATCHED BY SOURCE ('DELETE' 유형의 동작은 MERGE 문의 'WHEN NOT MATCHED' 절에 사용할 수 없습니다.) MERGE [MSSQL] MERGE를 사용하여 데이터 입력/수정/삭제를 한 번에 처리 [MSSQL] MERGE를 사용하여 데이터 입력/수정/삭제를 한 번에 처리 데이터 입력/수정/삭제를 한 번에 처리할 수 있는 MERGE에 대해 알아보자 MERGE 단일 문에서 여러 DML(INSERT, UPDATE, DELETE) 작업을 수행할 수 있다. 즉, 여러 개의 개별 DML문을 단일 문으로 대체할 수 있다... ggmouse.tistory.com MERGE 구문 수행 도중 다음과 같은 오류가 발생했다. 이를 해결해보자! 메시지 10710, 수준 15, 상태 1, 줄 5 'DELETE' 유형의 동작은 MERGE 문의 'WHEN NOT MATCHED' 절에 사용할 수 없습니다. 'UPDATE' 유형의 동작은 MER..
[MSSQL] BULK INSERT (CSV/TXT 파일 결과 저장 & 파일 INSERT) CSV 파일 INSERT 1. 결과 데이터 CSV/TXT 파일로 저장 결과창 마우스 우클릭하여 "다른 이름으로 결과 저장" 선택 후 원하는 경로에 저장한다. 2. BULK INSERT를 통해서 CSV/TXT 파일 INSERT BULK INSERT table_ggmouse2 -- 대상 테이블 FROM 'C:\SQLServer\데이터.csv' -- 파일 경로 WITH ( FIELDTERMINATOR = ',', -- 열 구분자 ROWTERMINATOR = '\n', -- 행 구분자 KEEPNULLS, -- NULL 값 삽입 TABLOCK -- 테이블 수준 잠금 ) BULK INSERT table_ggmouse2 -- 대상 테이블 FROM 'C:\SQLServer\데이터2.txt' -- 대상 파일 WITH (..
[MSSQL] 사용자 정의 데이터 형식을 이용한 프로시저 집합기반 처리 (프로시저 테이블 파라미터 TVP) 사용자 정의 데이터 형식을 이용하여, 프로시저 집합 기반 처리를 해보자 문제 상황 학생의 이름과 나이 정보를 저장하는 테이블에 프로시저를 이용하여 값을 넣으려고 한다. CREATE PROCEDURE usp_student_ins @s_name varchar(100), @s_age int AS BEGIN SET NOCOUNT ON; INSERT INTO table_ggmouse (name, age) SELECT @s_name, @s_age END GO 아래와 같이 프로시저를 호출하여 테이블에 값을 넣어줬다. EXEC usp_student_ins @s_name = 'minzy', @s_age = 10 EXEC usp_student_ins @s_name = 'inyoung', @s_age = 8 EXEC usp..
[MSSQL] 트랜잭션 로그 보기 트랜잭션 로그 조회 데이터베이스에서 발생하는 행위들이 저장되는 트랜잭션 로그를 조회해보자 fn_dblog(시작 LSN, 종료 LSN) 시작 LSN, 종료 LSN이 NULL일 경우 트랜잭션 로그 파일의 모든 로그 결과를 반환한다. SELECT * FROM fn_dblog(NULL, NULL) 특정 테이블의 트랜잭션 로그 AllocUnitName 칼럼에서 테이블의 이름을 확인할 수 있다. SELECT [Current LSN], [Operation], [Transaction ID], [AllocUnitId], [AllocUnitName], [Begin Time], [End TIme] FROM fn_dblog (NULL, NULL) WHERE AllocUnitName = 'dbo.ggmouse' 특정 사용자의 ..

반응형