我有一个成功备份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"
}
我想备份有限的数据库列表,而不是所有数据库。 我该怎么做?
答案 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"
}
}