本节书摘来自异步社区出版社《PowerShell V3—SQL Server 2012数据库自动化运维权威指南》一书中的第1章,第1.6节,作者:【加拿大】Donabel Santos,更多章节内容可以访问云栖社区“异步社区”公众号查看。
1.6 导入SMO程序集
在使用SMO库之前,需要导入程序集。在SQL Server 2012中,这个步骤比以前容易得多。
1.6.1 准备
SQL管理对象(SQL Management Objects,SMO)必须已经安装在你的机器上。
1.6.2 如何做…
在这个方案中,我们将导入SQLPS模块。
1.打开PowerShell控制台或者PowerShell ISE,或者你喜欢的PowerShell编辑器。
2.输入import-module命令。
Import-Module SQLPS
3.确认模块被导入。
Get-Module
1.6.3 如何实现…
导入SMO程序集的方法在不同PowerShell版本之间有所不同。
在PowerShell V1中,可以使用Load()或LoadWithPartialName()方法导入程序集。LoadWithPartialName()接受程序集的部分名称,从应用程序目录或者全局程序集缓存(Global Assembly Cache,GAC)导入。
[void][Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.
Smo")
尽管LoadWithPartialName()仍被支持,仍然保留了流行的导入程序集方法,但这个方法不应该再被使用,因为它将会在将来的版本中被废弃。
Load()需要程序集的完整标识名。
[void][Reflection.Assembly]::Load("Microsoft.SqlServer.Smo,
Version=9.0.242.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91")
在PowerShell V2中,可以通过Add-Type添加程序集。
Add-Type -AssemblyName "Microsoft.SqlServer.Smo"
在PowerShell V3中,不再需要逐个导入程序集,只需导入SQLPS。
Import-Module SQLPS
如果你正在使用特定的SQL Server版本,可能在有些情况下你仍然需要导入特定的DLL版本,或者你可能只想导入特定的程序集而不是导入整个SQLPS模块。在这种情况下,Add-Type仍然是导入程序集的有效方法。
1.6.4 更多…
当你导入SQLPS模块时,你可能会看到关于冲突或未经批准之类的语言。
这意味着有些cmdlets不需要遵守PowerShell命名规范,但模块和它包含的cmdlets仍然全部导入到你的主机。为了阻止该警告,导入模块时使用-DisableNameChecking参数。
1.6.5 可参阅
安装SMO的方法