Симптоми
Когато възстановявате база данни от архивно копие с помощта на опцията със ЗАМЕСТВАНЕ в Microsoft SQL Server 2012, имената на физическите файлове на възстановената база данни, която се предоставя от базата данни за архивиране, могат да ЗАместят физическите файлови имена на съществуваща база данни. Например имайте предвид следния сценарий:
-
Имате два екземпляра на SQL Server, екземпляри и InstanceB.
-
Имате база данни със същото име, SQLDB, във всеки екземпляр на SQL Server.
-
Например името на файла на базата данни на SQLDB е DB1_InstanceA. MDF и името на регистрационния файл е DB1_InstanceA. ldf.
-
В InstanceB име на файл на база данни на SQLDB е DB1_InstanceB. MDF и името на регистрационния файл е DB1_InstanceB. ldf.
-
Опитвате се да възстановите архивно копие на базата данни на SQLDB от инстанция върху базата данни на SQLDB от InstanceB с помощта на опцията " заместване " на командата възстановяване .
В този случай физическите имена на файлове в SQLDB в InstanceB се променят на DB1_InstanceA. MDF и DB1_InstanceA. ldf.
Причина
Това поведение е по проект в SQL Server 2012.
Заобиколно решение
За да заобиколите този проблем, не използвайте опцията със заместване на командата възстановяване . Вместо това използвайте опцията с Move .Забележка Опцията с Move предоставя опция за промяна на името на файла.
Повече информация
Опцията с Move е необходима само първия път, когато използвате командата възстанови . Когато се опитате да възстановите база данни от архивното копие, SQL Server сравнява стойностите на вилицата за възстановяване на базата данни. След това Наборът за архивиране извършва следните действия, в зависимост от това дали тези стойности съвпадат:
-
Ако има съвпадение, наборът от резервни копия продължава да използва имената на файловете на целевата база данни.
-
Ако стойностите са различни, наборът от резервни копия замества физическите имена на файловете на целевата база данни с помощта на имената от архивния набор.
Когато използвате опцията с "при движение " заедно с командата " възстановяване ", се предприемат следните действия:
-
В целевия сървър се създава нова вилка за възстановяване.
-
При следваща операция за възстановяване ИД на вилица за възстановяване от архивния набор се съчетават с ИД на целевия сървър.
-
Командата за възстановяване , която се използва заедно със ОПЦИЯТА със заместване , запазва физическите имена на целевия сървър.
За повече информация относно командата възстановяване вижте възстановяване (преговаряне – SQL)