본문 바로가기

프로그래밍/TSQL60

[MSSQL] 마이그레이션 ( 2000에서 상위 버전으로 ) MSSQL 마이그레이션 경험을 공유 합니다. 이번 마이그레이션은 mssql 2000버넞에서 2017버전으로의 이동입니다. 요약! 2000의 백업파일을 2008 버전으로 한번 올렸다가 다시 백업해서 2017로 복원 (* 2000서버에는 sp4가 설치되어있어야 한다) 작업 수순 1. 2000 서버 접속 및 데이터 베이스 백업 -> 서버 8.0버전의 백업파일 생성됨, 로컬에 생성된 백업파일 이동(공유폴더) 2. 백업된 파일을 2008R2 서버에서 복원 3. 복원된 데이터 베이스에 대한 백업 파일 생성 -> 서버 10.5 버전의 백업파일 생성됨 (공유폴더) 4. 신규 서버에 10.5 버전의 백업 파일 복원 * 2008R2 서버는 한번 거쳐가는 역할만 하므로 복원,백업 후에는 해당 인스턴스를 삭제해주는 게 관리상.. 2020. 7. 28.
[MSSQL] BCP 취소하기 MSSQL 에서 BCP 유틸리티로 수행하는 트랜잭션을 종료할 때 시간이 매우 오래 걸림! 이유는 ? 그래서 어떻게 ? 알려드립니다. BCP 는 배치로 수행되는 것이고 XP_CMDSHELL 과 같이 SSMS/DBMS 상에서 호출 했을 경우 별도의 유틸리티를 호출하는 방싱으로 수행됩니다. 즉, 별도의 유틸리티가 실행중입니다. KILL 명령을 통해 해당 SPID 를 중지하거나 SSMS 상에 중지 버튼을 클릭해도 BCP가 리턴을 주기 전까지는 계속 수행을 지속하고 그 수행이 끝난 후에 취소가 가능합니다. BCP IN 을 했을 때 중지를 했더라도 떨어지는 파일이 계속 증가하는 것을 보실수가 있습니다. *방법은 BCP.EXE 프로세스를 중지하는 것입니다.* 작업 관리창 혹은 Crtl+Shift+Esc 단축키를 통해.. 2020. 6. 29.
[MSSQL] 인스턴스 확인, DB명 확인, 서버 확인 MSSQL에서 동적 쿼리를 수행하다 보면 서버별, 인스턴스 별로 다른 동작을 수행해야하는 경우가 있습니다. MSSQL에서는 @@SERVERNAME, @@SERVICENAME, DB_NAME()을 통해 서버 및 인스턴스의 명칭(이름)을 제공하고있습니다. --■■ 설정된 서버의 명칭(이름) SELECT @@SERVERNAME --■■ --■■ 설정된 MSSQL서비스 명칭(이름) SELECT @@SERVICENAME --■■ --■■ 현재 쿼리가 수행중인 DB 인스턴스 명칭(이름) SELECT DB_NAME() --■■ --■■ 사용 예시 DECLARE @SERVER_NAME VARCHAR(200) SET @SERVER_NAME = (SELECT @@SERVERNAME) IF (@SERVER_NAME= 'TE.. 2020. 4. 28.
[MSSQL] 저장 프로시저, 함수, 트리거 또는 뷰의 최대 중첩 수준(32) 처리 방법 CTE 를 쓰는 경우 아래와 같이 해결할 수 있겠지만 국내 검색 결과에는 모두 CTE의 경우에 대한 답변 뿐이라 영문 검색을 할 수 밖에 없었다. "procedure, function, trigger, or view nesting level exceeded (limit 32)" 결론은 프로시저나 트리거 뷰에서는 재귀최대횟수를 어찌할 수 없다. ;WITH CTE ... SELECT * FROM TABLE OPTION (MAXRECURSION 0) -- 이 옵션을 주면 무한루프로 돌수있고 원하는 레벨이 있으면 줘도 된다. 저장 프로시저, 함수, 트리거 또는 뷰의 최대 중첩 수준은 32레벨을 넘을 수 없게 지정되어 있다. 어쩔 수 없이 해당 중첩을 분기하거나 32 이상은 포기해야 한다. 아래와 같이 RECUR.. 2020. 4. 16.