无法在Powershell 2.0命令行中为SQL Server Cmdlet添加一个管理单元

SQL Server 安装程序可安装 Windows PowerShell 和一组用来公开 Windows PowerShell 中 SQL Server 功能的 SQL Server 管理单元(snap-ins)。之后,您可以对 Windows PowerShell 脚本进行编码,使其能够处理 SQL Server 对象。脚本可以在 Windows PowerShell 环境和 SQL Server Management Studio 中运行,也可以作为 SQL Server 代理作业来运行。

 

这个案例将介绍如何为添加一个管理单元时得到的错误作故障排除。

 

出错信息:

=========

系统环境:

=========

(1)Windows 2000R2 64-bit

(2)服务器端并没有安装完整版本的SQL Server

(3)通过Windows Features安装了Powershell 2.0

故障排查

=========

(1)确认以下组件已正确安装:(它们均属于SQL Server 2008 功能包:https://www.microsoft.com/download/en/details.aspx?displaylang=en&id=8824

· Microsoft SQL Server 2008 Management Objects

· Microsoft Core XML Services (MSXML) 6.0

· Microsoft SQL Server Native Client

· Microsoft SQL Server System CLR Types.

· Microsoft Windows PowerShell Extensions for SQL Server

 

(2)SQL Server的PowerShell 管理单元集成在Microsoft.SqlServer.Management.PSProvider.dll和Microsoft.SqlServer.Management.PSSnapins.dll中。这两个DDL(动态链接库)由SQL Server的Microsoft Windows PowerShell Extensions这一组件安装,位于C:\Program Files\Microsoft SQL Server\100\Tools\Binn\Redist文件夹中。我们须确保这两个动态链接库安装成功。(注意:如果您安装的是SQL Server的完整版本,这两个动态链接库将位于C:\Program Files\Microsoft SQL Server\100\Tools\Binn 文件夹中)

 

(3)启动Powershell的快捷键是位于所有程序->附件->Windows PowerShell。在64位环境中,我们须保证使用的是x64 的Powershell.exe。(注意:64位的版本是%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe,32位的版本是%SystemRoot%\syswow64\WindowsPowerShell\v1.0\powershell.exe)

 

(4)运行以下命令行注册动态链接库

set-alias installutil $env:windir\microsoft.net\framework\v2.0.50727\installutil

installutil -i "C:\Program Files\Microsoft SQL Server\100\Tools\Binn\Redist\Microsoft.SqlServer.Management.PSProvider.dll"

installutil -i "C:\Program Files\Microsoft SQL Server\100\Tools\Binn\Redist\Microsoft.SqlServer.Management.PSSnapins.dll"

 

(5)运行结束后,如果仍然无法注册管理单元(例如运行“Add-PSSnapin SqlServerCmdletSnapin100”的命令),请检查注册表项HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\PowerShellSnapIns。这个注册表项是由运行以上命令行产生的,如果注册表项没有生成,请从运行正常的机器中导出这个注册表项到故障机器中,同时确保 “AssemblyName”和“ModuleName” 的键值指向当前的DDL路径。

 

(6)接下来,您可以通过运行以下命令添加管理单元

Add-PSSnapin SqlServerCmdletSnapin100

Add-PSSnapin SqlServerProviderSnapin100

 

(7)使用命令“get-PSSnapin -registered”来验证。如果成功输出了管理单元的名称,则表明注册成功。

 

注意:注册管理单元的过程只是简单地读取相关的注册表项,并在当前会话的内存中加载相关的信息。

 

更多参考信息

=============

运行 SQL Server PowerShell

https://msdn.microsoft.com/zh-cn/library/cc281962.aspx