[sql-server] TEXTIMAGE_ON [PRIMARY]는 무엇인가요?

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

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 서버에?



답변

로부터 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이어야합니다. 이것이 기본 설정입니다.


답변

형식이 다음과 같다면

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]

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

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


답변

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]


답변