- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
从另一台服务器获取数据库备份,我试图恢复到本地主机上的 sqlexpress。此恢复将通过 GUI 进行,但我在使用 powershell 恢复它时遇到问题。我收到以下错误消息:
Exception calling "SqlRestore" with "1" argument(s): "Restore failed for Server
+ $smoRestore.SqlRestore <<<< ($server)
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodException
错误消息指向该行的第 23 个字符:
$smoRestore.SqlRestore($server)
脚本:
[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
Import-Module PSCX
Import-Module WebAdministration
function GetLatestItem(){
param([string]$RemotePath)
$returnString = Get-ChildItem $RemotePath -force -filter "*.7z" | sort @{expression={$_.LastWriteTime}; Descending=$true} | select Name -first 1
return $returnString.Name
}
function DatabaseExists(){
param([Microsoft.SqlServer.Management.Smo.Server]$server,[string]$databaseName)
foreach($database in $server.Databases){
if($database.Name -eq $databaseName){
$true
}
}
$false
}
$LocalFile = "C:\backups\backupname.bak.7z"
$LocalFilePath = "C:\backups\"
Expand-Archive $Localfile $LocalFilePath
# Most of the restore information was found at http://www.sqlmusings.com/2009/06/01/how-to-restore-sql-server-databases-using-smo-and-powershell/
$backupFile = $LocalFilePath + [IO.Path]::GetFileNameWithoutExtension($LocalFile)
[Microsoft.SqlServer.Management.Smo.Server]$server = New-Object ("Microsoft.SqlServer.Management.Smo.Server") ".\SQLEXPRESS"
$backupDevice = New-Object ("Microsoft.SqlServer.Management.Smo.BackupDeviceItem") ($backupFile, "File")
$smoRestore = New-Object Microsoft.SqlServer.Management.Smo.Restore
$smoRestore.NoRecovery = $true;
$smoREstore.ReplaceDatabase = $true;
$smoRestore.Action = "Database"
$smoRestore.PercentCompleteNotification = 10;
$smoRestore.Devices.Add($backupDevice)
# Get the details from the backup device for the database name and output that
$smoRestoreDetails = $smoRestore.ReadBackupHeader($server)
$databaseName = $smoRestoreDetails.Rows[0]["DatabaseName"]
"Database Name from Backup Header : " + $databaseName
$smoRestore.Database = $databaseName
if(DatabaseExists $server $databaseName -not){
$smoRestoreFile = New-Object("Microsoft.SqlServer.Management.Smo.RelocateFile")
$smoRestoreLog = New-Object("Microsoft.SqlServer.Management.Smo.RelocateFile")
$smoRestoreFile.LogicalFileName = $smoRestoreDetails.Rows[0]["DatabaseName"]
$smoRestoreFile.PhysicalFileName = $server.Information.MasterDBPath + "\" + $smoRestore.Database + "_Data.mdf"
$smoRestoreLog.LogicalFileName = $smoRestoreDetails.Rows[0]["DatabaseName"] + "_Log"
$smoRestoreLog.PhysicalFileName = $server.Information.MasterDBPath + "\" + $smoRestore.Database + "_Log.ldf"
$smoRestore.RelocateFiles.Add($smoRestoreFile)
$smoRestore.RelocateFiles.Add($smoRestoreLog)
}
$smoRestore.SqlRestore($server)
if($error.Count -eq 0){
}
else{
$Error[0].exception.message
}
最佳答案
我有一个与您的非常相似的脚本,但有一些值得注意的差异:
SqlRestore
之前,我会调用 $server.KillAllProcesses($databaseName)
。$smoRestore.NoRecovery = $false
,而不是 $true
$smoRestore.FileNumber = 1
,而你根本没有。我认为这对应于在 GUI 中检查备份集中的文件。我也有类似的代码用于设置逻辑/物理文件名,但我没有使用 $server.Information
,而是从注册表中提取信息(不确定哪个“更好”)。另一个区别是我使用 $smoRestore.ReadFileList
而不是 $smoRestore.ReadBackupHeader
。
您还可以尝试在路径上使用一些 Write-Host
语句,以确保它们看起来正确(如果您还没有这样做的话)。
希望其中一项调整可以解决您的问题。如果您想从我的脚本中获得更多信息,请告诉我。
关于sql - 使用 smo 和 powershell 将数据库备份恢复到新数据库时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5123423/
我正在尝试使用 SMO 通过 Powershell 恢复数据库,但是当我尝试定义和使用服务器对象时,出现以下错误: Cannot convert argument "srv", with value:
我已经阅读了十几个不同的博客,并通读了 msdn 示例,但它们对我不起作用。 最终我想做的是自动将数据库从我们的生产实例移动到我们的开发实例,或其他方向。 我采取的方法是: 备份/恢复到临时数据库 分
我使用这个 SMO 来恢复备份: Server myServer = new Server(@"PC-1\Instance1"); Restore restoreDB
我已经编写了一个 C# 代码来使用 SMO 在两个远程服务器之间传输表,我想知道的是无论如何都可以检查目标服务器中是否已经存在具有确切模式、列名、数据类型的表,约束和一切。这样我就不必每次都删除现有表
我正在考虑使用 C# SMO 库以编程方式创建当前数据库结构(不含数据)的副本。我已经成功地移动了模式、表、存储过程和外部资源,但是我很难这样做。我正在考虑使用这样提供的表对象: TableColle
我在 C# 中使用 SMO 从数据库生成整个模式的脚本。 这是我使用的代码: // Instanciando Server srv = new Server(con); // Refere
我正在做一个使用 smo 对象(服务器、数据库)的 C# 项目。 我包括了 using Microsoft.SqlServer.Management.Smo; using Microsoft.SqlS
我有一个集成测试,它创建了一个 Microsoft.SqlServer.Management.Smo.Database 类型的数据库: var defaultConnectionConnectionS
我使用 SQL Server SMO 将 .bak 恢复到新数据库,但没有成功。 sql server是2012,smo object版本来自最新的sdk version 11.0 文件 .bak 是
我正在向数据库中插入大量行并尝试在其上建立主键。如果我创建表并立即建立一个键,即使使用 SQLBulkCopy 命令,插入数据也需要 10 倍的时间。所以这不是一个可行的选择。我现在要做的是插入数据,
WEKA 的 SMO 与 LIBSVM 不同吗? 我问是因为它在 LIBSVM 的 site 上说那:it implements an SMO-type algorithm proposed in t
我使用 vb.net 备份 sql '05 - '08 数据库。它在较小的数据库上效果很好。但当涉及大型数据库时,它会在 30% 或 40% 时失败并出现错误:备份或恢复已中止。 Di
我在尝试恢复 SQL Server 2008 R2 数据库时遇到错误: Restore failed for Server 'KIMO-PC'. 使用的代码: Server myServer
我使用 SQL Server 已经有几年了。我听说过SMO,但我对此一无所知。使用它有什么好处?我应该在我的 SQL Server 项目(主要是数据仓库开发)中学习并开始使用 SMO 吗?为什么? 最
如何与 SMO 服务器连接共享交易?共享连接就这么简单 var connection = new SqlConnection(); var serverConnection = new ServerC
如何使用 SMO 重命名物理 .mdf .ndf .ldf 文件。 This这篇文章很有帮助,但我需要使用 C# SMO 对象。 使用 SMO 服务器对象,我可以检索数据库,然后获取对数据文件对象的访
我有一个系统可以在两个具有相同模式的数据库之间传输数据(用于开发目的)。 SMO dependency walker 除了触发器外工作得很好。如果我得到一个依赖项列表,我不关心触发器是否引入了对另一个
我能够使用 SMO 构建类似于 SSMS 中的“查找备份文件”对话框的 TreeView 。我可以列出服务器上的文件夹,如果有备份设备,它们也会被列出。我似乎无法复制的一件事是如何浏览备份文件以恢复最
我已将 Microsoft.SqlServer.Management.Smo.dll 引用添加到我的项目中,但它仍然给我以下错误。引用的dll在C:\Program Files\Microsoft S
我是 Weka 的新手。我想在 WEKA 中使用顺序最小优化。谁能告诉我如何继续?这是我的 Java 代码,但它不起作用: public class SVMTest { public void tes
我是一名优秀的程序员,十分优秀!