Powershell:如何备份数据库列表

时间:2014-08-26 17:22:53

标签: sql-server powershell database-backups

我有一个成功备份SQL Server中所有数据库的脚本:

cd SQLSERVER:\SQL\MyServer\DEFAULT\Databases
foreach($database in (Get-ChildItem))
{
$dbName = $database.Name
Backup-SqlDatabase -Database $dbName -BackupFile "C:\Backup\$dbName.bak"
}

我想备份有限的数据库列表,而不是所有数据库。 我该怎么做?

3 个答案:

答案 0 :(得分:2)

您需要要备份的列表,或者某种方式来过滤数据库,然后只需要在那里放一个简单的If / Then。

cd SQLSERVER:\SQL\MyServer\DEFAULT\Databases
$DBList = Get-Content 'C:\Path\To\DBList.txt'
foreach($database in (Get-ChildItem))
{
    $dbName = $database.Name
    If($DBList -contains $dbName){
        Backup-SqlDatabase -Database $dbName -BackupFile "C:\Backup\$dbName.bak"
    }
}

或者您可以更改If / Then以使用某些逻辑(如果您愿意)(每个以VM启动的数据库):

If($dbName -like "VM*")

或引用Server008或Server006的所有内容

If($dbName -match ".*?Server00(6|8).*")

答案 1 :(得分:0)

cd SQLSERVER:\SQL\MyServer\DEFAULT\Databases
foreach($database in (Get-ChildItem))
{
    $dbName = $database.Name
    If ($dbName -eq "databaseName" –OR $dbName -eq "anotherDatabaseName")
    {
        Backup-SqlDatabase -Database $dbName -BackupFile "C:\Backup\$dbName.bak"
    }
}

答案 2 :(得分:0)

您可以在$ arrDBName中设置数据库的名称。

$arrDBName = @("Name1","Name2","Name3")
cd SQLSERVER:\SQL\MyServer\DEFAULT\Databases
foreach($database in (Get-ChildItem))
{
$dbName = $database.Name
If ($arrDBName -contains $dbName) {
    Backup-SqlDatabase -Database $dbName -BackupFile "C:\Backup\$dbName.bak"
}
}