TEXTIMAGE_ON [PRIMARY]는 무엇인가요?


122

나는 많은 테이블에서 일했고 모두가 이것을 가지고 있었다.

CREATE TABLE Persons(
    [id] [int] IDENTITY(1,1) NOT NULL,
    [modified_on] [datetime] NULL,
    [modified_by] [varchar](200) NULL,
) 
ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

무엇 TEXTIMAGE_ON [PRIMARY]/ 거래-SQL SQL 서버에?


당신은 이것을 따를 수 있습니다 ..
Pugal

답변:


46

로부터 MSDN

TEXTIMAGE_ON {파일 그룹 | "기본" }

text, ntext, image, xml, varchar (max), nvarchar (max), varbinary (max) 및 CLR 사용자 정의 형식 열 (geometry 및 geography 포함)이 지정된 파일 그룹에 저장됨을 나타냅니다.

테이블에 큰 값 열이 없으면 TEXTIMAGE_ON이 허용되지 않습니다. 이 지정된 경우 TEXTIMAGE_ON을 지정할 수 없습니다 <partition_scheme>. "default"가 지정되거나 TEXTIMAGE_ON이 전혀 지정되지 않은 경우 큰 값 열은 기본 파일 그룹에 저장됩니다. CREATE TABLE에 지정된 큰 값 열 데이터의 저장소는 이후에 변경할 수 없습니다.

참고 :이 컨텍스트에서 기본값은 키워드가 아닙니다. 기본 파일 그룹의 식별자이며 TEXTIMAGE_ON "default"또는 TEXTIMAGE_ON [default]에서와 같이 구분되어야합니다. "default"가 지정된 경우 현재 세션에 대해 QUOTED_IDENTIFIER 옵션이 ON이어야합니다. 이것이 기본 설정입니다.


93
이해되지!
Mitul Sheth 2014 년

3
@MitulSheth :-당신에게 명확하지 않은 것은 무엇입니까? 설명서는이 파일 그룹에 저장되어있는 유형을 표시하는 데 사용됩니다,이 모든 이야기
라훌 Tripathi

12
누구나 간단한 설명을 할 수 있습니까? MSDN은 나에게 약간 높은 것 같습니다!
Mitul Sheth 2014 년

4
@RT varchar (max)를 사용할 때마다 지정해야한다는 의미입니까? 그렇지 않으면?
Mitul Sheth 2014 년

34
늘 그렇듯이 Microsoft의 설명은 봄철 미시시피 강물처럼 분명합니다.
Suncat2000

209

형식이 다음과 같다면

CREATE TABLE TableName(...) TEXTIMAGE_ON { filegroup | "default" }

TEXTIMAGE text, ntext, image, xml, varchar (max), nvarchar (max), varbinary (max) 및 CLR 사용자 정의 형식 열 (지오메트리 및 지리 포함)과 같은 모든 큰 / 무제한 크기 필드 유형을 나타냅니다.

그런 다음 파일 및 파일 그룹이 무엇인지 알아야합니다. 데이터베이스 파일 및 파일 그룹 의 MSDN 항목에서 :

파일

최소한 모든 SQL Server 데이터베이스에는 데이터 파일과 로그 파일이라는 두 개의 운영 체제 파일이 있습니다. 데이터 파일에는 테이블, 인덱스, 저장 프로 시저 및 뷰와 같은 데이터와 개체가 포함됩니다. 로그 파일에는 데이터베이스의 모든 트랜잭션을 복구하는 데 필요한 정보가 포함되어 있습니다. 데이터 파일은 할당 및 관리 목적으로 파일 그룹으로 함께 그룹화 할 수 있습니다.

파일 그룹

모든 데이터베이스에는 기본 파일 그룹이 있습니다. 이 파일 그룹에는 주 데이터 파일과 다른 파일 그룹에 포함되지 않은 보조 파일이 포함됩니다. 사용자 정의 파일 그룹을 만들어 관리, 데이터 할당 및 배치 목적으로 데이터 파일을 함께 그룹화 할 수 있습니다.

그래서,

CREATE TABLE ... ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

언급 된 큰 텍스트 값 열은 실제로 기본 작업 인 기본 파일 그룹 내에 저장되어야하므로 다소 중복 된 것처럼 보입니다.

CUSTOM이라는 사용자 지정 파일 그룹이 있다고 가정하면 다음과 같이 작성할 수 있습니다.

CREATE TABLE ... ON [PRIMARY] TEXTIMAGE_ON [CUSTOM]

큰 바이너리 또는 텍스트를 저장하기 위해 사용자 지정 파일 그룹을 만들 수 있으며,이 경우 '일반'필드 정보는 기본 파일 그룹의 데이터 파일에 있고 관련 '대형'필드는 물리적으로 구별되는 데이터 파일에 저장됩니다. (보조 사용자 지정 파일 그룹에 있음).

이렇게하면 디스크 공간 측면에서 상대적으로 작을 수있는 핵심 관계형 데이터 모델을 큰 필드 (비례 적으로 더 많은 디스크 공간이 필요함)에서 분리 할 수 ​​있습니다. 각 파일 그룹에 적용됩니다.


39
받아 들여진 답변보다 훨씬 더 이해하기 쉬운 답변 을 제공 해주셔서 감사합니다 !
Zero3 2017

12
@Mitul Sheth 결코 너무 늦었 더 나은 정답 : 선택
반전 엔지니어

1

text, ntext, image, xml, varchar (max), nvarchar (max), varbinary (max) 및 CLR과 같은 큰 텍스트 열이없는 경우 다음을 사용할 수 있습니다.

CREATE TABLE Persons(
[id] [int] IDENTITY(1,1) NOT NULL,
[modified_on] [datetime] NULL,
[modified_by] [varchar](200) NULL,)ON [PRIMARY]

2
메시지 156, 수준 15, 상태 1, 줄 12 'TABLE'키워드 근처의 구문이 잘못되었습니다.
리버스 엔지니어

@ReversedEngineer이 구문 오류는 다음 끝에있는 불필요한 쉼표로 인해 발생합니다. [modified_by] [varchar](200) NULL
OrizG

@OrizG 물론입니다. 답변 작성자가 샘플 코드를 수정하도록 돕고 싶었습니다. 완전히 이상한 점은 더 이상 내 컴퓨터에서 구문 오류가 발생하지 않는다는 것입니다 (Microsoft SQL Server 2016 (SP2-CU12) (KB4536648)-13.0.5698.0 (X64))
Reversed Engineer
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.