2015-09-15 5 views
-1

Я пытаюсь восстановить базу данных в VM как часть нового процесса подготовки виртуальной машины. Однако, когда я пытаюсь следующую команду, чтобы восстановить базу данных:Восстановление SQL Server 2008 .bak на экземпляр сервера SQL Server 2014 через PowerShell

Restore-SqlDatabase -ServerInstance . -Database SomeDatabase -BackupFile $latestBackup -ReplaceDatabase 

Это терпит неудачу с ошибкой:

Restore-SqlDatabase : System.Data.SqlClient.SqlError: Directory lookup for the file "C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\SomeDatabase.mdf" failed with the operating system error 3(The system cannot find the path specified.). 
At line:27 char:1 
+ Restore-SqlDatabase -ServerInstance . -Database SomeDatabase -BackupFile $latestB ... 
+  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
+ CategoryInfo   : InvalidOperation: (:) [Restore-SqlDatabase], SmoException 
+ FullyQualifiedErrorId : ExecutionFailed,Microsoft.SqlServer.Management.PowerShell.RestoreSqlDatabaseCommand 

Это сбивает с толку, так как с помощью SQL Server 2014 имеет тот же самый путь, но в MSSQL12.MSSQLSERVER вместо MSSQL10.MSSQLSERVER, который ищет командлет Restore-SqlDatabase. База данных с правильным именем уже существует в местоположении MSSQL12.MSSQLSERVER.

Как я могу сообщить командлету, чтобы восстановить его в нужную папку?

ответ

0

Оказывается, на самом деле это невозможно (что я могу найти) для восстановления такой базы данных. Я вернулся ВМ использовать SQL-сервер соответствия, и использовать следующую команду, чтобы восстановить базу данных:

Invoke-Sqlcmd -Query "RESTORE DATABASE [SomeDatabase] FROM DISK = N'C:\$latestBackup' WITH FILE = 1, MOVE N'SomeDatabase' TO N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\SomeDatabase.mdf', MOVE N'SomeDatabase_log' TO N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\SomeDatabase.ldf', NOUNLOAD, STATS = 10" 

Это был получен с помощью среды SQL Server Management Studio с функциональностью «Script», где я создал восстановление и экспортирована эквивалентный SQL.

1

Вы можете сделать это, указав файлы местоположения в качестве объектов и передачи их восстановления-SQLDatabase с параметром -RelocateFile

$RelocateData = New-Object Microsoft.SqlServer.Management.Smo.RelocateFile("MainDB_Data", "c:\MySQLServer\MainDB.mdf") 
$RelocateLog = New-Object Microsoft.SqlServer.Management.Smo.RelocateFile("MainDB_Log", "c:\MySQLServer\MainDB.ldf") 
Restore-SqlDatabase -ServerInstance "Computer\Instance" -Database "MainDB" -BackupFile "\\mainserver\databasebackup\MainDB.trn" -RelocateFile @($RelocateData,$RelocateLog) 

https://technet.microsoft.com/en-us/library/mt683379%28v=sql.120%29.aspx

Смежные вопросы