如何使用power shell检查SQL Server 2008 R2数据库是否存在
我有一个数据库脚本,它工作得很好,但是我遇到了一个问题,我需要一个如何使用power shell检查SQL Server 2008 R2数据库是否存在,sql,powershell,sql-server-2008-r2,Sql,Powershell,Sql Server 2008 R2,我有一个数据库脚本,它工作得很好,但是我遇到了一个问题,我需要一个if语句来检查用户指定的数据库是否已经存在。如果存在,则脚本应为其创建备份;如果不存在,则脚本应显示错误 这是我的剧本 #Loads Assembly [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SMO") | Out-Null [System.Reflection.Assembly]::LoadWithPartialName("Mi
if
语句来检查用户指定的数据库是否已经存在。如果存在,则脚本应为其创建备份;如果不存在,则脚本应显示错误
这是我的剧本
#Loads Assembly
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SMO") | Out-Null
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SmoExtended") | Out-Null
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.ConnectionInfo") | Out-
Null
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SmoEnum") | Out-Null
$server = New-Object ("Microsoft.SqlServer.Management.Smo.Server") "(local)"
$bkdir = "C:\DBbackups" #We define the folder path as a variable
$database = Read-Host "Please Specify Database Name"
$dbs = $server.Databases
#To Backup one Database specify exact name
#To backup multiple database which starts with same name use "*"
foreach ($db in $dbs)
{
if($db.Name -like $database)
{
$dbname = $db.Name
$dt = get-date -format yyyyMMddHHmmss #We use this to create a file name based on the timestamp
$dbBackup = new-object ("Microsoft.SqlServer.Management.Smo.Backup")
$dbBackup.Action = "Database"
$dbBackup.Database = $dbname
$dbBackup.Devices.AddDevice($bkdir + "\" + $dbname + "_db_" + $dt + ".bak", "File")
$dbBackup.SqlBackup($server)
write-host "Database backup is successful for"$dbname
write-host "."
write-host "New Backup file is"$dbname"_db_"$dt".bak"
}
}
write-host "New Backup Location is" $bkdir
这就是我修改的内容
foreach ($db in $dbs)
{
if($db.Name -like $database)
{
$dbname = $db.Name
$dt = get-date -format yyyyMMddHHmmss #We use this to create a file name based on the timestamp
$dbBackup = new-object ("Microsoft.SqlServer.Management.Smo.Backup")
$dbBackup.Action = "Database"
$dbBackup.Database = $dbname
$dbBackup.Devices.AddDevice($bkdir + "\" + $dbname + "_db_" + $dt + ".bak", "File")
$dbBackup.SqlBackup($server)
write-host "Database backup is successful for"$dbname `n
write-host "New Backup file is"$dbname"_db_"$dt".bak" `n
}
else {
write-host "invalid"
}
}
尝试将else添加到if($db.Name-like$database)块
if($db.Name-like$database){#执行当前备份工作}
否则{write output“Database not exist”}
我正在使用sql server 2008 R2,有人能帮我吗?这不起作用,因为我有一个for循环,我得到了8到9次显示无效的数据库如果我在for循环的顶部使用这一行,它对我有效…如果($dbs.Name-like$Database){do backup}
if ($db.Name -like $database) { # do current backup stuff }
else { write-output "Database doesn't exist" }