본문 바로가기

프로그래밍81

[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.
[MSSQL] 문자열 비교하기 ( 동일한 부분만 리턴하기 ) 두개의 문자열을 비교해서 동일한 부분만 출력하고 싶을 때 아래 방식으로 함수를 구현할 수 있습니다. 아래 예시는 동일한 문자열에 경우에 한해서 작성되었고, 목적은 아래와 같이 문자열이 입력되었을 때 '/' 문자열 기준으로 동일하게 분리된 문자열만 살리는 일종의 XOR 연산과 같은 동작을 구현하는데 있습니다. 문자열 1 : 가/나다/라/마/바사 문자열 2 : 가나다/라마/바사 결과 : 가나다/라마/바사 사용 기술 : CTE, 재귀, STUFF MSSQL, TSQL 로 문자열 만지기, 재귀(RECURSIVE) 구현하기 재밋네요 code 공유 드립니다. DECLARE @RESULT VARCHAR(100), @STR1 VARCHAR(100),@STR2 VARCHAR(100) DECLARE @SEP VARCHAR.. 2020. 4. 14.
[MSSQL] MDF, LDF 이동 / DB 상위 버전->하위 버전으로 이동 시 오류 발생 MSSQL에서 상위 버전 데이터 베이스를 하위로 이동하기 위해서는 데이터베이스 스크립트로 일괄 이동이 필요합니다. 과정 수행 중 오류가 발생해서 MDF/LDF를 이동하게 되었습니다. C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn>sqlcmd -S [서버] -i [경로] -o [로그경로] -U [ID] -P [비번] -d [데이터베이스] -V 17 발생한 오류 메시지. 파일 그룹 'PRIMARY'에 디스크 공간이 부족하여 데이터베이스 'TEMP_FOR_SPLIT'에 새 페이지를 할당할 수 없습니다. 파일 그룹의 개체를 삭제하거나, 파일 그룹에 파일을 추가하거나, 파일 그룹의 기존 파일에 대해 자동 증가를 설정하여 필요한 공간을 만.. 2020. 2. 21.