Megosztás a következőn keresztül:


ALTER DATABASE (Transact-SQL) Fájl- és fájlcsoport beállítások

Módosítja az adatbázishoz tartozó fájlokat és fájlcsoportokat. Fájlokat és fájlcsoportokat hozzáad vagy eltávolít az adatbázisból, valamint megváltoztatja az adatbázis vagy fájljai és fájlcsoportjait az attribútumokat. További ALTER DATABASE opciókért lásd: ALTER DATABASE.

A szintaxisi konvenciókról további információt Transact-SQL szintaxiskonvenciákat.

Termék kiválasztása

A következő sorban válassza ki a kívánt terméknevet, és csak az adott termék adatai jelenjenek meg.

* SQL Server *  

felügyelt SQL-példány

 

Szemantika

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' | 'memory_optimized_data_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 | CONTAINS MEMORY_OPTIMIZED_DATA ]
    | REMOVE FILEGROUP filegroup_name
    | MODIFY FILEGROUP filegroup_name
        { <filegroup_updatability_option>
        | DEFAULT
        | NAME = new_filegroup_name
        | { AUTOGROW_SINGLE_FILE | AUTOGROW_ALL_FILES }
        }
}
<filegroup_updatability_option>::=
{
    { READONLY | READWRITE }
    | { READ_ONLY | READ_WRITE }
}

Arguments

<add_or_modify_files>::=

Megadja a hozzáadásra, eltávolításra vagy módosításra váró fájlt.

database_name Az adatbázis nevét kell módosítani?

ADD FILE Fájlt ad hozzá az adatbázishoz.

TO FILEGROUP { filegroup_name } Megadja azt a fájlcsoportot, amelyhez a megadott fájlt kell hozzáadni. A jelenlegi fájlcsoportok és az alapértelmezett fájlcsoport megjelenítéséhez használja a sys.filegroups katalógus nézetet.

NAPLÓFÁJL HOZZÁADÁSA Hozzáad egy naplófájlt, amely hozzáadható a megadott adatbázishoz.

FÁJL ELTÁVOLÍTÁSA logical_file_name Eltávolítja a logikai fájlleírást egy SQL Server példányból, és törli a fizikai fájlt. A fájlt nem lehet eltávolítani, hacsak nem üres.

logical_file_name Ez az a logikai név, amelyet az SQL Serverben használnak a fájl hivatkozásakor?

Figyelmeztetés

Egy olyan adatbázis-fájl eltávolítása, amelyhez FILE_SNAPSHOT biztonsági mentések tartoznak, sikerül, de a kapcsolódó pillanatképeket nem töröljük, hogy elkerüljék az adatbázisfájlhoz utaló biztonsági mentések érvénytelenítését. A fájl lerövidítve lesz, de fizikailag nem törlik, hogy a FILE_SNAPSHOT biztonsági mentések épen maradjanak. További információ: SQL Server Backup and Restore with Microsoft Azure Blob Storage. Érvényes: SQL Server (SQL Server 2016 (13.x) és újabb).

MODIFY FILE Megadja a módosítandó fájlt. Egyszerre csak egy <fájlspecifikációs> tulajdonság változtatható. A NAME-et mindig meg kell tüntetni a <fájlspecifikációban> , hogy azonosítsuk a módosítandó fájlt. Ha a SIZE van megadva, az új méretnek nagyobbnak kell lennie, mint a jelenlegi fájlméret.

Egy adatfájl vagy naplófájl logikai nevének módosításához megadjuk a mellékmellékes néven átnevezendő logikai fájl NAME nevét, és a kluzadékban a fájl NEWNAME új logikai nevét is. Például:

MODIFY FILE ( NAME = logical_file_name, NEWNAME = new_logical_name )

Egy adatfájl vagy naplófájl új helyre való áthelyezéséhez a záradékban adja meg a jelenlegi logikai fájl nevét NAME , és az új útvonalat és az operációs rendszer fájlnevét a FILENAME mellékmellékszálban. Például:

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

Amikor áthelyezed a teljes szöveges katalógust, csak az új útvonalat jelöld meg a FILENAME záradékban. Ne add meg az operációs rendszer fájlnevét.

További információért lásd: Adatbázis-fájlok mozgatása.

Egy FILESTREAM fájlcsoport esetén a NAME online módosítható. A FILENAME online módosítható; azonban a változás csak akkor lép életbe, amikor a konténert fizikailag áthelyezték, a szervert leállították és újraindították.

Beállíthatsz egy FILESTREAM fájlt offline állapotba. Ha egy FILESTREAM fájl offline van, az anyafájlcsoport belső módon offline-ként lesz jelölve; ezért minden hozzáférés a FILESTREAM adatokhoz ebben a fájlcsoportban megbukik.

Megjegyzés:

<add_or_modify_files> lehetőségek nem elérhetők egy Containált Adatbázisban.

<filespec>::=

Szabályozza a fájltulajdonságokat.

NAME logical_file_name Megadja a fájl logikai nevét.

logical_file_name Ez az a logikai név, amelyet egy SQL Server példányban használnak a fájl hivatkozásakor.

NEWNAME new_logical_file_name Új logikai nevet ad a fájlnak.

new_logical_file_name Ez a név a meglévő logikai fájlnév helyettesítésére szolgál. A névnek egyedinek kell lennie az adatbázisban, és megfelelnie kell az azonosítók szabályainak. A név lehet karakter vagy Unicode állandó, normál azonosító vagy definiált azonosító.

FILENAME { 'os_file_name' | 'filestream_path' | ''memory_optimized_data_path'} Megadja az operációs rendszer (fizikai) fájlnevét.

' os_file_name ' Egy szabványos (SOROK) fájlcsoport esetén ez az út és fájlnév, amelyet az operációs rendszer használ a fájl létrehozásakor is. A fájlnak azon a szerveren kell lennie, amelyre az SQL Server telepítve van. A megadott útnak meg kell léteznie az ALTER DATABASE utasítás végrehajtása előtt.

Megjegyzés:

SIZE, MAXSIZE, és FILEGROWTH paraméterek nem állíthatóak be, ha UNC út van megadva a fájlhoz.

A rendszeradatbázisok nem találhatók UNC megosztási könyvtárakban.

Az adatfájlokat nem szabad tömörített fájlrendszerekre helyezni, kivéve, ha ezek csak olvasható másodlagos fájlok, vagy ha az adatbázis csak olvasható. A naplófájlokat soha nem szabad tömörített fájlrendszerekre helyezni.

Ha a fájl nyers partíción található, os_file_name csak egy meglévő nyers partíció meghajtóbetűjelét kell megadnia. Minden nyers partícióra csak egy fájlt lehet feltenni.

'filestream_path' Egy FILESTREAM fájlcsoport esetén a FILENAME arra az útra utal, ahol a FILESTREAM adatokat tárolják. Az utolsó mappához vezető elérési útnak léteznie kell, és az utolsó mappa nem létezhet. Például, ha megadod az útvonalat C:\MyFiles\MyFilestreamData, akkor C:\MyFiles léteznie kell az ALTER DATABASE futtatása előtt, de a MyFilestreamData mappa nem létezhet.

Megjegyzés:

A SIZE és FILEGROWTH tulajdonságok nem vonatkoznak egy FILESTREAM fájlcsoportra.

'memory_optimized_data_path' Egy memóriaoptimalizált fájlcsoport esetén a FILENAME olyan útvonalat jelöl, ahol memóriaoptimalizált adatokat tárolnak. Az utolsó mappához vezető elérési útnak léteznie kell, és az utolsó mappa nem létezhet. Például, ha megadod az útvonalat C:\MyFiles\MyData, akkor C:\MyFiles léteznie kell az ALTER DATABASE futtatása előtt, de a MyData mappa nem létezhet.

A fájlcsoportot és a fájlt (<filespec>) ugyanabban az utasításban kell létrehozni.

Megjegyzés:

A SIZE és FILEGROWTH tulajdonságok nem érvényesek egy MEMORY_OPTIMIZED_DATA fájlcsoportra.

További információért a memóriaoptimalizált fájlcsoportokról lásd: A memóriaoptimalizált fájlcsoport.

SIZE size A fájlméretet határozza meg. A SIZE nem vonatkozik a FILESTREAM fájlcsoportokra.

méret Az akta mérete.

Ha az ADD FILE (ADD FILE) megadja, a méret a fájl eredeti mérete. Ha a MODIFY FILE beállítással van megadva, a méret a fájl új mérete, és nagyobbnak kell lennie a jelenlegi fájlméretnél.

Ha az elsődleges fájl mérete nem van megadva, az SQL Server a modelladatbázisban lévő elsődleges fájl méretét használja. Ha másodlagos adatfájlt vagy naplófájlt jelölnek meg, de a fájl mérete nem van megadva, az Adatbázis Motor 1 MB-os fájlt jelent.

A KB, MB, GB és TB toldalitagok segítségével megadhatók kilobájt, megabájt, gigabájt vagy terabájt. Az alapértelmezett érték az MB. Határozz meg egy teljes számot, és ne tizedesszámot vegyél fel. Egy megabájt történek megadásához az értéket kilobájtokra alakítsuk át, megszorozva a számot 1024-re. Például 1536 KB értéket jelölj meg 1,5 MB helyett (1,5 x 1024 = 1536).

Megjegyzés:

SIZE nem lehet beállítani:

  • Amikor a fájlhoz UNC út van megadva
  • A fájlcsoportokhoz FILESTREAMMEMORY_OPTIMIZED_DATA és

MAXSIZE { max_size| KORLÁTLAN } Megadja a fájl maximális méretét, amelyre a fájl nőhet.

max_size A maximális fájlméret. A KB, MB, GB és TB toldalitagok segítségével megadhatók kilobájt, megabájt, gigabájt vagy terabájt. Az alapértelmezett érték az MB. Határozz meg egy teljes számot, és ne tizedesszámot vegyél fel. Ha max_size nincs megadva, a fájl mérete nő, amíg a lemez tele nem lesz.

UNLIMITED Megadja, hogy a fájl növekedjen, amíg a lemez tele nem lesz. Az SQL Serverben a korlátlan növekedéssel megadott naplófájlok maximális mérete 2 TB, az adatfájlok mérete pedig legfeljebb 16 TB. Nincs maximális méret, ha ez az opció egy FILESTREAM konténerhez van megadva. A lemez megteltéig folyamatosan nő.

Megjegyzés:

MAXSIZE nem állítható, ha a fájlhoz UNC út van megadva.

FILEGROWTH growth_increment Megadja a fájl automatikus növekedési növelését. Egy fájl FILEGROWTH beállítása nem haladhatja meg a MAXSIZE beállítást. A FILEGROWTH nem vonatkozik a FILESTREAM fájlcsoportokra.

growth_increment Az a hely, amely minden alkalommal hozzáadódik a fájlhoz, amikor új helyre van szükség.

Az érték megadható MB, KB, GB, TB vagy százalékban (%). Ha egy számot MB, KB vagy % utótag nélkül jelölnek meg, akkor az alapértelmezett MB. Amikor % meg van jelölve, a növekedési inkrement mérete a fájl méretének megadott százaléka az increment megtörtént időpontjában. A megadott méretet a legközelebbi, 64 KB-ra kerekítik.

0 érték azt jelzi, hogy az automatikus növekedés kikapcsolva, és nincs szabad további hely.

Ha a FILEGROWTH nincs megadva, az alapértelmezett értékek a következők:

verzió Alapértelmezett értékek
Az SQL Server 2016-tól kezdve (13.x) Adatok 64 MB. Naplófájlok 64 MB.
Az SQL Server 2005-től kezdve (9.x) Adat 1 MB. Naplófájlok 10%.
Az SQL Server 2005 előtt (9.x) Adat 10%. Naplófájlok 10%.

Megjegyzés:

FILEGROWTH nem lehet beállítani:

  • Amikor a fájlhoz UNC út van megadva
  • A fájlcsoportokhoz FILESTREAMMEMORY_OPTIMIZED_DATA és

OFFLINE A fájlt offline állapotba állítja, és elérhetetlenné teszi a fájlcsoportban lévő összes objektumot.

Caution

Ezt az opciót csak akkor használd, ha a fájl sérült és visszaállítható. Egy OFFLINE beállítású fájl csak a biztonsági mentésből való visszaállítás online beállításával állítható. További információért egyetlen fájl visszaállításáról lásd: RESTORE.

<fájlspec> opciók nem elérhetők egy Zárt Adatbázisban.

<add_or_modify_filegroups>::=

Fájlcsoportot adj hozzá, módosítsd vagy távolíts el az adatbázisból.

FÁJLCSOPORT HOZZÁADÁSA filegroup_name Egy fájlcsoportot ad az adatbázishoz.

TARTALMAZZA FILESTREAMET Megadja, hogy a fájlcsoport a fájlrendszerben tárolja a FILESTREAM bináris nagy objektumait (BLOB-okat).

TARTALMAZ MEMORY_OPTIMIZED_DATA

Vonatkozik az alábbi verziókra: SQL Server (SQL Server 2014 (12.x) és újabbabb)

Megadja, hogy a fájlcsoport tárolja a memóriaoptimalizált adatokat a fájlrendszerben. További információért lásd In-Memory OLTP - In-Memory Optimalizációt. Adatbázisonként csak egy MEMORY_OPTIMIZED_DATA fájlcsoport engedélyezett. Memóriaoptimalizált táblázatok létrehozásához a fájlcsoport nem lehet üres. Legalább egy aktának kell lennie. filegroup_name egy ösvényt jelent. Az utolsó mappához vezető elérési útnak léteznie kell, és az utolsó mappa nem létezhet.

FÁJLCSOPORT ELTÁVOLÍTÁSA filegroup_name Eltávolít egy fájlcsoportot az adatbázisból. A fájlcsoport nem távolítható el, hacsak nem üres. Először távolítsd el az összes fájlt a fájlcsoportból. További információért lásd a "REMOVE FILE logical_file_name" (REMOVE FILE ), a korábbi témában.

Megjegyzés:

Hacsak a FILESTREAM szemétgyűjtő nem távolította el az összes fájlt egy FILESTREAM konténerből, a ALTER DATABASE REMOVE FILE FILESTREAM konténer eltávolítására irányuló művelet sikertelen lesz, és hibát ad vissza. Lásd a FILESTREAM konténer eltávolítása szekcióját ebben a témában.

FÁJLCSOPORT MÓDOSÍTÁSA filegroup_name { <filegroup_updatability_option> | ALAPÉRTELMEZETT | NÉV =new_filegroup_name } Módosítja a fájlcsoportot úgy, hogy az állapotot READ_ONLY vagy READ_WRITE-re állítja be, a fájlcsoportot az adatbázis alapértelmezett fájlcsoportjává teszi, vagy megváltoztatja a fájlcsoport nevét.

<filegroup_updatability_option> A fájlcsoportnak állítja be az csak olvasható vagy olvasás/írás tulajdonságot.

ALAPÉRTELMEZÉS Megváltoztatja az alapértelmezett adatbázis fájlcsoportot filegroup_name-re. Az adatbázisban csak egy fájlcsoport lehet alapértelmezett fájlcsoport. További információért lásd: Adatbázis fájlok és fájlcsoportok.

NAME = new_filegroup_name Megváltoztatja a fájlcsoport nevét new_filegroup_name-re.

AUTOGROW_SINGLE_FILE Alkalmazható: SQL Server (SQL Server 2016 (13.x) és újabbabb)

Ha egy fájl a fájlcsoportban eléri az automatikus növekedési küszöböt, csak az a fájl nő. Ez az alapértelmezett érték.

AUTOGROW_ALL_FILES

Érvényes: SQL Server (SQL Server 2016 (13.x) és újabbabb)

Ha a fájlcsoport egy fájlja eléri az automatikus növekedési küszöbértéket, a fájlcsoport összes fájlja növekszik.

Megjegyzés:

Ez a TempDB alapértelmezett értéke.

<filegroup_updatability_option>::=

A fájlcsoportnak állítja be az olvasható vagy olvasás/írás tulajdonságot.

READ_ONLY | READONLY Megadja, hogy a fájlcsoport csak olvasható. Objektumok frissítése nem engedélyezett. Az elsődleges fájlcsoport nem lehet csak olvashatóvá tenni. Az állapot módosításához kizárólagos hozzáféréssel kell rendelkeznie az adatbázishoz. További információ: SINGLE_USER záradék.

Mivel egy csak olvasható adatbázis nem engedélyezi az adatmódosításokat:

  • Az automatikus helyreállítás a rendszer indításakor kihagyható.
  • Az adatbázis zsugorítása nem lehetséges.
  • Az csak olvasható adatbázisokban nem fordul elő zárolás. Ez gyorsabb lekérdezési teljesítményt eredményezhet.

Megjegyzés:

A kulcsszót READONLY a Microsoft SQL Server jövőbeli verziójában eltávolítják. Kerüld az új fejlesztői munkák használatátREADONLY, és tervezd az alkalmazások módosítását, amelyek jelenleg .READONLY A READ_ONLY használható helyette.

READ_WRITE | READWRITE Megadja, hogy a csoport READ_WRITE. A fájlcsoport objektumaihoz engedélyezett frissítések. Az állapot módosításához kizárólagos hozzáféréssel kell rendelkeznie az adatbázishoz. További információ: SINGLE_USER záradék.

Megjegyzés:

A kulcsszót READWRITE a Microsoft SQL Server jövőbeli verziójában eltávolítják. Kerüld az új fejlesztési munkák használatátREADWRITE, és tervezd meg a jelenleg használt alkalmazások READWRITE módosítását.READ_WRITE

Jótanács

Ezeknek az opcióknak az állapotát meghatározható a sys.databases katalógusnézet is_read_only oszlopának vagy a függvény Frissíthetőség tulajdonságának DATABASEPROPERTYEX vizsgálatával.

Megjegyzések

Az adatbázis méretének csökkentéséhez használja DBCC SHRINKDATABASE.

Nem lehet fájlt hozzáadni vagy eltávolítani, amíg egy BACKUP utasítás fut.

Minden adatbázishoz legfeljebb 32 767 fájl és 32 767 fájlcsoport adható meg.

Az SQL Server 2005-től (9.x) kezdve egy adatbázis-fájl állapota (például online vagy offline) függetlenül tartja fenn az adatbázis állapotától. További információ: Fájlállapotok.

  • A fájlcsoporton belüli fájlok állapota határozza meg a teljes fájlcsoport rendelkezésre állását. Ahhoz, hogy egy fájlcsoport elérhető legyen, a fájlcsoporton belüli összes fájlnak online állapotúnak kell lennie.
  • Ha egy fájlcsoport offline van, bármilyen SQL utasítással való hozzáférési kísérlet hibával megbukik. Amikor lekérdezési terveket készítesz utasításokhoz SELECT , a lekérdezésoptimalizáló elkerüli a nem klaszterezett indexeket és az offline fájlcsoportokban található indexelt nézeteket. Ez lehetővé teszi ezeknek az utasításoknak a sikerességét. Azonban, ha az offline fájlcsoport tartalmazza a céltáblák halmot vagy klaszterelt indexét, akkor az SELECT utasítások meghibásodnak. Továbbá bármely INSERT, UPDATE, vagy DELETE állítás, amely módosítja a táblát bármely indexkel egy offline fájlcsoportban, meghibás.

A SIZE, MAXSIZE és FILEGROWTH paraméterek nem állíthatóak be, ha UNC út van megadva a fájlhoz.

Memóriaoptimalizált fájlcsoportokhoz nem állítható be a SIZE és FILEGROWTH paramétereket.

A kulcsszót READONLY a Microsoft SQL Server jövőbeli verziójában eltávolítják. Kerüld az új fejlesztői munkák használatát READONLY , és tervezd az olyan alkalmazások módosítását, amelyek jelenleg csak READ-et használnak. A READ_ONLY használható helyette.

A kulcsszót READWRITE a Microsoft SQL Server jövőbeli verziójában eltávolítják. Kerüld az új fejlesztési munkák használatátREADWRITE, és tervezd meg a jelenleg használt alkalmazások READWRITE módosítását.READ_WRITE

Mozgató fájlok

Rendszer- vagy felhasználó által definiált adatokat és naplófájlokat mozgathatsz az új hely megadásával a FILENAME-ben. Ez hasznos lehet a következő helyzetekben:

  • Hiba helyreállítása. Például az adatbázis gyanús állapotban van, vagy hardverhiba miatt leáll.
  • Tervezett áthelyezés.
  • Áthelyezés a tervezett lemezkarbantartás miatt.

További információért lásd: Adatbázis-fájlok mozgatása.

Fájlok inicializálása

Alapértelmezés szerint az adat- és naplófájlokat úgy inicializálják, hogy a fájlokat nullákkal töltjük ki, amikor az alábbi műveletek egyikét végzed:

  • Hozzon létre egy adatbázist.
  • Fájlokat adj hozzá egy meglévő adatbázisba.
  • Növeld egy meglévő fájl méretét.
  • Állíts vissza egy adatbázist vagy fájlcsoportot.

Az adatfájlok azonnal inicializálhatók. Ez lehetővé teszi ezeknek a fájlműveleteknek a gyors végrehajtását. További információ: Adatbázisfájl inicializálása.

FILESTREAM konténer eltávolítása

Bár a FILESTREAM konténert a "DBCC SHRINKFILE" művelet segítségével kiürítették, az adatbázisnak mégis szüksége lehet a törölt fájlok hivatkozásainak fenntartására különböző rendszerkarbantartási okokból. sp_filestream_force_garbage_collection futtatni fogja a FILESTREAM szemétgyűjtőt, hogy eltávolítsa ezeket a fájlokat, amikor biztonságos. Hacsak a FILESTREAM szemétgyűjtő nem távolította el az összes fájlt egy FILESTREAM konténerből, az ALTER DATABASE REMOVE FILE művelet nem képes eltávolítani egy FILESTREAM konténert, és hibát ad vissza. A következő eljárást ajánljuk a FILESTREAM tartály eltávolítására.

  1. Futasd a DBCC SHRINKFILE-t az EMPTYFILE opcióval, hogy a konténer aktív tartalmát más konténerekre helyezze.
  2. Győződj meg róla, hogy a napló mentései TELJES vagy BULK_LOGGED helyreállítási modellben készültek.
  3. Győződjön meg róla, hogy a replikációs naplóolvasó feladatot lefuttatták, ha releváns.
  4. Futtatd sp_filestream_force_garbage_collection-t , hogy kényszerítse a szemétgyűjtőt, hogy törölje azokat a fájlokat, amelyekre már nincs szükség ebben a konténerben.
  5. Futtatd az ALTER DATABASE-t a REMOVE FILE opcióval a konténernek a eltávolítására.
  6. Ismételd meg a 2-től 4-ig a lépéseket még egyszer, hogy befejezd a szemétszállítást.
  7. Használd az ALTER adatbázist... REMOVE FILE a tároló eltávolításához.

Példák

A. Fájl hozzáadása egy adatbázisba

A következő példa egy 5 MB-os adatfájlt ad hozzá az AdventureWorks2025 adatbázishoz.

USE master;
GO
ALTER DATABASE AdventureWorks2022
ADD FILE
(
    NAME = Test1dat2,
    FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\t1dat2.ndf',
    SIZE = 5MB,
    MAXSIZE = 100MB,
    FILEGROWTH = 5MB
);
GO

B. Két fájlcsoportot hozzáadni egy adatbázishoz

A következő példa létrehozza a fájlcsoportot Test1FG1 az AdventureWorks2025 adatbázisban, és két 5 MB-os fájlt ad hozzá a fájlcsoporthoz.

USE master
GO
ALTER DATABASE AdventureWorks2022
ADD FILEGROUP Test1FG1;
GO
ALTER DATABASE AdventureWorks2022
ADD FILE
(
    NAME = test1dat3,
    FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\t1dat3.ndf',
    SIZE = 5MB,
    MAXSIZE = 100MB,
    FILEGROWTH = 5MB
),  
(  
    NAME = test1dat4,
    FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\t1dat4.ndf',
    SIZE = 5MB,
    MAXSIZE = 100MB,
    FILEGROWTH = 5MB
)  
TO FILEGROUP Test1FG1;
GO

C. Két naplófájl hozzáadása egy adatbázishoz

A következő példa két 5 MB-os naplófájlt ad hozzá az AdventureWorks2025 adatbázishoz.

USE master;
GO
ALTER DATABASE AdventureWorks2022
ADD LOG FILE
(
    NAME = test1log2,
    FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\test2log.ldf',
    SIZE = 5MB,
    MAXSIZE = 100MB,
    FILEGROWTH = 5MB
),
(
    NAME = test1log3,
    FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\test3log.ldf',
    SIZE = 5MB,
    MAXSIZE = 100MB,
    FILEGROWTH = 5MB
);
GO

D. Fájl eltávolítása adatbázisból

A következő példa eltávolít egy fájlt, amelyet a B példában hozzáadtak.

USE master;
GO
ALTER DATABASE AdventureWorks2022
REMOVE FILE test1dat4;
GO

E. Fájl módosítása

A következő példa növeli a B példában hozzáadott fájlok egyikének méretét. Az ALTER DATABASE a MODIFY FILE parancsgal csak egy fájlméretet tudsz nagyobbá tenni, így ha kisebbre akarod tenni a fájlméretet, DBCC SHRINKFILE-t kell használnod.

USE master;
GO

ALTER DATABASE AdventureWorks2022
MODIFY FILE
(NAME = test1dat3,
SIZE = 200MB);
GO

Ez a példa egy adatfájl méretét 100 MB-ra csökkenti, majd megadja a méretet ezen az összegen.

USE AdventureWorks2022;
GO

DBCC SHRINKFILE (AdventureWorks2022_data, 100);
GO

USE master;
GO
ALTER DATABASE AdventureWorks2022
MODIFY FILE
(NAME = test1dat3,
SIZE = 200MB);
GO

F. Egy fájl áthelyezése új helyre

A következő példa áthelyezi az Test1dat2 A példában létrehozott fájlt egy új könyvtárba.

Megjegyzés:

Fizikailag át kell helyezned a fájlt az új könyvtárba, mielőtt ezt a példát futtatnád. Ezután állítsd meg és indítsd el az SQL Server példányt, vagy használd az AdventureWorks2025 adatbázist OFFLINE-en, majd ONLINE-ként a változás megvalósításához.

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

G. Tempdb áthelyezése új helyre

A következő példa a lemezen lévő jelenlegi helyéről egy másik lemezhelyre költözik tempdb . Mivel tempdb minden alkalommal újrahozják az MSSQLSERVER szolgáltatást, nem kell fizikailag áthelyezned az adatokat és a naplófájlokat. A fájlok akkor jönnek létre, amikor a szolgáltatást a 3. lépésben újraindítják. Amíg a szolgáltatás újraindítása nem történik, tempdb a jelenlegi helyén működik.

  1. Határozzuk meg az adatbázis logikai fájlneveit, valamint azok tempdb aktuális helyét a lemezen.

    SELECT name, physical_name
    FROM sys.master_files
    WHERE database_id = DB_ID('tempdb');
    GO
    
  2. Módosítsd minden fájl helyét a használatával 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. Állítsd meg és indítsd újra az SQL Server példányt.

  4. Ellenőrizd a fájlváltást.

    SELECT name, physical_name
    FROM sys.master_files
    WHERE database_id = DB_ID('tempdb');
    
  5. Töröld az tempdb.mdf és a templog.ldf fájlokat az eredeti helyükről.

H. Fájlcsoport alapértelmezett beállítása

A következő példa a Test1FG1 B példában létrehozott fájlcsoportot teszi alapértelmezett fájlcsoportnak. Ezután az alapértelmezett fájlcsoport visszaállítódik a PRIMARY fájlcsoportra. Fontos megjegyezni, hogy PRIMARY zárójelekkel vagy idézőjelekkel kell elhatárolni.

USE master;
GO
ALTER DATABASE AdventureWorks2022
MODIFY FILEGROUP Test1FG1 DEFAULT;
GO
ALTER DATABASE AdventureWorks2022
MODIFY FILEGROUP [PRIMARY] DEFAULT;
GO

I. Fájlcsoport hozzáadása ALTER DATABASE használatával

A következő példa hozzáadja az adatbázishoz FILEGROUP az a , amely tartalmazza a FILESTREAM záradékot FileStreamPhotoDB .

--Create and add a FILEGROUP that CONTAINS the FILESTREAM clause.
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

A következő példa hozzáadja az adatbázishoz FILEGROUP az a , amely tartalmazza a MEMORY_OPTIMIZED_DATA záradékot xtp_db . A fájlcsoport memóriaoptimalizált adatokat tárol.

--Create and add a FILEGROUP that CONTAINS the MEMORY_OPTIMIZED_DATA clause.
ALTER DATABASE xtp_db
ADD FILEGROUP xtp_fg
CONTAINS MEMORY_OPTIMIZED_DATA;
GO

--Add a file for storing memory optimized data to FILEGROUP
ALTER DATABASE xtp_db
ADD FILE
(
  NAME='xtp_mod',
  FILENAME='d:\data\xtp_mod'
)
TO FILEGROUP xtp_fg;
GO

J. Változtasd meg a fájlcsoportot úgy, hogy amikor egy fájl eléri az automatikus növekedési küszöböt, akkor az összes fájlcsoport fájlja növekedjen

Az alábbi példa generálja a szükséges ALTER DATABASE utasításokat az olvasás-írás fájlcsoportok módosításához a AUTOGROW_ALL_FILES beállítással.

--Generate ALTER DATABASE ... MODIFY FILEGROUP statements
--so that all read-write filegroups grow at the same time.
SET NOCOUNT ON;

DROP TABLE IF EXISTS #tmpdbs
CREATE TABLE #tmpdbs (id INT IDENTITY(1,1), [dbid] INT, [dbname] sysname, isdone BIT);

DROP TABLE IF EXISTS #tmpfgs
CREATE TABLE #tmpfgs (id INT IDENTITY(1,1), [dbid] INT, [dbname] sysname, fgname sysname, isdone BIT);

INSERT INTO #tmpdbs ([dbid], [dbname], [isdone])
SELECT database_id, name, 0 FROM master.sys.databases (NOLOCK) WHERE is_read_only = 0 AND state = 0;

DECLARE @dbid INT, @query VARCHAR(1000), @dbname sysname, @fgname sysname

WHILE (SELECT COUNT(id) FROM #tmpdbs WHERE isdone = 0) > 0
BEGIN
  SELECT TOP 1 @dbname = [dbname], @dbid = [dbid] FROM #tmpdbs WHERE isdone = 0

  SET @query = 'SELECT ' + CAST(@dbid AS NVARCHAR) + ', ''' + @dbname + ''', [name], 0 FROM [' + @dbname + '].sys.filegroups WHERE [type] = ''FG'' AND is_read_only = 0;'
  INSERT INTO #tmpfgs
  EXEC (@query)

  UPDATE #tmpdbs
  SET isdone = 1
  WHERE [dbid] = @dbid
END;

IF (SELECT COUNT(ID) FROM #tmpfgs) > 0
BEGIN
  WHILE (SELECT COUNT(id) FROM #tmpfgs WHERE isdone = 0) > 0
  BEGIN
    SELECT TOP 1 @dbname = [dbname], @dbid = [dbid], @fgname = fgname FROM #tmpfgs WHERE isdone = 0

    SET @query = 'ALTER DATABASE [' + @dbname + '] MODIFY FILEGROUP [' + @fgname + '] AUTOGROW_ALL_FILES;'

    PRINT @query

    UPDATE #tmpfgs
    SET isdone = 1
    WHERE [dbid] = @dbid AND fgname = @fgname
  END
END;
GO

Lásd még:

* felügyelt SQL-példány *
 

 

Azure SQL Managed Instance

Használd ezt az utasítást egy Azure SQL Managed Instance adatbázissal.

Felügyelt Azure SQL-példány szintaxisa

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

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

<filespec>::=
(
    NAME = logical_file_name
    [ , SIZE = size [ KB | MB | GB | TB ] ]
    [ , MAXSIZE = { max_size [ KB | MB | GB | TB ] | UNLIMITED } ]
    [ , FILEGROWTH = growth_increment [ KB | MB | GB | TB| % ] ]
)

<add_or_modify_filegroups>::=
{
    | ADD FILEGROUP filegroup_name
    | REMOVE FILEGROUP filegroup_name
    | MODIFY FILEGROUP filegroup_name
        { <filegroup_updatability_option>
        | DEFAULT
        | NAME = new_filegroup_name
        | { AUTOGROW_SINGLE_FILE | AUTOGROW_ALL_FILES }
        }
}  
<filegroup_updatability_option>::=
{
    { READONLY | READWRITE }
    | { READ_ONLY | READ_WRITE }
}

Arguments

<add_or_modify_files>::=

Megadja a hozzáadásra, eltávolításra vagy módosításra váró fájlt.

database_name Az adatbázis nevét kell módosítani?

ADD FILE Fájlt ad hozzá az adatbázishoz.

TO FILEGROUP { filegroup_name } Megadja azt a fájlcsoportot, amelyhez a megadott fájlt kell hozzáadni. A jelenlegi fájlcsoportok és az alapértelmezett fájlcsoport megjelenítéséhez használja a sys.filegroups katalógus nézetet.

FÁJL ELTÁVOLÍTÁSA logical_file_name Eltávolítja a logikai fájlleírást egy SQL Server példányból, és törli a fizikai fájlt. A fájlt nem lehet eltávolítani, hacsak nem üres.

logical_file_name Ez az a logikai név, amelyet az SQL Serverben használnak a fájl hivatkozásakor?

MODIFY FILE Megadja a módosítandó fájlt. Egyszerre csak egy <fájlspecifikációs> tulajdonság változtatható. A NAME-et mindig meg kell tüntetni a <fájlspecifikációban> , hogy azonosítsuk a módosítandó fájlt. Ha a SIZE van megadva, az új méretnek nagyobbnak kell lennie, mint a jelenlegi fájlméret.

<filespec>::=

Szabályozza a fájltulajdonságokat.

NAME logical_file_name Megadja a fájl logikai nevét.

logical_file_name Ez az a logikai név, amelyet egy SQL Server példányban használnak a fájl hivatkozásakor.

NEWNAME new_logical_file_name Új logikai nevet ad a fájlnak.

new_logical_file_name Ez a név a meglévő logikai fájlnév helyettesítésére szolgál. A névnek egyedinek kell lennie az adatbázisban, és megfelelnie kell az azonosítók szabályainak. A név lehet karakter vagy Unicode állandó, normál azonosító vagy definiált azonosító.

SIZE size A fájlméretet határozza meg.

méret Az akta mérete.

Ha az ADD FILE (ADD FILE) megadja, a méret a fájl eredeti mérete. Ha a MODIFY FILE beállítással van megadva, a méret a fájl új mérete, és nagyobbnak kell lennie a jelenlegi fájlméretnél.

Ha az elsődleges fájl mérete nem van megadva, az SQL Server a modelladatbázisban lévő elsődleges fájl méretét használja. Ha másodlagos adatfájlt vagy naplófájlt jelölnek meg, de a fájl mérete nem van megadva, az Adatbázis Motor 1 MB-os fájlt jelent.

A KB, MB, GB és TB toldalitagok segítségével megadhatók kilobájt, megabájt, gigabájt vagy terabájt. Az alapértelmezett érték az MB. Határozz meg egy teljes számot, és ne tizedesszámot vegyél fel. Egy megabájt történek megadásához az értéket kilobájtokra alakítsuk át, megszorozva a számot 1024-re. Például 1536 KB értéket jelölj meg 1,5 MB helyett (1,5 x 1024 = 1536).

MAXSIZE { max_size| KORLÁTLAN } Megadja a fájl maximális méretét, amelyre a fájl nőhet.

max_size A maximális fájlméret. A KB, MB, GB és TB toldalitagok segítségével megadhatók kilobájt, megabájt, gigabájt vagy terabájt. Az alapértelmezett érték az MB. Határozz meg egy teljes számot, és ne tizedesszámot vegyél fel. Ha max_size nincs megadva, a fájl mérete nő, amíg a lemez tele nem lesz.

UNLIMITED Megadja, hogy a fájl növekedjen, amíg a lemez tele nem lesz. Az SQL Serverben a korlátlan növekedéssel megadott naplófájlok maximális mérete 2 TB, az adatfájlok mérete pedig legfeljebb 16 TB.

FILEGROWTH growth_increment Megadja a fájl automatikus növekedési növelését. Egy fájl FILEGROWTH beállítása nem haladhatja meg a MAXSIZE beállítást.

growth_increment Az a hely, amely minden alkalommal hozzáadódik a fájlhoz, amikor új helyre van szükség.

Az érték megadható MB, KB, GB, TB vagy százalékban (%). Ha egy számot MB, KB vagy % utótag nélkül jelölnek meg, akkor az alapértelmezett MB. Amikor % meg van jelölve, a növekedési inkrement mérete a fájl méretének megadott százaléka az increment megtörtént időpontjában. A megadott méretet a legközelebbi, 64 KB-ra kerekítik.

0 érték azt jelzi, hogy az automatikus növekedés kikapcsolva, és nincs szabad további hely.

Ha a FILEGROWTH nincs megadva, az alapértelmezett értékek a következők:

  • Adat 16 MB
  • Naplófájlok 16 MB

<add_or_modify_filegroups>::=

Fájlcsoportot adj hozzá, módosítsd vagy távolíts el az adatbázisból.

FÁJLCSOPORT HOZZÁADÁSA filegroup_name Egy fájlcsoportot ad az adatbázishoz.

A következő példa létrehoz egy fájlcsoportot, amelyet egy sql_db_mi nevű adatbázishoz adnak hozzá, és egy fájlt hozzáadnak a fájlcsoporthoz.

ALTER DATABASE sql_db_mi ADD FILEGROUP sql_db_mi_fg;
GO
ALTER DATABASE sql_db_mi ADD FILE (NAME='sql_db_mi_mod') TO FILEGROUP sql_db_mi_fg;

FÁJLCSOPORT ELTÁVOLÍTÁSA filegroup_name Eltávolít egy fájlcsoportot az adatbázisból. A fájlcsoport nem távolítható el, hacsak nem üres. Először távolítsd el az összes fájlt a fájlcsoportból. További információért lásd a "REMOVE FILE logical_file_name" (REMOVE FILE ), a korábbi témában.

FÁJLCSOPORT MÓDOSÍTÁSA filegroup_name { <filegroup_updatability_option> | ALAPÉRTELMEZETT | NÉV =new_filegroup_name } Módosítja a fájlcsoportot úgy, hogy az állapotot READ_ONLY vagy READ_WRITE-re állítja be, a fájlcsoportot az adatbázis alapértelmezett fájlcsoportjává teszi, vagy megváltoztatja a fájlcsoport nevét.

<filegroup_updatability_option> A fájlcsoportnak állítja be az csak olvasható vagy olvasás/írás tulajdonságot.

ALAPÉRTELMEZÉS Megváltoztatja az alapértelmezett adatbázis fájlcsoportot filegroup_name-re. Az adatbázisban csak egy fájlcsoport lehet alapértelmezett fájlcsoport. További információért lásd: Adatbázis fájlok és fájlcsoportok.

NAME = new_filegroup_name Megváltoztatja a fájlcsoport nevét new_filegroup_name-re.

AUTOGROW_SINGLE_FILE

Ha egy fájl a fájlcsoportban eléri az automatikus növekedési küszöböt, csak az a fájl nő. Ez az alapértelmezett érték.

AUTOGROW_ALL_FILES

Ha a fájlcsoport egy fájlja eléri az automatikus növekedési küszöbértéket, a fájlcsoport összes fájlja növekszik.

<filegroup_updatability_option>::=

A fájlcsoportnak állítja be az olvasható vagy olvasás/írás tulajdonságot.

READ_ONLY | READONLY Megadja, hogy a fájlcsoport csak olvasható. Objektumok frissítése nem engedélyezett. Az elsődleges fájlcsoport nem lehet csak olvashatóvá tenni. Az állapot módosításához kizárólagos hozzáféréssel kell rendelkeznie az adatbázishoz. További információ: SINGLE_USER záradék.

Mivel egy csak olvasható adatbázis nem engedélyezi az adatmódosításokat:

  • Az automatikus helyreállítás a rendszer indításakor kihagyható.
  • Az adatbázis zsugorítása nem lehetséges.
  • Az csak olvasható adatbázisokban nem fordul elő zárolás. Ez gyorsabb lekérdezési teljesítményt eredményezhet.

Megjegyzés:

A READONLY kulcsszót eltávolítják a Microsoft SQL Server jövőbeli verziójában. Kerüld az READONLY használatát új fejlesztői munkákban, és tervezd módosítani azokat az alkalmazásokat, amelyek jelenleg csak READONLY-t használnak. Használj inkább READ_ONLY.

READ_WRITE | READWRITE Megadja, hogy a csoport READ_WRITE. A fájlcsoport objektumaihoz engedélyezett frissítések. Az állapot módosításához kizárólagos hozzáféréssel kell rendelkeznie az adatbázishoz. További információ: SINGLE_USER záradék.

Megjegyzés:

A kulcsszót READWRITE a Microsoft SQL Server jövőbeli verziójában eltávolítják. Kerüld az új fejlesztési munkák használatátREADWRITE, és tervezd meg a jelenleg használt alkalmazások READWRITE módosítását.READ_WRITE

Ezeknek az opcióknak az állapotát meghatározható a sys.databases katalógusnézet is_read_only oszlopának vagy a függvény Frissíthetőség tulajdonságának DATABASEPROPERTYEX vizsgálatával.

Megjegyzések

Az adatbázis méretének csökkentéséhez használja DBCC SHRINKDATABASE.

Nem lehet fájlt hozzáadni vagy eltávolítani, amíg egy BACKUP utasítás fut.

Minden adatbázishoz legfeljebb 32 767 fájl és 32 767 fájlcsoport adható meg.

Példák

A. Fájl hozzáadása egy adatbázisba

A következő példa egy 5 MB-os adatfájlt ad hozzá az AdventureWorks2025 adatbázishoz.

USE master;
GO
ALTER DATABASE AdventureWorks2022
ADD FILE
(
  NAME = Test1dat2,
    SIZE = 5MB,
    MAXSIZE = 100MB,
    FILEGROWTH = 5MB
);
GO

B. Két fájlcsoportot hozzáadni egy adatbázishoz

A következő példa létrehozza a fájlcsoportot Test1FG1 az AdventureWorks2025 adatbázisban, és két 5 MB-os fájlt ad hozzá a fájlcsoporthoz.

USE master
GO
ALTER DATABASE AdventureWorks2022
ADD FILEGROUP Test1FG1;
GO
ALTER DATABASE AdventureWorks2022
ADD FILE
(
    NAME = test1dat3,
    SIZE = 5MB,
    MAXSIZE = 100MB,
    FILEGROWTH = 5MB
),
(
    NAME = test1dat4,
    SIZE = 5MB,
    MAXSIZE = 100MB,
    FILEGROWTH = 5MB
)  
TO FILEGROUP Test1FG1;
GO

C. Fájl eltávolítása adatbázisból

A következő példa eltávolít egy fájlt, amelyet a B példában hozzáadtak.

USE master;
GO
ALTER DATABASE AdventureWorks2022
REMOVE FILE test1dat4;
GO

D. Fájl módosítása

A következő példa növeli a B példában hozzáadott fájlok egyikének méretét. Az ALTER DATABASE a MODIFY FILE parancsgal csak egy fájlméretet tudsz nagyobbá tenni, így ha kisebbre akarod tenni a fájlméretet, DBCC SHRINKFILE-t kell használnod.

USE master;
GO

ALTER DATABASE AdventureWorks2022
MODIFY FILE
(NAME = test1dat3,
SIZE = 200MB);
GO

Ez a példa egy adatfájl méretét 100 MB-ra csökkenti, majd megadja a méretet ezen az összegen.

USE AdventureWorks2022;
GO

DBCC SHRINKFILE (AdventureWorks2022_data, 100);
GO

USE master;
GO

ALTER DATABASE AdventureWorks2022
MODIFY FILE
(NAME = test1dat3,
SIZE = 200MB);
GO

E. Fájlcsoport alapértelmezett beállítása

A következő példa a Test1FG1 B példában létrehozott fájlcsoportot teszi alapértelmezett fájlcsoportnak. Ezután az alapértelmezett fájlcsoport visszaállítódik a PRIMARY fájlcsoportra. Fontos megjegyezni, hogy PRIMARY zárójelekkel vagy idézőjelekkel kell elhatárolni.

USE master;
GO
ALTER DATABASE AdventureWorks2022
MODIFY FILEGROUP Test1FG1 DEFAULT;
GO
ALTER DATABASE AdventureWorks2022
MODIFY FILEGROUP [PRIMARY] DEFAULT;
GO

F. Fájlcsoport hozzáadása ALTER DATABASE használatával

A következő példa hozzáad az adatbázishoz FILEGROUPMyDB .

--Create and add a FILEGROUP
ALTER DATABASE MyDB
ADD FILEGROUP NewFG;
GO

--Add a file to FILEGROUP
ALTER DATABASE MyDB
ADD FILE
(
    NAME= 'MyFile',
)
TO FILEGROUP NewFG;
GO

G. Változtasd meg a fájlcsoportot úgy, hogy amikor egy fájl eléri az automatikus növekedési küszöböt, akkor az összes fájlcsoport fájlja növekedjen

Az alábbi példa generálja a szükséges ALTER DATABASE utasításokat az olvasás-írás fájlcsoportok módosításához a AUTOGROW_ALL_FILES beállítással.

--Generate ALTER DATABASE ... MODIFY FILEGROUP statements
--so that all read-write filegroups grow at the same time.
SET NOCOUNT ON;

DROP TABLE IF EXISTS #tmpdbs
CREATE TABLE #tmpdbs (id INT IDENTITY(1,1), [dbid] INT, [dbname] sysname, isdone BIT);

DROP TABLE IF EXISTS #tmpfgs
CREATE TABLE #tmpfgs (id INT IDENTITY(1,1), [dbid] INT, [dbname] sysname, fgname sysname, isdone BIT);

INSERT INTO #tmpdbs ([dbid], [dbname], [isdone])
SELECT database_id, name, 0 FROM master.sys.databases (NOLOCK) WHERE is_read_only = 0 AND state = 0;

DECLARE @dbid INT, @query VARCHAR(1000), @dbname sysname, @fgname sysname

WHILE (SELECT COUNT(id) FROM #tmpdbs WHERE isdone = 0) > 0
BEGIN
    SELECT TOP 1 @dbname = [dbname], @dbid = [dbid] FROM #tmpdbs WHERE isdone = 0

    SET @query = 'SELECT ' + CAST(@dbid AS NVARCHAR) + ', ''' + @dbname + ''', [name], 0 FROM [' + @dbname + '].sys.filegroups WHERE [type] = ''FG'' AND is_read_only = 0;'
    INSERT INTO #tmpfgs
    EXEC (@query)

    UPDATE #tmpdbs
    SET isdone = 1
    WHERE [dbid] = @dbid
END;

IF (SELECT COUNT(ID) FROM #tmpfgs) > 0
BEGIN
    WHILE (SELECT COUNT(id) FROM #tmpfgs WHERE isdone = 0) > 0
    BEGIN
        SELECT TOP 1 @dbname = [dbname], @dbid = [dbid], @fgname = fgname FROM #tmpfgs WHERE isdone = 0

        SET @query = 'ALTER DATABASE [' + @dbname + '] MODIFY FILEGROUP [' + @fgname + '] AUTOGROW_ALL_FILES;'

        PRINT @query

        UPDATE #tmpfgs
        SET isdone = 1
        WHERE [dbid] = @dbid AND fgname = @fgname
    END
END;
GO

Lásd még: