Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Tento článek popisuje, jak přesunout systémové databáze na SQL Serveru. Přesunutí systémových databází může být užitečné v následujících situacích:
Obnova po selhání Například databáze je v podezřelém režimu nebo se vypnula kvůli selhání hardwaru.
Plánované přemístění.
Přemístění pro plánovanou údržbu disků
Následující postupy platí pro přesun databázových souborů ve stejné instanci SQL Serveru. Pokud chcete přesunout databázi do jiné instance SQL Serveru nebo na jiný server, použijte operaci zálohování a obnovení.
Postupy v tomto článku vyžadují logický název databázových souborů. Název získáte dotazem na sloupec s názvem v zobrazení katalogu sys.master_files.
Důležitý
Pokud přesunete systémovou databázi a později znovu sestavíte databázi master, musíte systémovou databázi znovu přesunout, protože operace opětovného sestavení nainstaluje všechny systémové databáze do výchozího umístění.
Přesun systémových databází
Chcete-li přesunout systémová data databáze nebo soubor protokolu jako součást plánované operace přemístění nebo plánované údržby, postupujte takto. To zahrnuje systémové databáze model, msdba tempdb.
Důležitý
Tento postup platí pro všechny systémové databáze s výjimkou master a Resource databází. Postup přesunutí databáze master najdete dále v tomto článku. Databázi Resource nelze přesunout.
Poznamenejte si existující umístění souborů databáze, které chcete přesunout, a to kontrolou zobrazení katalogu sys.master_files.
Ověřte, že účet služby pro databázový stroj SQL Serveru má úplná oprávnění k novému umístění souborů. Další informace naleznete v tématu Konfigurace účtů služeb systému Windows a oprávnění. Pokud účet služby Databázový stroj nemůže řídit soubory v novém umístění, instance SQL Serveru se nespustí.
Pro každý soubor databáze, který se má přesunout, spusťte následující příkaz.
ALTER DATABASE database_name MODIFY FILE (NAME = logical_name, FILENAME = 'new_path\os_file_name');Dokud se služba nerestartuje, databáze bude dál používat data a soubory protokolů v existujícím umístění.
Zastavte instanci SQL Serveru, aby se prováděla údržba. Další informace najdete v tématu Spuštění, zastavení, pozastavení, obnovení a restartování služeb SYSTÉMU SQL Server.
Zkopírujte soubor databáze nebo soubory do nového umístění. Tento krok není nezbytný pro systémovou databázi
tempdb; tyto soubory se automaticky vytvoří v novém umístění.Restartujte instanci SQL Serveru nebo serveru. Další informace najdete v tématu Spuštění, zastavení, pozastavení, obnovení a restartování služeb SYSTÉMU SQL Server.
Ověřte změnu souboru spuštěním následujícího dotazu. Systémové databáze by měly hlásit nová umístění fyzických souborů.
SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files WHERE database_id = DB_ID(N'<database_name>');Vzhledem k tomu, že jste v kroku 5 zkopírovali soubory databáze místo jejich přesunutí, můžete nyní bezpečně odstranit nepoužívané databázové soubory z předchozího umístění.
Následně: Po přesunutí databáze systému msdb
Pokud je databáze msdb přesunuta a databázová pošta je nakonfigurovaná, proveďte následující kroky navíc.
Spuštěním následujícího dotazu ověřte, že je pro databázi
msdbpovolená služba Service Broker.SELECT is_broker_enabled FROM sys.databases WHERE name = N'msdb';Pokud služba Service Broker není pro
msdbpovolená, musí být znovu povolená pro funkci Databázová pošta. Další informace naleznete v tématu ALTER DATABASE ... SET ENABLE_BROKER.ALTER DATABASE msdb SET ENABLE_BROKER WITH ROLLBACK IMMEDIATE;Ověřte, že hodnota
is_broker_enabledje teď 1.Ověřte, že databázová pošta funguje odesláním testovací pošty.
Postup zotavení po selhání
Pokud se soubor musí přesunout kvůli selhání hardwaru, přemísťujte soubor do nového umístění podle těchto kroků. Tento postup platí pro všechny systémové databáze s výjimkou master a Resource databází. Následující příklady používají příkazový řádek systému Windows a nástroj sqlcmd utility.
Důležitý
Pokud databázi nejde spustit, pokud je v podezřelém režimu nebo v neobnoveném stavu, můžou soubor přesunout jenom členové pevné role správce systému.
Ověřte, že účet služby pro databázový stroj SQL Serveru má úplná oprávnění k novému umístění souborů. Další informace naleznete v tématu Konfigurace účtů služeb systému Windows a oprávnění. Pokud účet služby Databázový stroj nemůže řídit soubory v novém umístění, instance SQL Serveru se nespustí.
Pokud je spuštěná, zastavte instanci SQL Serveru.
Spusťte instanci SQL Serveru v režimu obnovení
master-only zadáním jednoho z následujících příkazů na příkazovém řádku. Použití spouštěcího parametru 3608 zabraňuje automatickému spuštění a obnovení jakékoli databáze s výjimkoumasterdatabáze. Další informace naleznete v tématu parametry spuštění a TF3608.Parametry zadané v těchto příkazech jsou citlivé na velikost písmen. Příkazy selžou, když parametry nejsou zadané, jak je znázorněno.
Pro výchozí instanci (MSSQLSERVER) spusťte následující příkaz:
NET START MSSQLSERVER /f /T3608Pro pojmenovanou instanci spusťte následující příkaz:
NET START MSSQL$instancename /f /T3608Další informace najdete v tématu Spuštění, zastavení, pozastavení, obnovení a restartování služeb SYSTÉMU SQL Server.
Ihned po spuštění služby s příznakem trasování 3608 a
/f, spusťte sqlcmd připojení k serveru pro zajištění jednoho dostupného připojení. Pokud například spouštíte sqlcmd místně na stejném serveru jako výchozí instance (MSSQLSERVER) a chcete se připojit pomocí ověřování integrace služby Active Directory, spusťte následující příkaz:sqlcmdPokud se chcete připojit k pojmenované instanci na místním serveru s ověřováním pomocí integrace služby Active Directory:
sqlcmd -S localhost\instancenameDalší informace o syntaxi sqlcmd najdete v části nástroj sqlcmd.
Pro každý soubor, který se má přesunout, použijte příkazy sqlcmd nebo SQL Server Management Studio a spusťte následující příkaz. Další informace o použití nástroje sqlcmd naleznete v tématu sqlcmd – použití nástroje. Jakmile je relace sqlcmd otevřená, spusťte jednou následující příkaz pro přesunutí každého souboru:
ALTER DATABASE database_name MODIFY FILE (NAME = logical_name, FILENAME = 'new_path\os_file_name'); GOUkončete nástroj sqlcmd nebo SQL Server Management Studio.
Zastavte instanci SQL Serveru. Například spusťte
NET STOP MSSQLSERVERna příkazovém řádku.Zkopírujte soubor nebo soubory do nového umístění.
Restartujte instanci SQL Serveru. Například spusťte
NET START MSSQLSERVERna příkazovém řádku.Ověřte změnu souboru spuštěním následujícího dotazu.
SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files WHERE database_id = DB_ID(N'<database_name>');Vzhledem k tomu, že jste v kroku 7 zkopírovali soubory databáze místo jejich přesunutí, můžete nyní bezpečně odstranit nepoužívané databázové soubory z předchozího umístění.
Přesun databáze master
Chcete-li přesunout databázi master, postupujte takto.
Ověřte, že účet služby pro databázový stroj SQL Serveru má úplná oprávnění k novému umístění souborů. Další informace naleznete v tématu Konfigurace účtů služeb systému Windows a oprávnění. Pokud účet služby Databázový stroj nemůže řídit soubory v novém umístění, instance SQL Serveru se nespustí.
V nabídce Start vyhledejte a spusťte SQL Server Configuration Manager. Další informace o očekávaném umístění naleznete v tématu SQL Server Configuration Manager.
V uzlu služby SQL Server klikněte pravým tlačítkem myši na instanci SQL Serveru (například SQL Server (MSSQLSERVER)) a zvolte Vlastnosti.
V dialogovém okně Vlastnosti SQL Serveru (instance_name) vyberte kartu Parametry spuštění.
V poli Existující parametry vyberte parametr
-d. V poli Zadejte spouštěcí parametr změňte parametr na novou cestu k souborumasterdat. Změnu uložte výběrem Aktualizovat.V poli Existující parametry vyberte parametr
-l. V poli určete spouštěcí parametr změňte parametr na novou cestu souboru protokolumaster. Zvolte aktualizovat pro uložení změny.Hodnota parametru datového souboru musí následovat za parametrem
-da hodnota souboru protokolu musí následovat za parametrem-l. Následující příklad ukazuje hodnoty parametrů pro výchozí umístění datového souborumaster.-dC:\Program Files\Microsoft SQL Server\MSSQL<version>.MSSQLSERVER\MSSQL\DATA\master.mdf -lC:\Program Files\Microsoft SQL Server\MSSQL<version>.MSSQLSERVER\MSSQL\DATA\mastlog.ldfPokud je plánované přemístění datového souboru
masterE:\SQLData, hodnoty parametrů by se změnily následujícím způsobem:-dE:\SQLData\master.mdf -lE:\SQLData\mastlog.ldfVýběrem OK uložte změny trvale a zavřete dialogové okno vlastnosti SQL Serveru (instance_name).
Zastavte instanci SQL Serveru tak, že kliknete pravým tlačítkem myši na název instance a zvolíte Zastavit.
Zkopírujte soubory
master.mdfamastlog.ldfdo nového umístění.Restartujte instanci SQL Serveru.
Spuštěním následujícího dotazu ověřte změnu souboru pro databázi
master.SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files WHERE database_id = DB_ID('master');V tomto okamžiku by měl SQL Server běžet normálně. Společnost Microsoft však doporučuje také upravit položku registru na
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\instance_ID\Setup, kde instance_ID je jakoMSSQL13.MSSQLSERVER. V tomto podregistru změňte hodnotuSQLDataRootna novou cestu umístění databázových souborůmaster. Selhání aktualizace registru může způsobit selhání oprav a upgradu.Vzhledem k tomu, že jste v kroku 9 zkopírovali soubory databáze místo jejich přesunutí, můžete nyní bezpečně odstranit nepoužívané databázové soubory z předchozího umístění.
Přesun databáze prostředků
Umístění databáze Resource je \<drive>:\Program Files\Microsoft SQL Server\MSSQL\<version>.<instance_name>\MSSQL\Binn\. Databázi nelze přesunout.
Pokračování: Po přemístění všech systémových databází
Pokud jste přesunuli všechny systémové databáze na nový disk nebo svazek, případně na jiný server s odlišným písmenem disku, proveďte následující aktualizace.
Změňte cestu protokolu agenta SQL Serveru. Pokud tuto cestu neaktualizujete, agent SQL Serveru se nespustí.
Změňte výchozí umístění databáze. Vytvoření nové databáze může selhat, pokud písmeno disku a cesta zadané jako výchozí umístění neexistují.
Změňte cestu protokolu agenta SQL Serveru
Pokud jste přesunuli všechny systémové databáze na nový svazek nebo migrovali na jiný server s jiným písmenem jednotky a cesta k souboru protokolu chyb SQL Agenta SQLAGENT.OUT již neexistuje, proveďte následující aktualizace.
V aplikaci SQL Server Management Studio v Průzkumníku objektů , rozbalte položku Agenta SQL Serveru .
Klikněte pravým tlačítkem na protokoly chyb a vyberte Konfigurovat.
V dialogovém okně Konfigurovat protokoly chyb agenta SQL Serveru zadejte nové umístění souboru SQLAGENT.OUT. Výchozí umístění je
C:\Program Files\Microsoft SQL Server\MSSQL\<version>.<instance_name>\MSSQL\Log\.
Změna výchozího umístění databáze
Z aplikace SQL Server Management Studio se v Průzkumník objektůpřipojte k požadované instanci SQL Serveru. Klikněte pravým tlačítkem myši na instanci a vyberte Vlastnosti.
V dialogovém okně Vlastnosti serveru vyberte Nastavení databáze.
V části Výchozí umístění databázepřejděte do nového umístění pro data i soubory protokolu.
Zastavením a spuštěním služby SQL Serveru dokončete změnu.
Příklady
A. Přesun databáze tempdb
Následující příklad přesune tempdb data a soubory protokolu do nového umístění v rámci plánovaného přemístění.
Spropitné
Využijte tuto příležitost ke kontrole tempdb souborů, abyste získali optimální velikost a umístění. Další informace naleznete v tématu Optimalizace výkonu databáze tempdb v SYSTÉMU SQL Server.
Vzhledem k tomu, že se při každém spuštění instance SQL Serveru znovu vytvoří tempdb, nemusíte fyzicky přesouvat data a soubory protokolů. Soubory se vytvoří v novém umístění při restartování služby v kroku 4. Dokud nebude služba restartována, tempdb nadále pokračuje v používání dat a souborů protokolů v existujícím umístění.
Určete názvy logických souborů databáze
tempdba jejich aktuální umístění na disku.SELECT name, physical_name AS CurrentLocation FROM sys.master_files WHERE database_id = DB_ID(N'tempdb'); GOOvěřte, že účet služby pro databázový stroj SQL Serveru má úplná oprávnění k novému umístění souborů. Další informace naleznete v tématu Konfigurace účtů služeb systému Windows a oprávnění. Pokud účet služby Databázový stroj nemůže řídit soubory v novém umístění, instance SQL Serveru se nespustí.
Změňte umístění každého souboru pomocí
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 = 'F:\SQLLog\templog.ldf'); GODokud se služba nerestartuje,
tempdbnadále používá data a soubory protokolů v existujícím umístění.Zastavte a restartujte instanci SQL Serveru.
Ověřte změnu souboru.
SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files WHERE database_id = DB_ID(N'tempdb');Odstraňte nepoužívané
tempdbsoubory z původního umístění.