Powershell restore SQL Server database to new database -
i have database $currentdb , want restore backup of $currentdb $newdb. t-sql command looks this:
use [master] alter database [newdb] set single_user rollback immediate restore database [newdb] disk = n'd:\backups\currentdb.bak' file = 1, move n'currentdb' n'd:\databases\newdb.mdf', move n'currentdb_log' n'd:\logs\newdb_log.ldf', nounload, replace, stats = 5 alter database [newdb] set multi_user go i attempting user restore-sqldatabase don't know how -relocatefile
$currentdb = "currentdb" $newdb = "newdb" $newdbmdf = "newdb.mdf" $currentdblog = "currentdb_log" $newdbldf = "newdb_log.ldf" $backupfile = $currentdb + "tonewdb.bak" $relocatedata = new-object microsoft.sqlserver.management.smo.relocatefile($currentdb, $newdbmdf) $relocatelog = new-object microsoft.sqlserver.management.smo.relocatefile($currentdblog, $newdbldf) restore-sqldatabase -serverinstance $sqlserver -database $newdb -backupfile $backupfile -replacedatabase -norecovery -relocatefile @($relocatedata, $relocatelog) i can't seem locate example of attempting do. have seen plenty of examples of restoring databases same name different files. want different name , different file names. open suggestions.
you don't have use smo because your're in powershell.
import-module sqlps $database = "newdb" $backuplocation = "d:\backups\currentdb.bak" $datafilelocation = "d:\databases\newdb.mdf" $logfilelocation = "d:\logs\newdb_log.ldf" $sql = @" use [master] alter database [$database] set single_user rollback immediate restore database [$database] disk = n'$backuplocation' file = 1, move n'currentdb' n'$datafilelocation', move n'currentdb_log' n'$logfilelocation', nounload, replace, stats = 5 alter database [$database] set multi_user "@ invoke-sqlcmd $sql and if don't have sqlps installed, can use system.data.sqlclient powershell run tsql.
Comments
Post a Comment