gpt4 book ai didi

sql-server-2008 - 无法将类型 "Microsoft.SqlServer.Management.Smo.Server"的值转换为类型 "Microsoft.SqlServer.Management.Smo.Server"

转载 作者:行者123 更新时间:2023-12-04 07:04:26 25 4
gpt4 key购买 nike

我正在尝试使用 SMO 通过 Powershell 恢复数据库,但是当我尝试定义和使用服务器对象时,出现以下错误:

Cannot convert argument "srv", with value: "[MJNHNX4]", for "SqlRestore" to type "Microsoft.SqlServer.Management.Smo.Server": "Cannot convert the "[MJNHNX4]" value of type 
"Microsoft.SqlServer.Management.Smo.Server" to type "Microsoft.SqlServer.Management.Smo.Server"."
At line:38 char:1
+ $smoRestore.SqlRestore($server)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodException
+ FullyQualifiedErrorId : MethodArgumentConversionInvalidCastArgument

这是我的完整代码(内容不多):

[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

#clear screen
cls

#get backup file
$backupFile = "D:\databases\Perfmon.bak"
$servername = "MJNHNX4"
$server = New-Object Microsoft.SqlServer.Management.Smo.Server($servername)
$backupDevice = New-Object ("Microsoft.SqlServer.Management.Smo.BackupDeviceItem") ($backupFile, "File")
$smoRestore = new-object("Microsoft.SqlServer.Management.Smo.Restore")

#settings for restore
$smoRestore.NoRecovery = $false;
$smoRestore.ReplaceDatabase = $true;
$smoRestore.Action = "Database"

#show every 10% progress
$smoRestore.PercentCompleteNotification = 10;

$smoRestore.Devices.Add($backupDevice)

#read db name from the backup file's backup header
$smoRestoreDetails = $smoRestore.ReadBackupHeader($server)

#display database name
"Database Name from Backup Header : " + $smoRestoreDetails.Rows[0]["DatabaseName"]

$smoRestore.Database = $smoRestoreDetails.Rows[0]["DatabaseName"]

#restore
$smoRestore.SqlRestore($server)

"Done"

无论我尝试将什么传递给 Microsoft.SqlServer.Management.Smo.Server,都会发生错误,我真的不确定为什么会给我那个特定的错误。我已通读有关 Server Constructor 的 TechNet 文章我真的不知道那里发生了什么。有什么想法吗?

最佳答案

在进一步测试和阅读 SMO 语法之后,看起来我不需要将 $server 定义为新对象。相反,只需将服务器的名称传递给 $server 即可。

关于sql-server-2008 - 无法将类型 "Microsoft.SqlServer.Management.Smo.Server"的值转换为类型 "Microsoft.SqlServer.Management.Smo.Server",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18721706/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com