这是我的问题:我有一台运行SQL Server 2008 R2(SP3)的服务器,我正在尝试创建一个PowerShell脚本来执行一些管理任务。
此PowerShell脚本在类EnumServerPermissions
上使用名为Microsoft.SqlServer.Management.Smo
的方法。根据{{3}},这仅在SQL Server 2012及更高版本上受支持。
现在我的问题是:因为这个类位于Microsoft.SqlServer.Smo.dll
内,所以没有办法运行与此方法调用兼容的SQL Server Management Objetcs(SMO)的更新版本,即使是旧版本的SQL Server(例如我的2008 R2)?我是否必须接受此操作才能在我的版本上运行?或者有没有办法通过更新某些东西来使其工作?
谢谢!
答案 0 :(得分:1)
如果您说Microsoft文档声明它仅支持SQL Server 2012 +,原因如下:
这是不正确的,并没有正式说明它支持的版本并且不支持。 SMO的处理方式与SQL Server Management Studio类似。您可以使用新版本连接到任何版本的SQL Server。唯一的规定是某些属性或类会因SQL Server较低版本上不存在的属性而失败,或者功能不可用(例如,SQL Server 2008 R2上的AvailabilityGroup命名空间将失败)。
例如,在PowerShell模块dbatools中,我们有与该模块一起打包的最新版本的SMO。因此,如果您在一台全新的机器上安装该模块,您可以连接到2000+以上的任何版本的SQL Server。我们在该模块中有命令支持针对SQL Server 2000运行,然后仅支持针对2012+版本的SQL Server运行。