본문 바로가기

SQL Server

(82)
[SQL Server] uniqueidentifier 데이터 형식 uniqueidentifier 데이터 형식은 GUID(Globally Unique Identifier) 역할을 하는 16바이트 이진 값을 저장한다. GUID는 고유한 이진 숫자이며, 전 세계 모든 컴퓨터는 고유한 GUID 값을 생성한다. GUID는 네트워크 카드 번호, CPU 클락, 현재 시간 및 날짜 등과 같은 여러 변수들을 사용해서 생성된 값으로 전 세계에서 유일한 구분 값으로 이용된다. 이런 값이 왜 필요한가? Identity로 생성되는 primary key 값은 해당 테이블에서는 식별이 가능하지만, 바로 인접한 테이블이나 전세계에 걸쳐있는 테이블과는 식별하지 못한다. 즉 중복 값이 발생할 수 있다는 것이다. 하지만 테이블 A의 PK 값이 '52D383B1-B674-4AFD-88C7-17B7BAB7..
[SQL Server] char vs varchar 사용되는 문자열 값이 길이가 일정한지 가변적인지에 따라 데이터형식을 알맞게 사용하여야 한다. 문자열의 길이가 일정하면 char 혹은 nchar를 사용하고 가변적이면 varchar 혹은 nvarchar를 사용한다. 항상 3자 혹은 4자의 문자열이 들어오면 일정한 것이고, 처음에는 1자가 들어오고 다음에는 100자가 들어온다면 가변적인 것이다. 주의할 것은 고정이라고 해서 항상 3자만 들어오는 것이 아니라, 그 길이가 일정한 범위 내에서 차이가 없다는 것을 의미하는 것이다. char 혹은 nchar는 값의 길이가 고정되어 있다. 만일 고정된 길이보다 작은 문자열이 들어오면 강제로 ''(공백문자)를 넣어서 문자열의 길이를 통일시킨다. varchar 혹은 nvarchar는 길이가 정해져 있다 하더라도 실제 들어..
[SQL Server] 스키마 변경 기록 확인하기 데이터베이스, 테이블, 저장 프로시저 등의 스키마가 누가, 언제 변경하였는지 확인해야 할 경우가 있다. 데이터베이스에서 마우스 우클릭 ▶ 보고서 ▶ 표준 보고서 ▶ 스키마 변경 기록을 선택하면 확인 가능하다. 스키마의 생성, 삭제, 수정 기록을 확인할 수 있다.
[SQL Server] sp_depends 갱신하기 sp_depends 시스템 저장 프로시저를 사용하여 참조하는 개체를 확인하려고 할 때 참조하는 개체가 있음에도 참조하는 개체가 없다는 메시지가 뜨는 경우가 있다. 개체의 정의가 변경된다고 해서 이 개체를 참조하는 스토어드 프로시저, 사용자 정의 함수, 뷰의 메타데이터는 자동으로 갱신되지 않기 때문이다. sp_refreshsqlmodule 시스템 저장 프로시저를 사용하여 갱신하면 참조하는 개체를 확인할 수 있다. -- 테스트 프로시저 생성 CREATE PROC USP_TEST AS SELECT * FROM TEST_TBL GO -- 참조하는 개체 확인 EXEC sp_depends USP_TEST GO -- 테스트 테이블 생성 CREATE TABLE TEST_TBL ( ID INT ) GO -- 참조하는 개..
[SQL Server] 사용자 정의 데이터 형식 (User Defined data Type) 데이터 형식은 SQL Server에서 자체적으로 지원하는 데이터 형식을 사용하는 것과 사용자가 시스템에서 제공하는 데이터 형식을 이용하는 것 두가지로 나눌 수 있다. 시스템에서 제공되는 데이터 형식은 대부분이 스칼라 데이터 형식(Scalar types) 이다. 스칼라 값은 리터럴 값이라고도 불리며, 일반적으로 문자나 숫자와 같은 상수 값을 지칭한다. 이와는 반대로 사용자 정의 데이터 형식(UDT, User Defined data Type)은 논리적인 데이터 형식이다. 시스템 데이터 형식을 규정하여 이를 자신만의 특별한 데이터 형식으로 별명을 붙여 사용한다. 사용자 정의 데이터 형식은 'sp_addType' 이라는 저장 프로시저를 사용해서 등록할 수 있고, 'sp_dropType' 저장 프로시저를 이용해서..
[SQL Server] 클러스터 구성 여부 DB에서 확인하기 서버 인스턴스가 장애조치(Failover) 클러스터에 구성되었는지 확인하려면 SELECT SERVERPROPERTY('IsClustered') 0을 반환하면 클러스터가 구성되지 않은 것이고, 1을 반환하면 클러스터가 구성된 것이다. 참고 : http://technet.microsoft.com/ko-kr/library/ms174396.aspx
[SQL Server] sp_MSforeachdb 활용하기 sp_MSforeachdb 프로시저는 모든 데이터베이스 이름으로 지정한 명령을 수행하는 프로시저이다. master 데이터베이스에 있으며, BOL(Books Online)에 문서화 되지 않은 프로시저이다. 이 프로시저를 다음과 같이 활용할 수 있다. 인스턴스 내에 있는 모든 데이터베이스에 대한 이름 확인 EXEC sp_MSforeachdb 'USE ?; SELECT DB_NAME()' 인스턴스 내의 모든 데이터베이스의 helpfile 정보 확인 EXEC sp_MSforeachdb 'USE ?; EXEC sp_helpfile' 인스턴스 내의 모든 데이터베이스에서 특정 컬럼이름을 포함하는 테이블 찾기 -- 컬럼이름 STATUS를 포함하는 테이블 찾기 EXEC sp_MSforeachdb 'SELECT * FRO..
[SQL Server] 강제로 IDENTITY 값 입력하기 IDENTITY 속성을 테이블에 지정하면 자동으로 증가하는 값을 입력해준다. 자주 삭제되는 테이블에 ID 열이 있는 경우 ID 값 사이에 간격이 생길 수 있다. 기존 간격을 채우려면 SET IDENTITY_INSERT 를 ON으로 설정하고 명시적 값을 테이블의 ID 열에 삽입할 수 있다. CREATE TABLE TEST_TBL ( ID INT IDENTITY NOT NULL PRIMARY KEY , NAME VARCHAR(10) , AGE INT ) GO INSERT INTO TEST_TBL(NAME, AGE) VALUES ('한효주', 27), ('배수지', 20) , ('한지민', 32), ('구하라', 23) -- 데이터 확인 SELECT * FROM TEST_TBL -- 데이터 삭제 DELETE ..