- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的计算机上安装了 SQL Server 2012 Developer。我还安装了 SQL Server 2014 管理对象,这可能是问题的根源。
我正在编写一个模块,通过 Powershell 自动执行一些常见的开发任务。其中之一就是简单地将现有数据库复制到新数据库。
我知道有三种不同的备份和恢复方法:执行 SQL 语句、SMO 对象和 SQLPS cmdlet。我对 SQLPS 路线感兴趣。这是我的功能:
push-location
import-module sqlps -disablenamechecking
pop-location
function Copy-Database {
param (
[string] $database,
[string] $newDatabase
)
$backupFile = "$database-{0:yyyyMMddhhmmss}.bak" -f (get-date)
backup-sqldatabase -serverinstance $defaultServerInstance -database $database -backupfile $backupFile -copyonly
$solutionName = $newDatabase
$mdf = New-Object Microsoft.SqlServer.Management.Smo.RelocateFile("MyDb_Data", "$defaultDatabaseRootPath\$solutionName\$newDatabase.mdf")
$ldf = New-Object Microsoft.SqlServer.Management.Smo.RelocateFile("MyDb_Log", "$defaultDatabaseRootPath\$solutionName\$newDatabase.ldf")
restore-sqldatabase -serverinstance $defaultServerInstance -database $newDatabase -backupfile $backupFile -RelocateFile @($mdf,$ldf)
}
它备份数据库,但是当它尝试恢复时,我收到以下错误:
Restore-SqlDatabase : Cannot bind parameter 'RelocateFile'. Cannot convert the "Microsoft.SqlServer.Management.Smo.RelocateFile" value of type "Microsoft.SqlServer.Management.Smo.RelocateFile" to type "Microsoft.SqlServer.Management.Smo.RelocateFile".
此处也描述了此问题:Problems with RelocateFile property in the Restore-SqlDatabase cmdlet
我承认问题可能是程序集中的冲突。接受的答案提供了两个建议:
- Make sure that the versions match.
- Use the Microsoft.SqlServer.Management.Smo.Restore.SqlRestore method instead of the Restore-SqlDatabase cmdlet.
但是,他们只解释了如何执行#2。我想知道如何使用 Restore-SqlDatabase
cmdlet 使其正常工作。
最佳答案
我知道这已经很旧了,但我也遇到过同样的问题。
PS C:\> [AppDomain]::CurrentDomain.GetAssemblies().GetTypes() | ? FullName -eq Microsoft.SqlServer.Management.Smo.RelocateFile | select Assembly
组装
Microsoft.SqlServer.SmoExtended, Version=13.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91
Microsoft.SqlServer.SmoExtended, Version=12.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91
New-Object "Microsoft.SqlServer.Management.Smo.RelocateFile, Microsoft.SqlServer.SmoExtended, Version=12.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" (*LogicalName*, *PhysicalName*)
这样做,使用完全限定的类型名称,可以解决问题。
希望这会对发现此问题的其他人有所帮助。
关于sql-server - 使用 Restore-SqlDatabase cmdlet 时无法绑定(bind) RelocateFile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26400752/
我尝试使用 Restore-SqlDatabase cmdlet 还原数据库。我需要重新定位文件,但出现以下错误 Restore-SqlDatabase : Cannot bind parameter
我的计算机上安装了 SQL Server 2012 Developer。我还安装了 SQL Server 2014 管理对象,这可能是问题的根源。 我正在编写一个模块,通过 Powershell 自动
我是一名优秀的程序员,十分优秀!