Megosztás:


Felhasználói adatbázisok áthelyezése

A következőkre vonatkozik:SQL Server

Az SQL Serverben a felhasználói adatbázis adatainak, naplóinak és teljes szövegű katalógusfájljainak új helyre való áthelyezéséhez adja meg az új fájl helyét az FILENAME utasítás záradékában. Ez a módszer az adatbázisfájlok ugyanabban a példányban az SQL Serveren belüli áthelyezésére vonatkozik. Ha egy adatbázist az SQL Server egy másik példányára vagy egy másik kiszolgálóra szeretne áthelyezni, használja biztonsági mentést, majd állítsa vissza vagy leválasztsa és csatolja a műveleteket.

Jegyzet

Ez a cikk a felhasználói adatbázisfájlok áthelyezését ismerteti. A rendszeradatbázis-fájlok áthelyezésével kapcsolatban lásd: Rendszeradatbázisok áthelyezése.

Megfontolások

Ha egy adatbázist egy másik kiszolgálópéldányra helyez át, hogy konzisztens felhasználói élményt biztosítson a felhasználóknak és alkalmazásoknak, előfordulhat, hogy újra létre kell hoznia az adatbázis metaadatainak egy részét vagy egészét. További információ: Metaadatok kezelése, amikor egy adatbázist elérhetővé tesz egy másik kiszolgálón.

Az SQL Server adatbázismotor egyes funkciói megváltoztatják, hogy az adatbázismotor hogyan tárolja az adatokat az adatbázisfájlokban. Ezek a funkciók az SQL Server adott kiadásaira korlátozódnak. Az ezeket a funkciókat tartalmazó adatbázisok nem helyezhetők át az SQL Server olyan kiadásába, amely nem támogatja őket. A sys.dm_db_persisted_sku_features dinamikus felügyeleti nézettel listázhatja az aktuális adatbázisban engedélyezett kiadásspecifikus funkciókat.

A cikkben szereplő eljárásokhoz az adatbázisfájlok logikai neve szükséges. A név lekéréséhez kérje le a névoszlopot a sys.master_files katalógusnézetben.

A teljes szöveges katalógusok nem a fájlrendszerben, hanem az adatbázisba vannak integrálva. A teljes szöveges katalógusok automatikusan mozognak egy adatbázis áthelyezésekor.

Jegyzet

Győződjön meg arról, hogy a Windows-szolgáltatásfiókok és -engedélyek konfigurálása szolgáltatásfiók rendelkezik engedélyekkel a fájlrendszer új fájlhelyéhez. További információ: Fájlrendszer-engedélyek konfigurálása adatbázismotor-hozzáférési.

Tervezett áthelyezési eljárás

Ha egy tervezett áthelyezés részeként át szeretne helyezni egy adatot vagy naplófájlt, kövesse az alábbi lépéseket:

  1. Minden áthelyezendő fájl esetében futtassa az alábbi utasítást.

    ALTER DATABASE database_name
        MODIFY FILE (NAME = logical_name, FILENAME = 'new_path\os_file_name');
    
  2. Futtassa az alábbi utasítást az adatbázis offline állapotba helyezéséhez.

    ALTER DATABASE database_name
        SET OFFLINE;
    

    Ez a művelet kizárólagos hozzáférést igényel az adatbázishoz. Ha egy másik kapcsolat meg van nyitva az adatbázis számára, a ALTER DATABASE utasítás mindaddig le lesz tiltva, amíg az összes kapcsolat be nem záródik. A viselkedés felülbírálásához használja a WITH <termination> záradékot. Ha például automatikusan vissza szeretné állítani és leválasztani az adatbázis összes többi kapcsolatát, használja a következőt:

    ALTER DATABASE database_name
         SET OFFLINE
         WITH ROLLBACK IMMEDIATE;
    
  3. Helyezze át a fájlt vagy fájlokat az új helyre.

  4. Futtassa a következő utasítást.

    ALTER DATABASE database_name
        SET ONLINE;
    
  5. Ellenőrizze a fájlmódosítást az alábbi lekérdezés futtatásával.

    SELECT name,
           physical_name AS CurrentLocation,
           state_desc
    FROM sys.master_files
    WHERE database_id = DB_ID(N'<database_name>');
    

Áthelyezés ütemezett lemezkarbantartáshoz

Ha egy fájlt ütemezett lemezkarbantartási folyamat részeként szeretne áthelyezni, kövesse az alábbi lépéseket:

  1. Minden áthelyezendő fájl esetében futtassa az alábbi utasítást.

    ALTER DATABASE database_name
        MODIFY FILE (NAME = logical_name, FILENAME = 'new_path\os_file_name');
    
  2. A karbantartás elvégzéséhez állítsa le az SQL Server-példányt, vagy állítsa le a rendszert. További információ: SQL Server-szolgáltatások indítása, leállítása, szüneteltetése, folytatása és újraindítása.

  3. Helyezze át a fájlt vagy fájlokat az új helyre.

  4. Indítsa újra az SQL Server vagy a kiszolgáló példányát. További információ: SQL Server-szolgáltatások indítása, leállítása, szüneteltetése, folytatása és újraindítása

  5. Ellenőrizze a fájlmódosítást az alábbi lekérdezés futtatásával.

    SELECT name,
           physical_name AS CurrentLocation,
           state_desc
    FROM sys.master_files
    WHERE database_id = DB_ID(N'<database_name>');
    

Hibahelyreállítási eljárás

Ha hardverhiba miatt át kell helyezni egy fájlt, az alábbi lépésekkel helyezze át a fájlt egy új helyre.

Fontos

Ha az adatbázis nem indítható el, vagyis gyanús módban vagy nem helyreállított állapotban van, csak a sysadmin rögzített szerepkör tagjai helyezhetik át a fájlt.

  1. Állítsa le az SQL Server-példányt, ha már elindult.

  2. Indítsa el az SQL Server-példányt mastercsak helyreállítási módban az alábbi parancsok egyikének megadásával a parancssorban.

  3. Az egyes fájlok áthelyezéséhez használja sqlcmd parancsokat vagy az SQL Server Management Studiót az alábbi utasítás futtatásához.

    ALTER DATABASE database_name
        MODIFY FILE (NAME = logical_name, FILENAME = 'new_path\os_file_name');
    

    Az sqlcmd segédprogram használatáról további információt az sqlcmd – a segédprogramcímű cikkben talál.

  4. Lépjen ki az sqlcmd segédprogramból vagy az SQL Server Management Studióból.

  5. Állítsa le az SQL Server-példányt.

  6. Helyezze át a fájlt vagy fájlokat az új helyre.

  7. Indítsa el az SQL Server-példányt. Futtassa pl. a következőt: NET START MSSQLSERVER.

  8. Ellenőrizze a fájlmódosítást az alábbi lekérdezés futtatásával.

    SELECT name,
           physical_name AS CurrentLocation,
           state_desc
    FROM sys.master_files
    WHERE database_id = DB_ID(N'<database_name>');
    

Példák

Az alábbi példa egy tervezett áthelyezés részeként áthelyezi a AdventureWorks2025 naplófájlt egy új helyre.

  1. Ellenőrizze, hogy a master adatbázis kontextusában van.

    USE master;
    GO
    
  2. Adja vissza a logikai fájl nevét.

    SELECT name,
           physical_name AS CurrentLocation,
           state_desc
    FROM sys.master_files
    WHERE database_id = DB_ID(N'AdventureWorks2022')
          AND type_desc = N'LOG';
    GO
    
  3. Állítsa be az adatbázist offline állapotba.

    ALTER DATABASE AdventureWorks2022
        SET OFFLINE;
    GO
    
  4. Fizikailag helyezze át a fájlt egy új helyre. Az alábbi utasításban módosítsa a FILENAME megadott elérési utat a fájl új helyére a kiszolgálón.

    ALTER DATABASE AdventureWorks2022
        MODIFY FILE (NAME = AdventureWorks2022_Log, FILENAME = 'C:\NewLoc\AdventureWorks2022_Log.ldf');
    GO
    
    ALTER DATABASE AdventureWorks2022
        SET ONLINE;
    GO
    
  5. Ellenőrizze az új helyet.

    SELECT name,
           physical_name AS CurrentLocation,
           state_desc
    FROM sys.master_files
    WHERE database_id = DB_ID(N'AdventureWorks2022')
          AND type_desc = N'LOG';