본문 바로가기

mssql36

[MSSQL] 시스템 카탈로그에 대한 임의 업데이트는 지원되지 않습니다. (xp_cmdshellxp_cmdshell활성화) 구성 옵션 'xp_cmdshell'이(가) 없거나 고급 옵션입니다. 조치방법MSSQL 신규 설치 후 xp_cmdshell 설정이 안되어 있어 발생한 상황 및 조치 방법 공유 드립니다.상기 캡처와 같이 활성화 되어 있지 않은 옵션을 켜주면 되는데 활성화 스크립트는 아래와 같습니다.-- To allow advanced options to be changed.EXECUTE sp_configure 'show advanced options', 1;GO-- To update the currently configured value for advanced options.RECONFIGURE;GO-- To enable the feature.EXECUTE sp_configure 'xp_cmdshell', 1;GO-- To.. 2024. 6. 5.
[MSSQL]EXECUTE 후 트랜잭션 개수는 BEGIN 및 COMMIT 문 수가 일치하지 않음을 나타냅니다 sp 처리 중에 TRY CATCH 문과 트랜잭션 처리를 제대로 했는데 아래와 같은 메시지가 발생하여 여러 원인을 찾아봤습니다. "EXECUTE 후 트랜잭션 개수는 BEGIN 및 COMMIT 문 수가 일치하지 않음을 나타냅니다" 구문내에 RETURN 에 대한 점검! 필요 특히 CURSOR 순회중엔 BREAK;하자 1. SET XACT_ABORT ON; 를 상단에 기재하여 정확한 원인 현상을 찾은 방법 --> 테이블이 없거나, 구문요류 등 상황에서는 도움이 되지만 나의 경우는 도움이 되지 않았음 2. 구문내에 RETURN 에 대한 점검! --> 구문 중간에 RETRUN; 이 들어가 있었다.. 왠지 느낌상 CURSOR 돌다가 RETURN 을 만나면 이상하게 동작할 것 같고 예전에 FUNCTION 내에 FUNC.. 2023. 7. 20.
[TSQL]mssql cursor 재사용 방법 / mssql에서 조건에 맞는 데이터를 조회하는 커서를 생성하고 해당 커서를 재사용하는 방법은 없습니다. 단, 루프내에 커서를 정의, 해제 하여 동일 기능을 구현 할 수 있습니다. 아래 예시는 TEST_TBL 이라는 테이블에 목적 데이터의 조건을 변경하여 순회하는 예시 입니다. mssql 커서에는 변수 파라메터를 입력으로 쓸 수 는 없지만 변수를 지정하고 해당 변수에 값 할당을 변경 후 커서를 재 정의하는 방식으로 구현 가능합니다. 최초 시도는 open후 close 하고 변수 값을 변경한 후 다시 open 했을때 변경된 조건에 맞는 레코드를 반환 하기를 바랬지만 예상대로 동작하지 않았고 아래와 같이 구현하는 것이 유일한 방법입니다. IF EXISTS (SELECT * FROM SYSOBJECTS WHER.. 2023. 6. 20.
[MSSQL]ID 기준 데이터 복사 구문 동적 쿼리 작성 공유 / MSSQL DB에서 특정 데이터를 복사 해야하는 경우가 있습니다. 예를 들어 COL1,COL2,COL3 의 데이터를 가진 테이블에 PK가 COL1인 경우 에 INSERT INTO [TARGET_TBL] (COL1,COL2, COL3) SELECT [NEW_COL1],COL2, COL3 FROM [TARGET_TBL] WHERE COL1 = [OLD_COL1] 위와 같은 동작을 수행하는 부분입니다. 이 동작을 DB에 테이블을 조회해서 참조키 해제, 사용중인 트리거 해제 후 데이터 처리 후 이전 설정을 복원하는 구문을 공유 드립니다. USE [TARGET DB INSTANCE] SET NOCOUNT ON; IF OBJECT_ID ('TEMPDB..#TARGET') IS NOT NULL DROP TABLE.. 2023. 6. 8.