sql 收集旧服务器实例中的所有DB并生成还原脚本。我在移动数据库时使用了这个

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql 收集旧服务器实例中的所有DB并生成还原脚本。我在移动数据库时使用了这个相关的知识,希望对你有一定的参考价值。

$line = ""
$line = "USE [master]`r`n"
Get-ChildItem "C:\DBBackup\DBBackup" -Filter *.BAK | 
Foreach-Object {
    $name = $_.Name.Replace(".BAK","")

    $line += "RESTORE DATABASE [" + $name + "_2010] FROM  DISK = N'" + $_.FullName
    $line += "' WITH  FILE = 1,  MOVE N'" + $name + "'"
    $line += " TO N'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\"
    $line += $name + "_2010.mdf',  MOVE N'" + $name
    $line += "_log' TO N'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\"
    $line += $name + "_2010_log.LDF',  NOUNLOAD,  STATS = 5`r`n"
    $line | out-file c:\temp\temp.txt
   #$_.FullName
}
USE [master]
RESTORE DATABASE [Bdc_Service_DB_6358c473529d48338f0dc0b9720d347e_2010] FROM  DISK = N'C:\DBBackup\DBBackup\Bdc_Service_DB_6358c473529d48338f0dc0b9720d347e.BAK' WITH  FILE = 1,  MOVE N'Bdc_Service_DB_6358c473529d48338f0dc0b9720d347e' TO N'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\Bdc_Service_DB_6358c473529d48338f0dc0b9720d347e_2010.mdf',  MOVE N'Bdc_Service_DB_6358c473529d48338f0dc0b9720d347e_log' TO N'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\Bdc_Service_DB_6358c473529d48338f0dc0b9720d347e_2010_log.LDF',  NOUNLOAD,  STATS = 5
SELECT --name,
'RESTORE DATABASE [' + name + '] FROM  DISK = N''G:\MSSQL11.SP2013\MSSQL\Backup\' + name + '.BAK'' WITH  FILE = 1,  NOUNLOAD,  STATS = 5'
FROM master..sysdatabases
WHERE name NOT IN ('master', 'tempdb', 'model', 'msdb');

以上是关于sql 收集旧服务器实例中的所有DB并生成还原脚本。我在移动数据库时使用了这个的主要内容,如果未能解决你的问题,请参考以下文章

Sql 脚本文件太大 还原数据库

如何把高版本的sqlserver 还原到低版本的 sqlserver

查看服务器状态并查看 SQL 托管实例中的所有定义

怎么把sql数据库从旧电脑移动到新电脑安装?​

sql server 2012的备份怎么还原到sql server 2008

如何转换SQL Server 2008数据库到SQL Server 2005