【发布时间】:2020-09-01 17:21:31
【问题描述】:
我正在尝试使用 PowerShell 和 SMO 获取 SQL Server 2016 的备份目录。但是是抛出一个错误。当我尝试为 SQL Server 2008 运行相同的命令时,它工作正常。不知道为什么它不适用于 SQL Server 2016。
正在运行的命令
[System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.SMO') | out-null
$ServerSMO = new-object -TypeName Microsoft.SqlServer.Management.Smo.Server -ArgumentList 'servername'
$ServerSMO.settings
我遇到的错误
format-default : 执行 Transact-SQL 语句或批处理时发生异常。
- CategoryInfo : NotSpecified: (:) [format-default], ExecutionFailureException
- FullyQualifiedErrorId : Microsoft.SqlServer.Management.Common.ExecutionFailureException,Microsoft.PowerShell.Commands.FormatDefaultCommand
【问题讨论】:
-
由于 SMO 仅向后兼容,您是否为 SQL Server 2016 安装了“SharedManagementObjects.msi”,或者为 SQL Server 2017 及更高版本安装了“Microsoft.SqlServer.SqlManagementObjects”NuGet 包?
-
我确实得到了 $ServerSMO.Databases 的详细信息,这意味着应该安装 msi 吗?
-
它的一个版本,是的。如果您转到程序和功能并查找“Microsoft SQL Server 20xx 的 Microsoft System CLR 类型”、“Microsoft SQL Server 20xx 共享管理对象”和“Microsoft SQL Server 20xx 的 Microsoft Windows PowerShell 扩展”,“xx”是什么版本上市了吗?
-
CLR 是 2012,2014,2017 其他的是 2014 和 2012.. 它拉取的 SQLPS 版本是 1.0 应该是 2016 的 SQLPS 版本吗?
标签: sql-server powershell