Příznaky
Když obnovujete databázi ze zálohy pomocí možnosti with Replace (v systému Microsoft SQL Server 2012), mohou fyzické názvy souborů obnovené databáze pocházející ze záložní databáze přepsat fyzické názvy souborů existující databáze. Zvažte například následující scénář:
-
Máte dvě instance SQL serveru, instance a InstanceB.
-
Máte databázi se stejným názvem, SQLDB v každé instanci systému SQL Server.
-
V instanci @ je název datového souboru databáze SQLDB DB1_InstanceA. mdf a název souboru protokolu je DB1_InstanceA. ldf.
-
V InstanceB je název datového souboru databáze SQLDB DB1_InstanceB. mdf a název souboru protokolu je DB1_InstanceB. ldf.
-
Pokusíte se obnovit zálohu databáze SQLDB z instance na databázi SQLDB z InstanceB pomocí možnosti with REplace (obnovit) v příkazu Restore .
V tomto scénáři se názvy fyzických souborů na SQLDB na InstanceB změní na DB1_InstanceA. mdf a DB1_InstanceA. ldf.
Příčina
Toto chování je záměrné v systému SQL Server 2012.
Alternativní řešení
Tento problém můžete vyřešit tak, že nepoužijete možnost with Replace (s ) příkazu Restore . Místo toho použijte možnost s možností přesunout .Poznámka Možnost s možností přesunout umožňuje změnit fyzický název souboru.
Další informace
Možnost s přesunutím je nezbytná jenom při prvním použití příkazu obnovit . Když se pokusíte obnovit databázi ze zálohy, SQL Server porovná hodnoty rozvětvenosti databáze. V závislosti na tom, jestli se tyto hodnoty shodují, pak zálohovací sklad provede následující akce:
-
Pokud se zobrazí shoda, zálohovací sklad bude dál používat názvy souborů cílové databáze.
-
Pokud se hodnoty liší, zálohovací sklad nahradí názvy fyzických souborů cílové databáze pomocí názvů ze zálohovacího skladu.
Pokud použijete možnost with Move (s ) s příkazem obnovit , budou odebrány následující akce:
-
Na cílovém serveru se vytvoří nová větev obnovení.
-
Při další operaci obnovení se ID větve obnovení ze zálohovacího skladu shodují s ID cílového serveru.
-
Příkaz obnovit , který se používá společně s možností with REplace (nahradit ), zachová fyzické názvy na cílovém serveru.
Další informace o příkazu obnovit najdete v článku obnovení (Transact-SQL) .