본문 바로가기

DBMS/SQL Server

(95)
[SQL Server] 0 나누기 오류 처리 0 나누기 오류가 발생한다면 아래와 같이 SET 문을 선언하면 결과 값이 오류 없이 NULL로 얻을 수 있다. SET ANSI_WARNINGS OFF SET ARITHIGNORE ON SET ARITHABORT OFF
[SQL Server] 로그인 연결 오류, 오류:18456 sa 계정으로 로그인 하려니 아래와 같은 오류가 발생하였다. 윈도우 인증모드로 접속하여 패스워드를 수정하고 로그인을 사용으로 변경하여도 같은 오류가 발생한다. 오류의 원인은 로그인 계정이 틀렸거나 윈도우 인증모드만 허용일 때 발생한다.로그인 계정이 틀리지 않았으니 원인은 윈도우 인증모드만 허용인 것으로 추정된다. 서버 속성에서 서버 인증을 SQL Server 및 Windows 인증 모드로 변경 후 접속하면 정상적으로 접속되는 것을 확인할 수 있다.
[SQL Server] insert 시 데이터 잘림 오류 무시하고 insert 하기 set ansi_warnings off
[SQL Server] SQL Server 2014 CE 알고리즘 변경 SQL Server 2014로 업그레이드 후 느려졌던 쿼리가 빨라지고, 빨랐던 쿼리가 느려지는 현상이 발생하였다. CE (Cardinality Estimator) 즉, 행 예측 로직이 변경되었기 때문이다. 해결 방안은 DB 호환수준을 이전 버전으로 적용하거나, 추적플래그를 설정할 수도 있고, 개별 쿼리를 튜닝하는 방법으로 조치할 수도 있다. DB 호환 수준을 확인하는 방법과 호환 수준을 변경하는 방법, 추적플래그를 설정하는 방법을 확인해보자. -- 호환 수준 확인 SELECT COMPATIBILITY_LEVEL FROM SYS .DATABASES WHERE DATABASE_ID = DB_ID() GO -- DB 호환 수준 조정 ALTER DATABASE DB명 SET COMPATIBILITY_LEVEL ..
[SQL Server] 프로시저 스크립트 확인하는 여러가지 방법 프로시저의 스크립트를 확인하는 방법은 여러가지가 있다. SSMS 툴을 사용하는 방법도 있지만, 여기에서는 T-SQL을 사용하여 확인하는 방법을 확인해보겠다. -- 테스트를 위해 간단한 프로시저 생성 CREATE PROC TESTING @OPTION INT AS IF @OPTION = 0 SELECT 1 AS NUMBER ELSE SELECT 100 AS NUMBER GO -- 1.SP_HELPTEXT 시스템 프로시저 사용하기 EXEC SP_HELPTEXT TESTING GO -- 2. INFORMATION_SCHEMA.ROUTINES 뷰 사용하기 SELECT ROUTINE_DEFINITION FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_NAME = 'TESTING'..
[SQL Server] IDENTITY 속성의 열은 고유할까? IDENTITY 속성은 초기값 및 증가값을 기반으로 생성된다. 그렇다면 IDENTITY 속성의 열은 고유할까? PRIMARY KEY 또는 UNIQUE 제약조건을 사용하여야 고유성은 보장된다. 위 제약조건을 설정하지 않고 중복된 데이터가 삽입되는지 확인해보자. -- 테이블 생성 CREATE TABLE TEST_IDENTITY ( COL1 INT IDENTITY (1,1) , COL2 INT ) GO -- 데이터 삽입 INSERT INTO TEST_IDENTITY (COL2) VALUES (1) INSERT INTO TEST_IDENTITY (COL2) VALUES (2) INSERT INTO TEST_IDENTITY (COL2) VALUES (3) INSERT INTO TEST_IDENTITY (COL2)..
[SQL Server] 임시 테이블 생성시 #을 3개이상 붙이면? 임시 테이블(Temporary Tables)는 테이블 앞에 # 또는 ##을 붙여 만들게 되며, tempdb 데이터베이스에 저장된다. 임시 테이블은 해당 임시 테이블을 만든 세션이 종료되면 자동으로 제거되며, 복잡한 로직을 처리할 때 중간 결과를 저장하기 위한 목적으로 주로 사용된다. 임시 테이블은 지역 임시 테이블(Local Temporary Tables)과 전역 임시 테이블(Global Temporary Tables)로 구성된다. 1) 지역 임시 테이블(Local Temporary Tables) - 세션 임시 테이블이라고 불리며, 해당 임시 테이블을 만든 세션에서만 사용 가능한 임시 테이블이다. - 테이블 이름 앞에 #을 붙여 만든다. 2) 전역 임시 테이블(Global Temporary Tables)..
[SQL Server] 테이블 변수에 PK를 복합인덱스로 생성시 문법 주의사항 테이블 변수는 PK, UNIQUE, CHECK 제약조건을 사용할 수 있는 장점이 있다. PK를 복합인덱스로 생성시 문법상 주의사항이 있다. 일반 테이블을 생성할 때 처럼 PK를 지정하면 오류가 발생한다. DECLARE @T TABLE ( ID INT , NAME CHAR(10) , AGE CHAR(3) , PHONE VARCHAR(14) , CONSTRAINT PK_T PRIMARY KEY (ID, NAME) ) 아래와 같이 CONSTRANT PK명을 지정하지 않아야 정상적으로 테이블 변수가 생성된다. DECLARE @T TABLE ( ID INT , NAME CHAR(10) , AGE CHAR(3) , PHONE VARCHAR(14) , PRIMARY KEY (ID, NAME) )