Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 使用powershell备份SQL数据库时出错_Sql Server 2008_Powershell - Fatal编程技术网

Sql server 2008 使用powershell备份SQL数据库时出错

Sql server 2008 使用powershell备份SQL数据库时出错,sql-server-2008,powershell,Sql Server 2008,Powershell,我正在尝试备份SQL数据库,但奇怪的是使用lpace,我可以用powershell备份的数据库很少,但我很少出错 Exception calling "SqlBackup" with "1" argument(s): "Backup failed for Server 'Server1'. " At C:\_Scripts\defaultbackup.ps1:40 char:1 + $smoBackup.SqlBackup($server) + ~~~~~~~~~~~~~~~~~~~~~~~~

我正在尝试备份SQL数据库,但奇怪的是使用lpace,我可以用powershell备份的数据库很少,但我很少出错

Exception calling "SqlBackup" with "1" argument(s): "Backup failed for Server 
'Server1'. "
At C:\_Scripts\defaultbackup.ps1:40 char:1
+ $smoBackup.SqlBackup($server)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : FailedOperationException

$dbToBackup = "test"



#clear screen
cls

#load assemblies
#note need to load SqlServer.SmoExtended to use SMO backup in SQL Server 2008
#otherwise may get this error
#Cannot find type [Microsoft.SqlServer.Management.Smo.Backup]: make sure
#the assembly containing this type is loaded.

[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

#create a new server object
$server = New-Object ("Microsoft.SqlServer.Management.Smo.Server") "(local)"
$backupDirectory = $server.Settings.BackupDirectory
"Default Backup Directory: " + $backupDirectory
$db = $server.Databases[$dbToBackup]
 $dbName = $db.Name

 $timestamp = Get-Date -format yyyyMMddHHmmss
$smoBackup = New-Object ("Microsoft.SqlServer.Management.Smo.Backup")

#BackupActionType specifies the type of backup.
#Options are Database, Files, Log
#This belongs in Microsoft.SqlServer.SmoExtended assembly

$smoBackup.Action = "Database"
$smoBackup.BackupSetDescription = "Full Backup of " + $dbName
$smoBackup.BackupSetName = $dbName + " Backup"
$smoBackup.Database = $dbName
$smoBackup.MediaDescription = "Disk"

$smoBackup.Devices.AddDevice($backupDirectory + "\" + $dbName + "_" + $timestamp +   
".bak",   
"File")

$smoBackup.SqlBackup($server)

#let's confirm, let's list list all backup files
$directory = Get-ChildItem $backupDirectory
$smoBackup.Devices.AddDevice($backupDirectory+“\”+$dbName+“\u“+$timestamp+”.bak”,“File”)

$smoBackup.SqlBackup($server)

让我们确认一下,让我们列出所有备份文件 $directory=Get ChildItem$backupDirectory

仅列出以.bak结尾的文件,假设这是所有备份文件的约定 取代

取代


由于您可以备份很少的数据,而且很少有失败的数据,所以脚本似乎还可以。为什么不添加异常处理来捕获准确的错误呢。 您可能需要修改代码,如下所示

Try
{
    $smoBackup.SqlBackup($server
}
Catch
{
    Write-Output $_.Exception.InnerException
}

由于您可以备份很少的数据,而且很少有失败的数据,所以脚本似乎还可以。为什么不添加异常处理来捕获准确的错误呢。 您可能需要修改代码,如下所示

Try
{
    $smoBackup.SqlBackup($server
}
Catch
{
    Write-Output $_.Exception.InnerException
}

我在互联网上读到,通过在脚本中使用此选项,可以对该问题进行排序,但我不确定将这一行放在脚本上方的什么位置将ConnectionContext.StatementTimeout设置为0我在互联网上读到,通过在脚本中使用此选项,可以对该问题进行排序,但我不确定将这一行放在脚本上方的什么位置ConnectionContext.StatementTimeout到0我遇到了同样的问题,备份有时似乎失败,昨天成功了,但今天没有,没有任何原因。我将尝试一下,如果成功,我将给出反馈!但我不会使用“LoginSecure”开关,因为我不确定是否需要它,Timeout属性可能就足够了。我遇到了同样的问题,备份有时会失败,它昨天起作用,但今天没有,没有任何原因。我将尝试一下,如果成功,我将给出反馈!但是我不会使用“LoginSecure”开关,因为我不确定它是否是必需的,Timeout属性可能就足够了。
$srv = New-Object ("Microsoft.SqlServer.Management.Smo.Server") "(local)"
$conContext = $srv.ConnectionContext
$conContext.LoginSecure = $True
$conContext.ConnectTimeout = 0
$server = new-object Microsoft.SqlServer.Management.Smo.Server($conContext)
Try
{
    $smoBackup.SqlBackup($server
}
Catch
{
    Write-Output $_.Exception.InnerException
}