Dela via


Flytta ett befintligt index till en annan filgrupp

gäller för:SQL ServerAzure SQL Managed Instance

Det här avsnittet beskriver hur du flyttar ett befintligt index från den aktuella filgruppen till en annan filgrupp i SQL Server med hjälp av SQL Server Management Studio eller Transact-SQL.

Designöverväganden, inklusive varför du kanske vill placera ett icke-grupperat index på en annan filgrupp, finns i Indexplacering på filgrupper eller partitionsscheman.

Innan du börjar

Begränsningar och restriktioner

  • Om en tabell har ett klustrat index, flyttas tabellen till den nya filgruppen genom att flytta det klustrade indexet till den filgruppen.

  • Du kan inte flytta index som skapats med en UNIK eller PRIMÄR NYCKEL-begränsning med hjälp av Management Studio. Om du vill flytta dessa index använder du instruktionen CREATE INDEX med alternativet (DROP_EXISTING=ON) i Transact-SQL.

Säkerhet

Behörigheter

Kräver ALTER-behörighet i tabellen eller vyn. Användaren måste vara medlem i sysadmin fast serverroll eller db_ddladmin och db_owner fasta databasroller.

Använda SQL Server Management Studio

Så här flyttar du ett befintligt index till en annan filgrupp med hjälp av Table Designer

  1. I Object Explorer klickar du på plustecknet för att expandera databasen som innehåller tabellen som innehåller det index som du vill flytta.

  2. Klicka på plustecknet för att expandera mappen Tables.

  3. Högerklicka på tabellen som innehåller det index som du vill flytta och välj Design.

  4. På menyn Table Designer klickar du på Index/Nycklar.

  5. Välj det index som du vill flytta.

  6. Expandera Data Space Specificationi huvudrutnätet.

  7. Välj Filgrupps- eller partitionsschemanamn och välj i listan filgrupps- eller partitionsschemat där du vill flytta indexet.

  8. Klicka på Stäng.

  9. På menyn Arkiv väljer du Sparatable_name.

Flytta ett befintligt index till en annan filgrupp i Object Explorer

  1. I Object Explorer klickar du på plustecknet för att expandera databasen som innehåller tabellen som innehåller det index som du vill flytta.

  2. Klicka på plustecknet för att expandera mappen Tables.

  3. Klicka på plustecknet för att expandera tabellen som innehåller det index som du vill flytta.

  4. Klicka på plustecknet för att expandera mappen Index.

  5. Högerklicka på det index som du vill flytta och välj Egenskaper.

  6. Under Välj en sidaväljer du Lagring.

  7. Välj den filgrupp där indexet ska flyttas.

    Om tabellen eller indexet är partitionerat väljer du det partitionsschema där indexet ska flyttas. Mer information om partitionerade index finns i Partitionerade tabeller och index.

    Om du flyttar ett klustrat index kan du använda onlinebearbetning. Onlinebearbetning möjliggör samtidig användaråtkomst till underliggande data och till icke-klustrade index under indexåtgärden. Mer information finns i Utföra indexåtgärder online.

    På datorer med flera processorer som använder SQL Server kan du konfigurera antalet processorer som används för att köra index-instruktionen genom att ange en maximal grad av parallellitetsvärde. Funktionen parallella indexåtgärder är inte tillgänglig i varje utgåva av SQL Server. En lista över funktioner som stöds av versionerna av SQL Server finns i Funktioner som stöds av versionerna av SQL Server 2016. Mer information om parallella indexåtgärder finns i Konfigurera parallella indexåtgärder.

  8. Klicka på OK.

Följande information finns på sidan Storage i dialogrutan Indexegenskaper –index_name:

Filgrupp
Lagrar indexet i den angivna filgruppen. Listan visar endast standardfilgrupper (rad). Standardlistevalet är databasens PRIMÄRA filgrupp.

Filestream-filgrupp
Anger filgruppen för FILESTREAM-data. Den här listan visar endast FILESTREAM-filgrupper. Standardlistevalet är DEN PRIMÄRA FILESTREAM-filgruppen.

Partitionsschema
Lagrar indexet i ett partitionsschema. Om du klickar på partitionsschema aktiveras rutnätet nedan. Standardlistevalet är partitionsschemat som används för att lagra tabelldata. När du väljer ett annat partitionsschema i listan uppdateras informationen i rutnätet.

Alternativet partitionsschema är inte tillgängligt om det inte finns några partitionsscheman i databasen.

Filestream-partitionsschema
Anger partitionsschemat för FILESTREAM-data. Partitionsschemat måste vara symmetriskt med det schema som anges i partitionsschemat alternativet.

Om tabellen inte är partitionerad är fältet tomt.

parameter för partitionsschema
Visar namnet på kolumnen som ingår i partitionsschemat.

tabellkolumn
Välj den tabell eller vy som ska mappas till partitionsschemat.

kolumndatatyp
Visar information om datatypen för kolumnen.

Notera

Om tabellkolumnen är en beräknad kolumn Kolumndatatyp visar "beräknad kolumn".

Tillåt onlinebearbetning av DML-instruktioner vid flytt av indexet
Tillåter användare att komma åt den underliggande tabellen eller klustrade indexdata och eventuella associerade icke-grupperade index under indexåtgärden.

Anteckning

Det här alternativet är inte tillgängligt för XML-index eller om indexet är ett inaktiverat grupperat index.

Ange maximal grad av parallellitet
Begränsar antalet processorer som ska användas under parallell plankörning. Standardvärdet 0 använder det faktiska antalet tillgängliga processorer. Om värdet anges till 1 undertrycks parallell plangenerering. Om värdet anges till ett tal som är större än 1 begränsas det maximala antalet processorer som används av en enskild frågekörning. Det här alternativet blir bara tillgängligt om dialogrutan finns i Återskapa eller Återskapa tillstånd.

Notis

Om ett värde som är större än antalet tillgängliga processorer anges används det faktiska antalet tillgängliga processorer.

Använda Transact-SQL

Flytta ett befintligt index till en annan filgrupp

  1. I Object Exploreransluter du till en instans av databasmotorn.

  2. I fältet Standard klickar du på Ny fråga.

  3. Kopiera och klistra in följande exempel i frågefönstret och klicka på Kör.

    USE AdventureWorks2022;  
    GO  
    -- Creates the TransactionsFG1 filegroup on the AdventureWorks2022 database  
    ALTER DATABASE AdventureWorks2022  
    ADD FILEGROUP TransactionsFG1;  
    GO  
    /* Adds the TransactionsFG1dat3 file to the TransactionsFG1 filegroup. Please note that you will have to change the filename parameter in this statement to execute it without errors.  
    */  
    ALTER DATABASE AdventureWorks2022   
    ADD FILE   
    (  
        NAME = TransactionsFG1dat3,  
        FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL13\MSSQL\DATA\TransactionsFG1dat3.ndf',  
        SIZE = 5MB,  
        MAXSIZE = 100MB,  
        FILEGROWTH = 5MB  
    )  
    TO FILEGROUP TransactionsFG1;  
    GO  
    /*Creates the IX_Employee_OrganizationLevel_OrganizationNode index  
      on the TransactionsPS1 filegroup and drops the original IX_Employee_OrganizationLevel_OrganizationNode index.  
    */  
    CREATE NONCLUSTERED INDEX IX_Employee_OrganizationLevel_OrganizationNode  
        ON HumanResources.Employee (OrganizationLevel, OrganizationNode)  
        WITH (DROP_EXISTING = ON)  
        ON TransactionsFG1;  
    GO  
    

Nästa steg

Mer information finns i CREATE INDEX (Transact-SQL).

arkitektur- och designguide för SQL Server-index