SQL Server 安装程序可安装 Windows PowerShell 和一组用来公开 Windows PowerShell 中 SQL Server 功能的 SQL Server 管理单元(snap-ins)。之后,您可以对 Windows PowerShell 脚本进行编码,使其能够处理 SQL Server 对象。脚本可以在 Windows PowerShell 环境和 SQL Server Management Studio 中运行,也可以作为 SQL Server 代理作业来运行。
&">nbsp;
这个案例将介绍如何为添加一个管理单元时得到的错误作故障排除。
出错信息:
=========
系统环境:
=========
(1)Windows 2000R2 64-bit
(2)服务器端并没有安装完整版本的SQL Server
(3)通过Windows Features安装了Powershell 2.0
故障排查
=========
(1)确认以下组件已正确安装:(它们均属于SQL Server 2008 功能包:http://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 820.html">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”来验证。如果成功输出了管理单元的名称,则表明注册成功。
注意:注册管理单元的过程只是简单地读取相关的注册表项,并在当前会话的内存中加载相关的信息。