복붙노트

[SQL] ON [PRIMARY]은 무엇을 의미합니까?

SQL

ON [PRIMARY]은 무엇을 의미합니까?

나는 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 [PRIMARY] 명령이 무엇을 알고 있나요?

해결법

  1. ==============================

    1.당신은 마이크로 소프트 SQL 서버에서 데이터베이스를 만들 때 스토리지가 여러 위치, 디렉토리 또는 디스크에 생성되는 여러 파일 그룹을 가질 수 있습니다. 각 파일 그룹 이름을 지정할 수 있습니다. 기본 파일 그룹은 항상 생성되는 기본 하나입니다, 당신이 제공 한 SQL이 PRIMARY 파일 그룹에서 테이블을 생성하므로.

    당신은 마이크로 소프트 SQL 서버에서 데이터베이스를 만들 때 스토리지가 여러 위치, 디렉토리 또는 디스크에 생성되는 여러 파일 그룹을 가질 수 있습니다. 각 파일 그룹 이름을 지정할 수 있습니다. 기본 파일 그룹은 항상 생성되는 기본 하나입니다, 당신이 제공 한 SQL이 PRIMARY 파일 그룹에서 테이블을 생성하므로.

    전체 구문에 대한 MSDN을 참조하십시오.

  2. ==============================

    2.그것은 어떤 당신이에 상주을 만드는 객체를 파일 그룹을 의미한다. 그래서 주 파일 그룹은 D 드라이브에있을 수 있습니다 : \ 서버의. 그런 다음 인덱스라는 다른 파일 그룹을 만들 수 있습니다. 이 파일 그룹은 E 드라이브에 상주 할 수 있습니다 : \ 서버의.

    그것은 어떤 당신이에 상주을 만드는 객체를 파일 그룹을 의미한다. 그래서 주 파일 그룹은 D 드라이브에있을 수 있습니다 : \ 서버의. 그런 다음 인덱스라는 다른 파일 그룹을 만들 수 있습니다. 이 파일 그룹은 E 드라이브에 상주 할 수 있습니다 : \ 서버의.

  3. ==============================

    3.ON은 [PRIMARY]를 "주"파일 그룹의 구조를 생성합니다. 이 경우 기본 키 인덱스와 테이블은 데이터베이스 내에서 "차"파일 그룹에 배치됩니다.

    ON은 [PRIMARY]를 "주"파일 그룹의 구조를 생성합니다. 이 경우 기본 키 인덱스와 테이블은 데이터베이스 내에서 "차"파일 그룹에 배치됩니다.

  4. ==============================

    4.마크 S.는 자신의 게시물에서 언급 한 옵션에 매우 중요한 메모를 추가합니다. 질문에 언급 된 특정 SQL 스크립트에서는 데이터 행과 인덱스 데이터 구조를 저장하기위한 두 개의 서로 다른 파일 그룹은 말할 수 없다.

    마크 S.는 자신의 게시물에서 언급 한 옵션에 매우 중요한 메모를 추가합니다. 질문에 언급 된 특정 SQL 스크립트에서는 데이터 행과 인덱스 데이터 구조를 저장하기위한 두 개의 서로 다른 파일 그룹은 말할 수 없다.

    인덱스가 기본 키 열이 경우 클러스터 된 색인입니다 생성되는 때문이다 이유. 클러스터 된 인덱스 데이터와 테이블의 데이터 행은 다른 파일 그룹에있을 수 없다.

    그래서 경우에 당신은 예를 들어, 데이터베이스에 두 개의 파일 그룹이 기본 및 보조 다음 아래에 언급 된 스크립트는 행 데이터와 나는 테이블 데이터에 대한 다른 파일 그룹 ([SECONDARY]) 언급 한 경우에도 PRIMARY 파일 그룹 자체에 모두 클러스터 된 인덱스 데이터를 저장합니다. (: P 나는 두 개의 서로 다른 파일 그룹을 주신 나는 오류를 제공하기를 기대하고 있었다 때) 더 흥미롭게 스크립트뿐만 아니라 성공적으로 실행됩니다. SQL Server는 자동 및 스마트 트릭 장면 뒤에 않습니다.

    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
    

    주 : 인덱스가 생성되는 경우에만 다른 파일 그룹에 상주 할 수 있습니다 귀하의 인덱스가 클러스터되지 않은 자연입니다.

    클러스터되지 않은 인덱스를 작성하는 다음 스크립트는 테이블 데이터가 이미 [PRIMARY] 파일 그룹에있는 대신 [SECONDARY] 파일 그룹에 생성 얻을 것이다 :

    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
    

    당신은 당신의 쿼리의 성능이 향상 수있는 다른 파일 그룹에 클러스터되지 않은 인덱스를 저장하는 방법에 대한 자세한 정보를 얻을 수 있습니다. 여기에 하나 개의 링크입니다.

  5. from https://stackoverflow.com/questions/2798213/what-does-on-primary-mean by cc-by-sa and MIT license