I have SQL Server 2012 Developer installed on my machine. I also installed SQL Server 2014 management objects, which are probably the source of the problem.
I am writing a module to automate some common development tasks through Powershell. One of them is to simply copy the existing database into a new database.
I know that there are three different ways to back up and restore: executing SQL statements, SMO objects, and SQLPS cmdlets. I'm interested in the SQLPS route. Here is my function:
push-location import-module sqlps -disablenamechecking pop-location function Copy-Database { param ( [string] $database, [string] $newDatabase ) $backupFile = "$database-{0:yyyyMMddhhmmss}.bak" -f (get-date) backup-sqldatabase -serverinstance $defaultServerInstance -database $database -backupfile $backupFile -copyonly $solutionName = $newDatabase $mdf = New-Object Microsoft.SqlServer.Management.Smo.RelocateFile("MyDb_Data", "$defaultDatabaseRootPath\$solutionName\$newDatabase.mdf") $ldf = New-Object Microsoft.SqlServer.Management.Smo.RelocateFile("MyDb_Log", "$defaultDatabaseRootPath\$solutionName\$newDatabase.ldf") restore-sqldatabase -serverinstance $defaultServerInstance -database $newDatabase -backupfile $backupFile -RelocateFile @($mdf,$ldf) }
It backs up the database, but when it tries to restore, I get the following error:
Restore-SqlDatabase: Unable to bind 'RelocateFile' parameter. I can not convert the value "Microsoft.SqlServer.Management.Smo.RelocateFile" enter "Microsoft.SqlServer.Management.Smo.RelocateFile" to enter the type "Microsoft.SqlServer.Management.Smo.RelocateFile".
This issue is also described here: Issues with the RelocateFile property in the Restore-SqlDatabase cmdlet
I agree that the problem may be a conflict in assemblies. The accepted answer offers two suggestions:
- Make sure the versions match.
- Use the Microsoft.SqlServer.Management.Smo.Restore.SqlRestore method instead of the Restore-SqlDatabase cmdlet.
However, they explain how to do # 2. I want to know how to get this to work using the Restore-SqlDatabase .
source share