ALTER DATABASE File and Filegroup Options (Transact-SQL)

Modyfikuje pliki i filegroups skojarzonymi z bazą danych.Dodaje lub usuwa plików i filegroups z bazy danych, zmiany atrybutów bazy danych lub jej plików i filegroups.Zobacz inne opcje instrukcji ALTER DATABASE ALTER DATABASE języka Transact-SQL).

Topic link iconKonwencje składni języka Transact-SQL

ALTER DATABASE database_name 
{
    <add_or_modify_files>
  | <add_or_modify_filegroups>
}
[;]

<add_or_modify_files>::=
{
    ADD FILE <filespec> [ ,...n ] 
        [ TO FILEGROUP { filegroup_name } ]
  | ADD LOG FILE <filespec> [ ,...n ] 
  | REMOVE FILE logical_file_name 
  | MODIFY FILE <filespec>
}

<filespec>::= 
(
    NAME = logical_file_name  
    [ , NEWNAME = new_logical_name ] 
    [ , FILENAME = {'os_file_name' | 'filestream_path' } ] 
    [ , SIZE = size [ KB | MB | GB | TB ] ] 
    [ , MAXSIZE = { max_size [ KB | MB | GB | TB ] | UNLIMITED } ] 
    [ , FILEGROWTH = growth_increment [ KB | MB | GB | TB| % ] ] 
    [ , OFFLINE ]
) 

<add_or_modify_filegroups>::=
{
    | ADD FILEGROUP filegroup_name 
        [ CONTAINS FILESTREAM ]
    | REMOVE FILEGROUP filegroup_name 
    | MODIFY FILEGROUP filegroup_name
        { <filegroup_updatability_option> 
        | DEFAULT
        | NAME = new_filegroup_name 
        }
}
<filegroup_updatability_option>::=
{
    { READONLY | READWRITE } 
    | { READ_ONLY | READ_WRITE }
}

Argumenty

<add_or_modify_files>::=

Określa plik, który ma być dodane, usunięte lub zmodyfikowane.

  • database_name
    Jest nazwą bazy danych, które zostaną zmodyfikowane.

  • DODAWANIE PLIKU
    Dodaje plik do bazy danych.

    • Aby grupa plików {filegroup_name }
      Określa grupa plików, do którego należy dodać w określonym pliku.Aby wyświetlić bieżące filegroups i które grupa plików jest bieżące domyślne, należy użyć sys.filegroups Służy do wyświetlania katalogu.
  • DODAWANIE PLIKU DZIENNIKA
    Dodaje plik dziennika można dodać do określonej bazy danych.

  • REMOVE FILE logical_file_name
    Powoduje usunięcie wystąpienie pliku logicznego, opis SQL Server i usuwa pliku fizycznego. Nie można usunąć pliku, o ile nie jest pusty.

    • logical_file_name
      Nazwa logiczna jest używane w SQL Server przy odwoływaniu się do pliku.
  • MODYFIKOWANIE PLIKU
    Określa plik, który należy zmodyfikować.Tylko jeden <określenie_pliku> Właściwość można zmienić w danej chwili. Zawsze należy podać nazwę pola w <określenie_pliku> Aby zidentyfikować plik, który ma zostać zmodyfikowana. Jeżeli określono SIZE, nowy rozmiar musi być większy niż bieżący rozmiar pliku.

    Aby zmodyfikować logiczną nazwę pliku danych lub pliku dziennika, określ nazwę pliku logicznego ulec zmianie w NAME klauzuli oraz określ nową nazwę pliku w logiczne NEWNAME Klauzula. Na przykład:

    MODIFY FILE ( NAME = logical_file_name, NEWNAME = new_logical_name ) 
    

    Aby przenieść do nowej lokalizacji pliku danych lub pliku dziennika, określ bieżącej nazwy pliku logicznego w NAME Klauzula i podaj nową nazwę pliku ścieżka i systemu operacyjnego w FILENAME Klauzula. Na przykład:

    MODIFY FILE ( NAME = logical_file_name, FILENAME = ' new_path/os_file_name ' )
    

    Po przeniesieniu wykazu pełnego tekstu, należy określić nową ścieżka w klauzula FILENAME.Nie określono nazwy pliku systemu operacyjnego.

    Aby uzyskać więcej informacji zobacz Moving Database Files.

    Dla FILESTREAM grupa plików nazwę pola można modyfikować online.FILENAME mogą być modyfikowane w trybie online, jednak zmiany nie są uwzględniane do czasu po kontener jest fizycznie przeniesiony, a serwer jest zamknięty, a następnie uruchamiane ponownie.

    zestaw pliku FILESTREAM OFFLINE.Gdy plik FILESTREAM jest w trybie offline, grupa plików jej nadrzędnej będzie wewnętrznie oznaczona jako offline; dlatego dostęp do danych FILESTREAM w tym grupa plików zakończy się niepowodzeniem.

<określenie_pliku>::=

Określa właściwości pliku.

  • Nazwa logical_file_name
    Określa logiczną nazwę pliku.

    • logical_file_name
      Nazwa logiczna jest stosowana w wystąpieniu SQL Server przy odwoływaniu się do pliku.
  • NEWNAME new_logical_file_name
    Określa nazwa logiczna nowego pliku.

    • new_logical_file_name
      Jest to nazwa, aby zastąpić istniejącą nazwę pliku logicznego.Nazwa musi być unikatowa w bazie danych i są zgodne z zasadami identyfikatory.Nazwa może być znak Unicode stała, regularne identyfikatora lub identyfikator z ogranicznikami.Aby uzyskać więcej informacji zobaczZa pomocą polecenia identyfikatory jako nazwy obiektów.
  • {FILENAME**"os_file_name'** | "filestream_path' }
    Określa nazwę pliku (fizycznego) systemu operacyjnego.

    • ' os_file_name '
      W przypadku standardowych grupa plików (wiersze) jest ścieżka i nazwę, który jest używany przez system operacyjny, podczas tworzenia pliku.Plik musi znajdować się na serwerze, na którym SQL Server został zainstalowany. Określona ścieżka musi istnieć przed wykonaniem instrukcja ALTER DATABASE.

      Nie zestaw parametry SIZE, MAXSIZE i FILEGROWTH, gdy ścieżka UNC jest określony dla pliku.

      Pliki danych nie powinny być traktowane w systemach skompresowanych plików, chyba że są to pliki pomocnicze tylko do odczytu lub jeśli baza danych jest tylko do odczytu.Pliki dziennika nigdy nie powinny być traktowane w systemach plików skompresowanych.Aby uzyskać więcej informacji zobaczRead-Only Filegroups and Compression.

      Jeśli plik znajduje się na partycji raw os_file_name należy określić tylko literę dysku partycja raw. Tylko jeden plik mogą być umieszczane na każdej partycji raw.

    • 'filestream_path'
      Dla FILESTREAM grupa plików FILENAME odwołuje się do ścieżka, w którym będą przechowywane dane FILESTREAM.Ścieżka do folderu ostatniego musi istnieć, a ostatni folderu nie musi istnieć.Na przykład jeśli określisz ścieżka C:\MyFiles\MyFilestreamData C:\MyFiles muszą istnieć przed uruchomieniem ALTER DATABASE, ale nie musi istnieć folder MyFilestreamData.

      (grupa plików i plików<filespec>) muszą być utworzone w tym samym sprawozdaniu. Może istnieć tylko jeden plik <filespec>, dla FILESTREAM grupa plików.

      Właściwości SIZE, MAXSIZE i FILEGROWTH nie dotyczą grupa plików FILESTREAM.

  • SIZE size
    Określa rozmiar pliku.SIZE nie ma zastosowania do filegroups FILESTREAM.

    • size
      Jest to rozmiar pliku.

      Po określeniu z ADD FILE size to początkowy rozmiar pliku. Po określeniu z zmodyfikować plik size jest nowy rozmiar pliku i nie może być większa niż bieżący rozmiar pliku.

      Kiedy size nie podano pliku podstawowego SQL Server używany jest rozmiar pliku podstawowego w Model bazy danych.Jeśli zostanie użyty plik zapasowy danych lub pliku dziennika, ale size nie określono pliku, Database Engine powoduje, że plik 1 MB.

      Sufiksy KB, MB, GB i TB może służyć do określania kilobajtów, MB, GB lub terabajtów.Wartość domyślna to MB.Określ liczbę całkowitą, a nie należy dołączać ułamek dziesiętny.Aby określić ułamek megabajt, konwertowanie wartości na kilobajtów przez pomnożenie liczby przez 1024.Na przykład określić 1536 KB zamiast 1,5 MB (1,5 x 1024 = 1536).

  • MAXSIZE {max_size| NIEOGRANICZONĄ LICZBĘ}
    Określa rozmiar maksymalny pliku, do którego można powiększyć plik.MAXSIZE nie ma zastosowania do filegroups FILESTREAM.

    • max_size
      Jest to rozmiar maksymalny.Sufiksy KB, MB, GB i TB może służyć do określania kilobajtów, MB, GB lub terabajtów.Wartość domyślna to MB.Określ liczbę całkowitą, a nie należy dołączać ułamek dziesiętny.Jeśli max_size nie jest określony, zwiększy rozmiar pliku, aż dysk jest zapełniony.

    • NIEOGRANICZONY
      Określa, że w pliku powiększa się, aż dysk jest zapełniony.W SQL Server, plik dziennika z nieograniczonej wzrostu ma maksymalny rozmiar 2 TB i plik danych został maksymalny rozmiar 16 TB.

  • FILEGROWTH growth_increment
    Określa przyrost automatyczny rozmiaru pliku.Ustawienie FILEGROWTH w pliku nie może być większa niż ustawienie MAXSIZE.FILEGROWTH nie ma zastosowania do filegroups FILESTREAM.

    • growth_increment
      Ilość miejsca na dodane do pliku co czas wymagany jest nowy obszar.

      Wartość można określić w MEGABAJTACH, KB, GB, TB lub procentu (%).Jeśli liczba jest określona bez MB, KB lub % sufiksu, wartość domyślna to MB.Jeśli określono %, rozmiar przyrostu przyrostu jest określona w procentach rozmiar pliku w czasie występuje wartość przyrostu.Określony rozmiar jest zaokrąglana do najbliższej 64 KB.

      Wartość 0 wskazuje, że jest automatyczne wzrostu zestaw do wylogowywania się i brak dodatkowych spacji jest dozwolone.

      Jeżeli nie określono FILEGROWTH, wartością domyślną jest 1 MB dla plików danych i 10 % plików dziennika, a wartość minimalna to 64 KB.

      Uwaga

      Począwszy od SQL Server 2005, przyrost rozmiaru domyślnego dla plików danych zmienił się od 10 % 1 MB. Domyślny plik dziennika o 10 % pozostaje bez zmian.

  • TRYB OFFLINE
    Ustawia plik w trybie offline i sprawia, że wszystkie obiekty w grupa plików, w niedostępne.

    Ostrzeżenie

    Użyj tej opcji tylko wtedy, gdy plik jest uszkodzony i mogą być przywracane.Ustaw OFFLINE pliku może zostać ustawiona tylko online przez Przywracanie z kopia zapasowa pliku.Aby uzyskać więcej informacji na temat Przywracanie pojedynczych plików Zobacz przywracanie (języka Transact-SQL).

<add_or_modify_filegroups>::=

Dodawanie, modyfikowanie lub usuwanie grupa plików bazy danych.

  • Dodaj grupa plików filegroup_name
    Dodaje grupa plików do bazy danych.

  • ZAWIERA FILESTREAM
    Określa, że grupa plików, w przechowuje FILESTREAM binarne dużych obiektów (bloków BLOB) w systemie plików.

  • REMOVE grupa plików filegroup_name
    Usuwa grupa plików z bazy danych.Nie można usunąć grupa plików, w, o ile nie jest pusty.Najpierw usuń wszystkie pliki z grupa plików,.Aby uzyskać więcej informacji zobacz „ REMOVE FILE logical_file_name"wcześniej w tym temacie.

  • MODIFY FILEGROUP filegroup_name { <filegroup_updatability_option> | DEFAULT | NAME **=**new_filegroup_name }
    Modyfikuje grupa plików, w ustawieniu stanu na TYLKO_DO_ODCZYTU lub READ_WRITE, dokonując grupa plików, w grupa plików, w domyślnym dla bazy danych, lub zmiana nazwy grupa plików.

    • <filegroup_updatability_option>
      Ustawia właściwość tylko do odczytu lub zapisu i odczytu grupa plików,.

    • WARTOŚĆ DOMYŚLNA
      Zmienia grupa plików bazy danych domyślnych do filegroup_name. Tylko jedną grupa plików bazy danych może być grupa plików domyślnych.Aby uzyskać więcej informacji zobaczUnderstanding Files and Filegroups.

    • NAME = new_filegroup_name
      Zmienia nazwę grupa plików, aby new_filegroup_name.

<filegroup_updatability_option>::=

Ustawia właściwość tylko do odczytu lub zapisu i odczytu grupa plików,.

  • READ_ONLY | TYLKO DO ODCZYTU
    Określa grupa plików, w jest tylko do odczytu.Aktualizacje do obiektów znajdujących się w nim nie są dozwolone.Nie można dokonać podstawową grupa plików, tylko do odczytu.Aby zmienić ten stan, musi mieć wyłączny dostęp do bazy danych.Aby uzyskać więcej informacji zobacz klauzulę SINGLE_USER.

    Ponieważ tylko do odczytu bazy danych nie zezwala na modyfikacji danych:

    • odzyskiwanie automatyczne jest pomijane podczas uruchamiania systemu.

    • Zmniejszanie bazy danych nie jest możliwe.

    • Blokowanie nie występuje w bazach danych tylko do odczytu.Może to spowodować szybsze działanie kwerendy.

    Uwaga

    The keyword READONLY will be removed in a future version of Microsoft SQL Server.Należy unikać stosowania tylko do odczytu w nowej pracy rozwoju i zaplanować do modyfikowania aplikacji, które aktualnie jest używany tylko do odczytu.Zamiast tego użyj TYLKO_DO_ODCZYTU.

  • READ_WRITE | READWRITE
    Określa grupę READ_WRITE.Aktualizacje są włączone dla obiektów w grupa plików,.Aby zmienić ten stan, musi mieć wyłączny dostęp do bazy danych.Aby uzyskać więcej informacji zobacz klauzulę SINGLE_USER.

    Uwaga

    The keyword READWRITE will be removed in a future version of Microsoft SQL Server.Należy unikać stosowania odczytu i zapisu w nowej pracy rozwoju i zaplanować do modyfikowania aplikacji korzystających aktualnie odczytu i zapisu.Zamiast tego użyj READ_WRITE.

Stan tych opcji można określić, przeglądając is_read_only kolumnasys.Databases wyświetlanie katalogu lub Updateability właściwość funkcja DATABASEPROPERTYEX.

Remarks

Aby zmniejszyć rozmiar bazy danych, należy użyć DBCC SHRINKDATABASE.

Można dodawać ani usuwać pliku instrukcja kopia zapasowa jest uruchomiona.

Dla każdej bazy danych można określić maksymalnie 32 767 plików i filegroups 32 767.

W SQL Server 2005 lub nowszy, stan bazy danych pliku (na przykład, tryb online lub offline), są obsługiwane niezależnie od stanu bazy danych. Aby uzyskać więcej informacji zobaczFile States.Stan plików w grupa plików określa dostępność całą grupa plików.Dla grupa plików były dostępne wszystkie pliki znajdujące się w grupa plików, w musi być w trybie online.Jeśli grupa plików jest w trybie offline, próby dostęp grupa plików, w instrukcja języka SQL zakończy się niepowodzeniem z powodu błędu.Podczas tworzenia planów kwerend dla instrukcji SELECT, optymalizator kwerendy pozwala uniknąć ponownego zbudowania indeksów nie klastrowanych i widoków indeksowanych, które znajdują się w trybie offline filegroups.Dzięki temu te instrukcje powiodła się.Jednak jeśli grupa plików trybu offline zawiera sterty lub indeks klastrowany w tabela miejsce docelowe, nie instrukcji SELECT.Ponadto INSERT, UPDATE lub DELETE instrukcja, która modyfikuje tabela z dowolnym indeksu w grupa plików trybu offline nie powiedzie się.

Przenoszenie plików

W SQL Server 2005 lub nowszy, przenoszenie systemu lub danych zdefiniowanych przez użytkownika i plików dziennika przez podanie nowej lokalizacji w FILENAME. Może to być przydatne w następujących scenariuszach:

  • Niepowodzenie odzyskiwanie.Na przykład baza danych jest w trybie podejrzanych lub zamknięcia spowodowane awarią sprzętu.

  • Planowane przeniesienie.

  • Przeniesienie dysku zaplanowanej konserwacji.

Aby uzyskać więcej informacji zobaczMoving Database Files.

Inicjowanie plików

Domyślnie pliki dziennika i dane są inicjowane przez wypełnienie pliki zerami, gdy wykonasz jedną z następujących czynności:

  • Tworzenie bazy danych.

  • Dodawanie plików do istniejącej bazy danych.

  • Zwiększ rozmiar istniejącego pliku.

  • Przywracanie bazy danych lub grupa plików.

Pliki danych mogą być inicjowane natychmiast.Umożliwia to szybkie wykonywanie tych operacji na plikach.Aby uzyskać więcej informacji zobaczInicjowanie plik bazy danych.

Przykłady

A.Dodawanie pliku do bazy danych

W następującym przykładzie dodano plik 5 MB danych do AdventureWorks Baza danych.

B.Dodawanie grupa plików za pomocą dwóch plików do bazy danych

Poniższy przykład tworzy grupa plików, Test1FG1 w AdventureWorks bazy danych i dodaje grupa plików, w dwóch plikach 5 MB.

C.Dodawanie dwóch plików dziennika do bazy danych

W następującym przykładzie dodano dwa pliki dziennika 5 MB AdventureWorks Baza danych.

D.Usuwanie pliku z bazy danych

W następującym przykładzie usunięto jeden z plików dodane w przykładzie B.

E.Modyfikacja pliku

Poniższy przykład powoduje zwiększenie rozmiaru jednego z plików, dodana w przykładzie B.

F.Przenoszenie plików do nowej lokalizacji

W poniższym przykładzie przenosi Test1dat2 Plik utworzony w przykładzie A do nowego katalogu.

Uwaga

Przed uruchomieniem w tym przykładzie należy fizycznie Przenieś plik do nowego katalogu.Później zatrzymywanie i uruchamianie wystąpienie SQL Server lub AdventureWorks OFFLINE i ONLINE następnie spowoduje wprowadzenie zmiany bazy danych.

USE master;
GO
ALTER DATABASE AdventureWorks
MODIFY FILE
(
    NAME = Test1dat2,
    FILENAME = N'c:\t1dat2.ndf'
);
GO

G.Przenoszenie tempdb do nowej lokalizacji

Przesuwa się w następującym przykładzie tempdb z jego bieżącej lokalizacji na dysku do innej lokalizacji na dysku. Ponieważ tempdb jest utworzony ponownie przy każdym uruchomieniu usługa MSSQLSERVER, nie trzeba fizycznie przenieść dane i pliki dziennika. Pliki są tworzone po ponownym uruchomieniu usługa w kroku 3.Do momentu ponownego uruchomienia usługa tempdb kontynuuje działanie w istniejącej lokalizacji.

  1. Określenie nazwy pliku logicznego, tempdb Baza danych i ich bieżącej lokalizacji na dysku.

    SELECT name, physical_name
    FROM sys.master_files
    WHERE database_id = DB_ID('tempdb');
    GO
    
  2. Zmiana lokalizacji każdego pliku przy użyciu ALTER DATABASE.

    USE master;
    GO
    ALTER DATABASE tempdb 
    MODIFY FILE (NAME = tempdev, FILENAME = 'E:\SQLData\tempdb.mdf');
    GO
    ALTER DATABASE  tempdb 
    MODIFY FILE (NAME = templog, FILENAME = 'E:\SQLData\templog.ldf');
    GO
    
  3. Zatrzymaj i ponownie uruchom wystąpienie SQL Server.

  4. Sprawdź zmiany pliku.

    SELECT name, physical_name
    FROM sys.master_files
    WHERE database_id = DB_ID('tempdb');
    
  5. Usuń tempdb.mdf i templog.ldf z ich oryginalnej lokalizacji.

H.Tworzenie domyślnego grupa plików

Poniższy przykład powoduje, że Test1FG1 grupa plików utworzonych w przykładzie B grupa plików domyślnych. Następnie, grupa plików domyślnie jest ustawiany na PRIMARY grupa plików. Należy zauważyć, że PRIMARY muszą być rozdzielone nawiasy i cudzysłowy.

I.Dodawanie grupa plików przy użyciu ALTER DATABASE

W następującym przykładzie dodano FILEGROUP zawiera FILESTREAM Klauzula do FileStreamPhotoDB Baza danych.

--Create and add a FILEGROUP that CONTAINS the FILESTREAM clause to
--the FileStreamPhotoDB database.
ALTER database FileStreamPhotoDB
ADD FILEGROUP TodaysPhotoShoot
CONTAINS FILESTREAM
GO

--Add a file for storing database photos to FILEGROUP 
ALTER database FileStreamPhotoDB
ADD FILE
(
    NAME= 'PhotoShoot1',
    FILENAME = 'C:\Users\Administrator\Pictures\TodaysPhotoShoot.ndf'
)
TO FILEGROUP TodaysPhotoShoot
GO