ON [PRIMAY]는 무슨 뜻입니까?
SQL 셋업 스크립트를 만들고 있으며 다른 사용자의 스크립트를 예로 사용하고 있습니다.다음은 스크립트의 예입니다.
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[be_Categories](
[CategoryID] [uniqueidentifier] ROWGUIDCOL NOT NULL CONSTRAINT [DF_be_Categories_CategoryID] DEFAULT (newid()),
[CategoryName] [nvarchar](50) NULL,
[Description] [nvarchar](200) NULL,
[ParentID] [uniqueidentifier] NULL,
CONSTRAINT [PK_be_Categories] PRIMARY KEY CLUSTERED
(
[CategoryID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
ON [ PRIMAY ]명령어의 기능을 알고 있는 사람이 있습니까?
Microsoft SQL Server에서 데이터베이스를 생성할 때 여러 파일 그룹을 가질 수 있습니다. 여기서 스토리지는 여러 장소, 디렉토리 또는 디스크에 생성됩니다.각 파일 그룹의 이름을 지정할 수 있습니다.기본 파일 그룹은 항상 생성되는 기본 파일 그룹이며, 따라서 지정한 SQL이 Primary 파일 그룹에 테이블을 만듭니다.
완전한 구문에 대해서는, 「MSDN」을 참조해 주세요.
작성 중인 개체가 상주하는 파일 그룹을 나타냅니다.따라서 프라이머리 파일 그룹은 서버의 드라이브 D:\에 있을 수 있습니다.그런 다음 인덱스라는 다른 파일 그룹을 만들 수 있습니다.이 파일 그룹은 서버의 E:\ 드라이브에 있을 수 있습니다.
ON [ Primary ]는 "Primary" 파일 그룹에 구조를 만듭니다.이 경우 프라이머리 키인덱스와 테이블은 데이터베이스 내의 "프라이머리" 파일 그룹에 배치됩니다.
파일 그룹에 관한 중요한 동작에 주의해 주세요.
OP의 SQL Script를 사용하면 데이터 행 저장용과 인덱스 데이터 구조 저장용 두 개의 서로 다른 파일 그룹을 언급할 수 없습니다.이것은 허용되지 않습니다.
이는 이 경우 작성되는 인덱스가 테이블의 기본 키인 열의 클러스터된 인덱스이기 때문입니다.테이블의 클러스터된 인덱스와 데이터 행의 메타데이터는 서로 다른 두 파일 그룹에 저장할 수 없습니다.
데이터베이스에는 다음 두 가지 파일 그룹이 있습니다.
- 기본적인
- 이차적인
다음 스크립트를 보고 SQL Server Management Studio(SSMS)를 통해 실행해 주십시오.예상과는 다른 일이 발생합니다.
테이블의 행 데이터와 클러스터된 인덱스와 관련된 메타데이터를 PRIMAY 파일 그룹 자체에 저장합니다.이 문제는 테이블의 행 데이터를 저장하기 위해 다른 파일 그룹([SECONary])을 언급했을 때에도 발생합니다.나는 그러한 대본을 의도적으로 써서 그 역할을 시험해 보았다.
CREATE TABLE [dbo].[be_Categories](
[CategoryID] [uniqueidentifier] ROWGUIDCOL NOT NULL CONSTRAINT [DF_be_Categories_CategoryID] DEFAULT (newid()),
[CategoryName] [nvarchar](50) NULL,
[Description] [nvarchar](200) NULL,
[ParentID] [uniqueidentifier] NULL,
CONSTRAINT [PK_be_Categories] PRIMARY KEY CLUSTERED
(
[CategoryID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [SECONDARY]
GO
더 흥미로운 것은 위의 스크립트가 오류 없이 완료된다는 것입니다.솔직히 말하면, 저는 두 개의 다른 파일 그룹을 줬기 때문에 런타임 오류를 예상하고 있었습니다.SQL Server는 백그라운드에서 오류를 발생시키지 않고 조용히 작업을 수행합니다.
참고: 그러나 클러스터되지 않은 인덱스의 경우 인덱스는 다른 파일 그룹에 있을 수 있습니다.
아래 표시된 SQL 스크립트는 비클러스터형 인덱스를 만듭니다.테이블의 데이터 행이 [PRIMARY] 파일 그룹에 있는 동안 [SECONERY] 파일 그룹에 비클러스터된 인덱스가 생성됩니다.
CREATE NONCLUSTERED INDEX [IX_Categories] ON [dbo].[be_Categories]
(
[CategoryName] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [Secondary]
GO
다른 파일 그룹에 비클러스터 인덱스를 저장하는 방법에 대한 자세한 내용은 여기를 참조하십시오.
언급URL : https://stackoverflow.com/questions/2798213/what-does-on-primary-mean
'programing' 카테고리의 다른 글
SQLCommand 개체에서 생성된 SQL 문을 가져오시겠습니까? (0) | 2023.04.07 |
---|---|
를 사용하여 사람이 읽을 수 있는 파일사이즈(바이트 단위)를 얻으려면 어떻게 해야 하나요?인터넷? (0) | 2023.04.07 |
SQL Server에서 데이터베이스 목록 가져오기 (0) | 2023.04.07 |
JSON 개체를 구문 분석하는 동안 NoClassDefFoundError JsonAutoDetect가 발생했습니다. (0) | 2023.03.18 |
Wordpress - 편집기에 html/텍스트 삽입 (0) | 2023.03.18 |