您的位置:首页 > 数据库

批量数据库还原

2015-06-03 15:35 369 查看
在使用前先加载库文件

$assemblylist =
"Microsoft.SqlServer.Management.Common",
"Microsoft.SqlServer.Smo",
"Microsoft.SqlServer.Dmf ",
"Microsoft.SqlServer.Instapi ",
"Microsoft.SqlServer.SqlWmiManagement ",
"Microsoft.SqlServer.ConnectionInfo ",
"Microsoft.SqlServer.SmoExtended ",
"Microsoft.SqlServer.SqlTDiagM ",
"Microsoft.SqlServer.SString ",
"Microsoft.SqlServer.Management.RegisteredServers ",
"Microsoft.SqlServer.Management.Sdk.Sfc ",
"Microsoft.SqlServer.SqlEnum ",
"Microsoft.SqlServer.RegSvrEnum ",
"Microsoft.SqlServer.WmiEnum ",
"Microsoft.SqlServer.ServiceBrokerEnum ",
"Microsoft.SqlServer.ConnectionInfoExtended ",
"Microsoft.SqlServer.Management.Collector ",
"Microsoft.SqlServer.Management.CollectorEnum",
"Microsoft.SqlServer.Management.Dac",
"Microsoft.SqlServer.Management.DacEnum",
"Microsoft.SqlServer.Management.Utility"

foreach ($asm in $assemblylist)
{
$asm = [Reflection.Assembly]::LoadWithPartialName($asm)
}

[align=left]# Set SQL Server instance name[/align]
[align=left]$sqlName= "localhost"[/align]
[align=left] [/align]
[align=left]$backupPath= "e:\zach\"[/align]
[align=left]$destPath = 'c:\SQL Data'[/align]
[align=left] [/align]
[align=left]$sqlServer = New-Object ('Microsoft.SqlServer.Management.Smo.Server') $sqlName[/align]
[align=left]$sqlServer.ConnectionContext .LoginSecure=$false ;[/align]
[align=left]$sqlServer.ConnectionContext .set_Login("sa");[/align]
[align=left]$sqlServer.ConnectionContext .set_Password("jj") [/align]
[align=left] [/align]
[align=left][System.Reflection.Assembly]:: LoadWithPartialName("Microsoft.SqlServer.SMO" ) | Out-Null[/align]
[align=left][System.Reflection.Assembly]:: LoadWithPartialName("Microsoft.SqlServer.SmoExtended" ) | Out-Null[/align]
[align=left] [/align]
[align=left]$items =Get-ChildItem $backupPath[/align]
[align=left]foreach ($item in $items )[/align]
[align=left]{[/align]
[align=left]$dbRestore = new-object ("Microsoft.SqlServer.Management.Smo.Restore")[/align]
[align=left]$dbRestore.Devices .AddDevice ($item .FullName , "File" )[/align]
[align=left] [/align]
[align=left]$dt = $dbRestore .ReadFileList ($sqlServer )[/align]
[align=left]$header = $dbRestore .ReadBackupHeader ($sqlServer )[/align]
[align=left]$db=$header .Rows [0].DatabaseName[/align]
[align=left] [/align]
[align=left]$dbRestore.Database = $db[/align]
[align=left]$db[/align]
[align=left] foreach($r in $dt .Rows )[/align]
[align=left] {[/align]
[align=left] $p=''[/align]
[align=left] $dbRestoreFile = new-object("Microsoft.SqlServer.Management.Smo.RelocateFile" )[/align]
[align=left] $r. LogicalName;[/align]
[align=left] $dbRestoreFile.LogicalFileName = $r .LogicalName ;[/align]
[align=left] $p = $r. PhysicalName.split ("\" )[/align]
[align=left] $destPath+ "\"+ $p[ $p.length -1][/align]
[align=left] $dbRestoreFile.PhysicalFileName = $destPath + "\" +$p[$p.length -1][/align]
[align=left] $dbRestore.RelocateFiles .Add ($dbRestoreFile )[/align]
[align=left] }[/align]
[align=left] $dbRestore. RelocateFiles[/align]
[align=left] $sqlServer. KillAllProcesses($db )[/align]
[align=left] # Call the SqlRestore mathod to complete restore database[/align]
[align=left] $dbRestore.SqlRestore ($sqlServer )[/align]
[align=left] [/align]
[align=left]}[/align]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: