Udostępnij za pośrednictwem


Przenoszenie istniejącego indeksu do innej grupy plików

Dotyczy:programu SQL ServerAzure SQL Managed Instance

W tym temacie opisano sposób przenoszenia istniejącego indeksu z bieżącej grupy plików do innej grupy plików w programie SQL Server przy użyciu programu SQL Server Management Studio lub Transact-SQL.

Aby zapoznać się z zagadnieniami dotyczącymi projektowania, w tym dlaczego warto umieścić indeks nieklastrowany w innej grupie plików, zobacz Umieszczanie indeksu w grupach plików lub schematach partycji.

Przed rozpoczęciem

Ograniczenia i ograniczenia

  • Jeśli tabela ma indeks klastrowany, przeniesienie klastrowanego indeksu do nowej grupy plików spowoduje przeniesienie tabeli do tej grupy plików.

  • Nie można przenosić indeksów utworzonych przy użyciu ograniczenia UNIQUE lub PRIMARY KEY przy użyciu programu Management Studio. Aby przenieść te indeksy, użyj instrukcji CREATE INDEX z opcją (DROP_EXISTING=ON) w języku Transact-SQL.

Bezpieczeństwo

Uprawnienia

Wymaga uprawnienia ALTER w tabeli lub widoku. Użytkownik musi być członkiem sysadmin stałej roli serwera lub db_ddladmin i db_owner stałych ról bazy danych.

Korzystanie z programu SQL Server Management Studio

Aby przenieść istniejący indeks do innej grupy plików przy użyciu projektanta tabel

  1. W Eksploratorze obiektów kliknij znak plus, aby rozwinąć bazę danych zawierającą tabelę zawierającą indeks, który chcesz przenieść.

  2. Kliknij znak plusa, aby rozwinąć folder Tables.

  3. Kliknij prawym przyciskiem myszy tabelę zawierającą indeks, który chcesz przenieść, i wybierz pozycję Design.

  4. W menu projektanta tabel kliknij indeksy/klucze.

  5. Wybierz indeks, który chcesz przenieść.

  6. W głównej siatce rozwiń Specyfikacja Przestrzeni Danych.

  7. Wybierz nazwa grupy plików lub schematu partycji i wybierz z listy grupę plików lub schemat partycji, do którego chcesz przenieść indeks.

  8. Kliknij pozycję Zamknij.

  9. W menu Plik wybierz pozycję Zapisztable_name.

Aby przenieść istniejący indeks do innej grupy plików w Eksploratorze obiektów

  1. W Eksploratorze obiektów kliknij znak plus, aby rozwinąć bazę danych zawierającą tabelę zawierającą indeks, który chcesz przenieść.

  2. Kliknij znak plusa, aby rozwinąć folder Tables.

  3. Kliknij znak plus, aby rozwinąć tabelę zawierającą indeks, który chcesz przenieść.

  4. Kliknij znak plusa, aby rozwinąć folder Indeksy.

  5. Kliknij prawym przyciskiem myszy indeks, który chcesz przenieść, a następnie wybierz Właściwości .

  6. W obszarze Wybierz stronęwybierz pozycję Storage.

  7. Wybierz grupę plików, w której chcesz przenieść indeks.

    Jeśli tabela lub indeks jest partycjonowany, wybierz schemat partycji, w którym ma być przeniesiony indeks. Aby uzyskać więcej informacji na temat indeksów partycjonowanych, zobacz Partycjonowane tabele i indeksy.

    Jeśli przenosisz indeks klastrowany, możesz użyć przetwarzania online. Przetwarzanie online umożliwia równoczesny dostęp użytkowników do danych bazowych i nieklastrowanych indeksów podczas operacji indeksu. Aby uzyskać więcej informacji, zobacz Perform Index Operations Online.

    Na komputerach wieloprocesorowych korzystających z programu SQL Server można skonfigurować liczbę procesorów używanych do wykonywania instrukcji indeksu, określając maksymalny stopień równoległości. Funkcja operacji indeksowania równoległego nie jest dostępna w każdej wersji programu SQL Server. Aby uzyskać listę funkcji obsługiwanych przez wersje programu SQL Server, zobacz Funkcje obsługiwane przez wersje programu SQL Server 2016. Aby uzyskać więcej informacji na temat operacji indeksowania równoległego, zobacz Configure Parallel Index Operations.

  8. Kliknij przycisk OK.

Następujące informacje są dostępne na stronie Storage w oknie dialogowym Właściwości indeksu index_name:

grupa plików
Przechowuje indeks w określonej grupie plików. Na liście wyświetlane są tylko standardowe grupy plików (wiersze). Domyślnie wybraną grupą na liście jest grupa plików "PRIMARY" bazy danych.

grupa plików Filestream
Określa grupę plików dla danych FILESTREAM. Ta lista zawiera tylko grupy plików FILESTREAM. Domyślnym wyborem listy jest grupa plików PRIMARY FILESTREAM.

Schemat partycji
Przechowuje indeks w schemacie partycji. Kliknięcie schematu partycji spowoduje włączenie poniższej siatki. Domyślnym wyborem listy jest schemat partycji używany do przechowywania danych tabeli. Po wybraniu innego schematu partycji na liście informacje w siatce zostaną zaktualizowane.

Opcja schematu partycji jest niedostępna, jeśli w bazie danych nie ma schematów partycji.

Schemat partycji Filestream
Określa schemat partycji dla danych FILESTREAM. Schemat partycji musi być symetryczny ze schematem określonym w opcji Schemat partycji.

Jeśli tabela nie jest partycjonowana, pole jest puste.

Parametr schematu partycji
Wyświetla nazwę kolumny, która uczestniczy w schemacie partycji.

kolumny tabeli
Wybierz tabelę lub widok, aby przyporządkować do schematu partycji.

Typ Danych Kolumny
Wyświetla informacje o typie danych dotyczące kolumny.

Notatka

Jeśli kolumna tabeli jest kolumną obliczeniową, typ danych kolumny wyświetla wartość "obliczona kolumna".

Zezwalaj na przetwarzanie online instrukcji DML podczas przenoszenia indeksu
Umożliwia użytkownikom dostęp do bazowej tabeli lub danych indeksu klastrowanego oraz wszystkich skojarzonych indeksów nieklastrowanych podczas operacji indeksowania.

Notatka

Ta opcja nie jest dostępna dla indeksów XML ani jeśli indeks klastrowany jest wyłączony.

ustaw maksymalny stopień równoległości
Ogranicza liczbę procesorów do użycia podczas wykonywania planu równoległego. Wartość domyślna 0 używa rzeczywistej liczby dostępnych procesorów CPU. Ustawienie wartości na 1 pomija generowanie planu równoległego; Ustawienie wartości na liczbę większą niż 1 ogranicza maksymalną liczbę procesorów używanych przez pojedyncze wykonanie zapytania. Ta opcja staje się dostępna tylko wtedy, gdy okno dialogowe znajduje się w stanie Ponowne kompilowanie lub Ponowne tworzenie.

Notatka

Jeśli zostanie określona wartość większa niż liczba dostępnych procesorów CPU, zostanie użyta rzeczywista liczba dostępnych procesorów CPU.

Korzystanie z Transact-SQL

Aby przenieść istniejący indeks do innej grupy plików

  1. W Eksploratorze Obiektów , nawiąż połączenie z wystąpieniem Silnika Bazy Danych.

  2. Na pasku Standard kliknij pozycję Nowe zapytanie.

  3. Skopiuj i wklej poniższy przykład w oknie zapytania, a następnie kliknij pozycję Wykonaj.

    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  
    

Następne kroki

Aby uzyskać więcej informacji, zobacz CREATE INDEX (Transact-SQL).

Architektura indeksów SQL Server i przewodnik projektowania