Microsoft.SqlServer.Management.Smo.Server class 不同 SQL 服务器版本之间的兼容性

Microsoft.SqlServer.Management.Smo.Server class compatibility among different SQL Server versions

这是我的问题:我有一个服务器 运行ning SQL Server 2008 R2 (SP3),我正在尝试创建一个 PowerShell 脚本来执行一些管理任务。

此 PowerShell 脚本在 class Microsoft.SqlServer.Management.Smo 上使用了一个名为 EnumServerPermissions 的方法。根据 official MS documentation on this method 这仅在 SQL Server 2012 及更高版本上受支持。

现在我的问题是:因为这个 class 存在于 Microsoft.SqlServer.Smo.dll 中,难道没有办法 运行 SQL 服务器管理的更新版本与此方法调用兼容的 Objetcs (SMO),即使在旧版本的 SQL 服务器上(例如我的 2008 R2)?我是否必须接受这在我的版本中不 运行?或者有没有办法通过更新一些东西来让它工作?

谢谢!

如果您说 Microsoft 文档说明它仅支持 SQL Server 2012 +,因为:

那是不正确的,并且没有正式说明它支持和不支持的版本。 SMO 的处理方式与 SQL Server Management Studio 相同。您可以利用新版本连接到任何版本的 SQL 服务器。唯一的规定是某些属性或 类 会失败,因为 属性 在较低版本的 SQL 服务器上不存在或功能不可用(例如 SQL 服务器上的 AvailabilityGroup 命名空间2008 R2 会失败)。

例如,在 PowerShell 模块 dbatools 中,我们将最新版本的 SMO 与该模块打包在一起。因此,如果您在一台全新的机器上安装该模块,您可以连接到任何版本的 SQL 服务器,从 2000+ 开始。我们在该模块中有支持 运行 针对 SQL Server 2000 的命令,然后一些命令仅适用于 SQL Server 的 2012+ 版本。