N의 의미  

INSERT INTO 테이블명

VALUES

N'값' 에서 N의 의미

 

저장 프로시저 및 트리거와 같이 서버에서 실행된 코드에 나타나는 유니코드 문자열 상수 앞에는 대문자 N이 와야 합니다. 참조되는 열이 이미 유니코드로 정의된 경우에도 마찬가지입니다. N 접두사가 지정되지 않은 문자열은 데이터베이스의 기본 코드 페이지로 변환되며 특정 문자를 인식하지 못할 수도 있습니다.

예를 들어 이전 예에서 만든 저장 프로시저는 다음과 같은 방법으로 서버에서 실행될 수 있습니다.

EXECUTE Product_Info @name = N'Chain'

N 접두사 사용에 대한 요구 사항은 서버에서 보낸 문자열 상수와 클라이언트에서 보낸 문자열 상수 모두에 적용됩니다.

 

https://msdn.microsoft.com/ko-kr/library/ms191313.aspx

 

★ N을 붙이지 않는다면 DB 기본 COLLATION 으로 인식됨

 

 

알기 쉽게 표로 나타내는 Collation 과 NVARCHAR + N 의 관계

 

DB

COLUMN

입력 값

(N'解除')

('解除')

@변수 nvarchar

@변수 varchar

SQL_Latin1_

General_CP1_

CI_AS

SQL_Latin1_

General_CP1_CI_AS

VARCHAR

X

X

X (N 유무 상관없음)

X (N 유무 상관없음)

SQL_Latin1_

General_CP1_CI_AS

NVARCHAR

O

X

SET @NVAR = N'解除' O

SET @NVAR = '解除' X

X (N 유무 상관없음)

Chinese_PRC_

CI_AS

VARCHAR

O

X

SET @NVAR = N'解除' O

SET @NVAR = '解除' X

X (N 유무 상관없음)

Chinese_PRC_

CI_AS

NVARCHAR

O

X

SET @NVAR = N'解除' O

SET @NVAR = '解除' X

X (N 유무 상관없음)

Chinese_PRC_

CI_AS

SQL_Latin1_

General_CP1_CI_AS

VARCHAR

X

X

X (N 유무 상관없음)

X (N 유무 상관없음)

SQL_Latin1_

General_CP1_CI_AS

NVARCHAR

O

O

O (N 유무 상관없음)

O (N 유무 상관없음)

Chinese_PRC_

CI_AS

VARCHAR

O

O

O (N 유무 상관없음)

O (N 유무 상관없음)

Chinese_PRC_

CI_AS

NVARCHAR

O

O

O (N 유무 상관없음)

O (N 유무 상관없음)

 

 

 

 

'MSSQL 2008 > 기타' 카테고리의 다른 글

데이터 타입(2Byte짜리 글자가 깨질 때)  (0) 2015.08.10
MSSQL 서버이름 변경, 서버명 변경  (0) 2015.07.16
SET SINGLE_USER WITH ROLLBACK IMMEDIATE  (0) 2014.01.22
추적 플래그  (0) 2014.01.20
시스템 데이터 베이스  (0) 2014.01.05
by 짱구를꼭말려 2015. 8. 11. 18:59
create table test
(
name1 nvarchar(100),
name2 varchar(100)
)

insert into test 
values (N'臺灣語',N'臺灣語')

select * from test


 

2행이 결과이며, 데이터 타입이 varchar 일 때는 중국어가 들어가지 않는다.

NVARCHAR로 변경 후, INSERT 문에도 N'중국어' 처럼 작성해야 INSERT 완료됨

 

이렇게 되는 이유는 DB의 COLLATION 과도 밀접한 관련이 있는데,

아래의 글을 참고하시면 됩니다.

http://police84.tistory.com/119

 

'MSSQL 2008 > 기타' 카테고리의 다른 글

COLLATION 관련 내용  (329) 2015.08.11
MSSQL 서버이름 변경, 서버명 변경  (0) 2015.07.16
SET SINGLE_USER WITH ROLLBACK IMMEDIATE  (0) 2014.01.22
추적 플래그  (0) 2014.01.20
시스템 데이터 베이스  (0) 2014.01.05
by 짱구를꼭말려 2015. 8. 10. 15:49

현재 MS-SQL 서버명을 확인 하는 방법
SELECT @@servername

 

1. 현재 서버명 삭제
    SP_DROPSERVER '현재의 MSSQL서버명'

 

2. 새로운 서버명 추가
    SP_ADDSERVER '바꿀서버명', 'local'

 

3. 서비스 재시작

 

4. 변경된 서버명 확인
    SELECT @@servername

 

'MSSQL 2008 > 기타' 카테고리의 다른 글

COLLATION 관련 내용  (329) 2015.08.11
데이터 타입(2Byte짜리 글자가 깨질 때)  (0) 2015.08.10
SET SINGLE_USER WITH ROLLBACK IMMEDIATE  (0) 2014.01.22
추적 플래그  (0) 2014.01.20
시스템 데이터 베이스  (0) 2014.01.05
by 짱구를꼭말려 2015. 7. 16. 09:24

 SINGLE_USER

이 항목에서는 SQL Server Management Studio 또는 Transact-SQL을 사용하여 SQL Server 2012에서 사용자 정의 데이터베이스를 단일 사용자 모드로 설정하는 방법에 대해 설명합니다. 단일 사용자 모드는 한 번에 하나의 사용자만 데이터베이스에 액세스할 수 있도록 지정하며 일반적으로 유지 관리 동작에 사용됩니다.

 

주의 사항

- 데이터베이스를 단일 사용자 모드로 설정할 때 다른 사용자가 데이터베이스에 연결되어 있으면 해당 데이터베이스 연결이 경고 없이 닫힙니다. 

- 옵션을 설정한 사용자가 로그오프해도 데이터베이스는 단일 사용자 모드로 유지됩니다.  이때 다른 한 명의 사용자만 데이터베이스에 연결할 수 있습니다.

 

이 옵션을 쓰기 전에 체크할 사항

데이터베이스를 SINGLE_USER로 설정하기 전에 AUTO_UPDATE_STATISTICS_ASYNC 옵션이 OFF로 설정되어 있는지 확인합니다. 이 옵션이 ON으로 설정되면 통계 업데이트에 사용되는 백그라운드 스레드가 데이터베이스에 대한 연결을 점유하므로 사용자는 단일 사용자 모드로 데이터베이스에 액세스할 수 없습니다. 자세한 내용은 ALTER DATABASE SET 옵션(Transact-SQL)을 참조하십시오.

 

ALTER 권한 필요

 

출처 : http://technet.microsoft.com/ko-kr/library/ms345598.aspx

 

 ROLLBACK IMMEDIATE

현재 접속해 있는 사용자에 대한 옵션

완료되지 않은 트랜잭션은 모두 롤백되며 AdventureWorks2012 데이터베이스로의 다른 모든 연결은 즉시 끊어집니다.

 

 

'MSSQL 2008 > 기타' 카테고리의 다른 글

COLLATION 관련 내용  (329) 2015.08.11
데이터 타입(2Byte짜리 글자가 깨질 때)  (0) 2015.08.10
MSSQL 서버이름 변경, 서버명 변경  (0) 2015.07.16
추적 플래그  (0) 2014.01.20
시스템 데이터 베이스  (0) 2014.01.05
by 짱구를꼭말려 2014. 1. 22. 16:38

 추적 플래그

추적 플래그는 데이터베이스의 기본 설정 사항의 변경이나 숨겨진 서버 내부의 행위들의 관찰을 위해 임시로 설정하는 것이다. 그리고 이 설정값은 사용자가 직접 설정을 해제하거나 SQL Server가 재시작 될때까지 유지된다. 대부분의 추적 플래그는 문서화 되지 않았으며 SQL Server의 버전, 서비스팩, 핫픽스에 따라 그 내용이 바뀔 수 있음을 유념해야 한다.

추적 플래그는 SQL Server의 시작시 -Ttrace# 옵션을 사용하여 설정하거나 DBCC TRACEON 명령어를 이용하여 설정 가능하다. 어느 방법이든지 추적 플래그는 SQL Server가 재시작 하거나 DBCC TRACEOFF 명령을 사용하여 추적 플래그가 해제될 때까지 서버에 설정된 상태로 유지된다.

추적 플래그는 숨겨진 문제나 실제로 서버 내부에서 어떤 일이 일어 났는지 판단할 수 있는 좋은 도구가 될 수 있다. 하지만 문서화 되지 않은 추적 플래그를 실제 운영 환경에 사용하기 전에 신중히 조사할 것을 권고한다.(현재 SQL Server 2000 BOL에는 추적 플래그 230, 1204, 2528, 3205 만이 문서화 되어있다.) 일부 추적 플래그의 현재 속성들은 마이크로소프트의 기술 문서를 참고하면 도움이 될 것이다.

아래의 표는 Transact-SQL Language Reference Guide 에서 옮겨온 것이며, 설명된 속성들은 일부 현재 문서화된(BOL에) 것과 문서화되지 않은 추적 플래그로 SQL Server 7.0 and 2000 에서 사용 가능하다.

 

-1 추적 플래그를 현재 클라이언트 한명에게만 적용하는 것이 아니라, 서버에 연결된 모든 클라이언트에게 적용한다. -T command-line 옵션을 사용 해야지만 자동으로 서버의 모든 연결마다 추적 플래그를 적용할 수 있지만, 이 추적 플래그를 이용하면 DBCC TRACEON 와 DBCC TRACEOFF 명령을 이용하여 모든 연결마다 추적 플래그를 적용할 수 있다.
106 문법 오류가 났을 때 오류가 난 구문의 라인 번호를 출력하지 않는다.
107 decimal형 수를 해석할 때 decimal형 대신에 float형을 사용한다.
205 통계 기반(statistics-dependent)의 저장 프로시저가 통계정보가 자동으로 업데이트 됨으로 인해 재컴파일 될 때 알려준다.
206 setuser 명령문에 대한 하위 호환성을 제공
208 SET QUOTED IDENTIFIER ON.
242 Non-ANSI-standard 형태의 결과가 기대되는 상관된 하위 쿼리에 대한 하위 호환성 제공
243 SQL Server 가 보다도 무결성을 갖추게 되는데, 이는 널허용성(nullability) 검사가 런-타임시에 이루어 지고 널허용성 위배로 해당 명령을 끝내게 되고 배치 작업 혹은 트랜젝션 작업은 계속되기 때문이다.
244 가(假)무결성 위배 검사(interim constraint violation)를 하지 않도록 한다. 기본적으로, SQL Server는 가(假)무결성 위배 검사를 하고 이를 허용한다. SQL Server 는 가(假)무결성 위배검사를 자기참조 DELETE 명령과, INSERT 명령, 그리고 다중 행 DELETE 명령에서 한다. 이 검사 작업은 더 많은 작업 테이블(work tables)을 요하게 된다. 이 추적 플래그로 가(假)무결성 위배검사를 허용하지 않을 수 있고 따라서 작은 작업 테이블을 요하게 된다.
257 XML 문서로 결과를 출력할때(주:SELECT 구문에서 FOR XML 절을 이용) 보다 읽기 쉬운 형태로 만들어 준다.
260 확장 프로시저 Dll에 대한 버전 정보 출력한다
302 통계 페이지 사용 여부에 대한 정보, 가능 하다면 실제 선택성(selectivity)에 대한 정보, 그리고 SQL Server가 어떤 인덱스에 대한 물리적, 논리적 I/O에 대해 평가 했는지에 대한 정보를 출력한다. 추적 플래그 302는 반드시 추적 플래그 310과 함께 사용하여 실제 조인 순서를 보이도록 해야한다.
310 조인 순서에 대한 정보를 출력한다. 인덱스 선택에 대한 정보는 SET SHOWPLAN_ALL 구문을 사용하여 보다 읽기쉬운 형태로 출력 가능하다.
325 넌클러스터 인덱스 사용에 대한 비용이나 ORDER BY 절로 인한 정렬 작업의 비용에 대한 정보를 출력한다.
326 정렬 작업의 비용에 대해 추정값과 실제 비용을 각각 출력한다.
330 SET SHOWPLAN_ALL 구문을 사용할때 조인에 대한 상세 정보를 포함하도록 모든 정보를 출력하도록 한다.
506 변수와 매개변수의 비교시 널(null) 값에 관한 SQL-92 표준을 강요하게 된다. 어떤 변수와 파라미터의 비교시에도 널 값을 가지고 있다면 항상 결과는 널이 된다. (주:SET ANSI_NULLS OFF 명령을 무시하고 무조건 SET ANSI_NULLS ON으로 동작하도록 합니다.)
652 서버의 미리 읽기(read ahead) 동작을 중지한다.
653 현재 연결에 대해서만 미리 읽기(read ahead) 동작을 중지한다.
809 SQL Server 2000에서 지연된 쓰기 동작의 양을 제한한다.
1180 스토리지의 효율적인 사용을 위해 text형 혹은 image형의 데이터를 할당할때 여분의 페이지를 이용하도록 한다.
1200 잠금 정보를 출력한다.(프로세스 ID와 잠금의 종류)
1204 데드락을 유발한 잠금의 종류와 데드락에 영향을 준 명령문을 돌려준다.
1205 데드락이 유발된 시점에서 실행된 명령문의 자세한 정보를 돌려준다.
1206 플래그 1204에 보완적으로 사용하여 데드락에 참여한 다른 잠금의 정보를 출력한다.
1609 개방형 데이터 서비스(Open Data Services)에서 원격 프로시저 호출(RPC) 정보를 검사하고 데이터를 원래대로 돌려놓도록 한다. 응용 프로그램에서 과거 버젼과의 호환성에 관만 문제에서만 사용
1704 임시 테이블이 생성되거나 삭제(Drop) 될 때 알려준다.
1807 네트웍 기반의 데이터베이스 파일을 사용할 수 있도록 한다.
2505 오류 로그에 SPID 10 오류가 나타날 경우 DBCC TRACEON 208 실행을 막는다.
2508 DBCC CHECKTABLE 명령을 사용하여 병렬 넌클러스터 인덱스의 검사를 허용하지 않는다.
2509 DBCC CHECKTABLE 명령을 사용할 때 테이블에 있는 총 고스트 레코드의 수를 보여준다.
2528 DBCC 명령에 의한 오브젝의 병렬 검사를 허용하지 않는다.
2701 심각도 10 이하의 오류 메세지에 대해서도 @@ERROR 시스템 함수가 50000 을 반환하도록 한다. 이 플래그가 비활성화되어 있다면, 심각도 10 이하의 오류 메세지에 대해서는 @@ERROR 시스템 함수가 0 을 반환한다.
3104 SQL Server로 하여금 여분의 공간(free space) 검사를 하지 않도록 한다.
3111 백업과 복원 작업 도중 LogMgr::ValidateBackedupBlock 작업이 생략되도록 한다.
3205 테이프 드라이버에 대한 하드웨어 압축을 해제한다.
3222 복구 작업시 미리 읽기 동작을 중지한다.
3502 검사점(checkpoint)의 시작과 끝에서 로그에 메세지를 출력한다.
3503 자동 복구의 끝 검사점(checkpoint)에서 복구가 생략되었는지 여부를 알려준다. (읽기전용의 데이터베이스에만 적용할 수 있다)
3602 모든 오류 메세지와 경고 메시지를 사용자(client)에게 보낸다.
3604 추적 결과를 사용자(client)에게 보낸다. 이 추적 플래그는 DBCC TRACEON 명령과 DBCC TRACEOFF 명령을만 이용해서 설정 가능하다.
3605 추적 결과를 오류 로그에 남긴다. (SQL Server를 코멘트 라인에서 실행하여 시작하였으면, 결과는 화면에도 보이게 된다)
3607 (서버 시작시) 모든 데이터베이스에 대해 자동 복구를 실행하지 않는다.
3608 (서버 시작시) Master 데이터베이스를 제외한 모든 데이터베이스에 대해 자동 복구를 실행하지 않는다.
3609 데이터베이스 구동시 tempdb 생성을 생략한다. tempdb가 속한 장치에 문제가 있을경우 이 추적 플래그를 사용하라
3626 CPU 데이터의 추적을 활성화 한다.(sysprocesses 테이블)
3640 저장 프로시저에서 클라인트에게 DONE_IN_PROC 메시지를 보내지 않는다. SET NOCOUNT ON 구문을 이용하여 같은 결과를 얻을 수 있으나, 추적 플래그 3640을 이용하면 모든 세션의 클라이언트에게서 SET NOCOUNT ON 설정없이 같은 결과를 얻을 수 있다.
4022 자동으로 시작되는 저장 프로시저를 실행하지 않는다.
4030 수신된 버퍼의 내용을 아스키(ASCII) 문자와 함께 바이트 코드까지 함께 출력한다. 클라언트가 서버로 보낸 쿼리의 내용을 보고자 할 때 사용하라. 이 추적 플래그를 이용해서 보호 위반 사항이나 문제를 일으킨 문장을 확인할 수 있다. 일반적으로 이 플래그는 전역으로 설정하거나 SQL Server 엔터프라이즈 관리자를 이용해 설정할 수 있다. 또한 DBCC INPUTBUFFER 를 이용할 수 있다.
4031 송신될 버퍼의 내용을 아스키(ASCII) 문자와 함께 바이트 코드까지 함께 출력한다. (클라이언트에게 보내는 내용) 또한 DBCC OUTPUTBUFFER 를 사용할 수 있다.
4032 클라이언트로 부터 오는 SQL 명령을 추적한다. 추적 플래그 3605/3604 를 함께 사용하면 결과를 확인할 수 있다.
7300 분산쿼리(distributed query)의 실행할 때 발생한 오류에 대한 확장 정보를 검색한다.
7501 전진 전용 커서 사용시 기본으로 동적 커서를 사용한다. 동적 커서는 초기 버전보다 더 빠르게 동작 하고 더 이상 고유 인덱스(unique indexe)를 필요로 하지 않는다. 이 추적 플래그는 동적 커서의 기능적 향상점 이용하지 않고 SQL Server 6.0 버젼의 내용으로 되돌린다.
7502 확장 저장 프로시저에 대해 커서 계획(cursor plan)의 캐시를 사용하지 않는다.
7505 dbcursorfetchex 호출시 반환하는 코드의 처리와 커서의 결과 셋에서 커서가 마지막 위치에서 다음 위치로 옮겨 갈때의 처리를 SQL Server 6.x 방식을 따르도록 활성화 한다.
7525 SQL Server 2000에서 SET CURSOR_CLOSE_ON_COMMIT 구문에 상관 없이 비-정적인 커서의 설정을 SQL Server 7.0의 내용으로 되돌린다.
8202 게시자가 모든 UPDATE 명령을 DELETE/INSERT 쌍으로 복제한다.
8207 트랜젝션 복제에서 싱글톤 업데이트(singleton update)를 사용한다. SQL Server 2000 Service Pack 1에서 릴리즈.
8599 분산 쿼리에서 저장점(savepoint)을 지정할 수 있다.
8679 SQL Server의 최적화 프로그램이 해시 일치 팀(Hash Match Team) 연산자를 사용하는 것을 막는다.
8687 병행 쿼리의 사용을 못 한다.
8721 AutoStat가 실행 되었을 때 오류 로그에 기록을 남긴다.
8783 SET ROWCOUNT ON 설정이 활성화 되었을 때 DELETE, INSERT, UPDATE 구문의 실행을 허용
8816

모든 2자리 연도 표기를 4자리의 연도 표기로 바꾼 내용을 기록한다.

 

출처 : http://cafe.naver.com/cadwebdesign/28

 

 추적 플래그 시작 매개변수로 지정하는 방법

SQL 구성관리자 - SQL Server Service - SQL Server 인스턴스 - SQL Server(이름) - 속성 - 고급 - 시작매개변수

 

 

 

 

 

by 짱구를꼭말려 2014. 1. 20. 15:41

SQL 서버를 처음 설치하면 시스템이 동작하기 위한 데이터 베이스

- Master 데이터베이스

SQL 서버의 주요한 메타 데이터들이 있다.

SQL Server 인스턴스에 있는 모든 데이터베이스들에 대한 정보와 각 데이터베이스의 파일 정보, 서버 구성 옵션, 계정 등과 같은 중요한 정보들이 저장된다. SQL Server 초기화 정보도 Master에 관리되어 master 데이터베이스를 사용 못하면 SQL Server 서비스 시작을 못한다.

Master 데이터베이스는 SQL Server 2000 시스템의 모든 시스템 수준 정보를 기록합니다. 모든 로그인 계정과 모든 시스템 구성 설정을 기록합니다. 모든 데이터베이스의 존재 유무를 기록하며, 초기화 정보를 기록합니다.
주기적으로 백업되고 잘 관리되어야만 한다.

- MODEL 데이터베이스

새로운 데이터베이스를 생성할 때 이 데이터베이스를 참고하여 만든다.

새로운 데이터베이스를 생성할 때 특별한 지정이 없으면 이 Model 데이터베이스를 베낀다.

Model 데이터베이스를 수정하여 생성할 때 옵션을 변경시킬 수 있다.

- MSDB 데이터베이스

SQL Server 에이전트 서비스가 사용하는 작업 일정 정보, 백업 및 복원 기록 정보, 경고, SSIS 패키지, 복제정보가 저장.

변경사항이 없다면 백업할 필요가 없다.

- TEMPDB 데이터베이스

임시로 사용하는 데이터베이스

시스템이 재 시작할 때 초기화되어 새로 생성된다. 그러므로 이 데이터베이스의 백업은 불필요.

EX) 인덱스나 그룹핑 쿼리 등을 수행할 때 특정 데이터를 정렬한 후 이용해야 한다면, 이러한 작업들은 실제 사용자 데이터베이스에서 이루어지지 않고, Tempdb 데이터베이스에서 1차 작업 후 옮겨지게 된다.

 

'MSSQL 2008 > 기타' 카테고리의 다른 글

COLLATION 관련 내용  (329) 2015.08.11
데이터 타입(2Byte짜리 글자가 깨질 때)  (0) 2015.08.10
MSSQL 서버이름 변경, 서버명 변경  (0) 2015.07.16
SET SINGLE_USER WITH ROLLBACK IMMEDIATE  (0) 2014.01.22
추적 플래그  (0) 2014.01.20
by 짱구를꼭말려 2014. 1. 5. 19:50
| 1 |