从PowerShell访问SQL Server时出现问题

时间:2011-07-15 10:10:47

标签: sql-server powershell

我正在尝试实施我在http://sev17.com/2011/03/restore-and-relocate-database-files-using-powershell/

找到的备份管理脚本

文章说这取决于SQLPSX版本2.3.2.1或更高版本 - 我有最新版本。

尝试执行此行:

$server = get-sqlserver $sqlserver

结果:

New-Object : Cannot find type [Microsoft.SqlServer.Management.Common.ServerConnection]: make sure the assembly containing this type is loaded.
At C:\Users\...\Documents\WindowsPowerShell\Modules\sqlserver\SQLServer.psm1:68 char:24
+     { $con = new-object <<<<  ("Microsoft.SqlServer.Management.Common.ServerConnection") $sqlserver }

get-module -listAvailable

的结果
    ModuleType Name                      ExportedCommands                                                           
    ---------- ----                      ----------------                                                           
    Script     adoLib                    {}                                                                         
    Manifest   Agent                     {Get-AgentTargetServerGroup, Get-AgentProxyAccount, Get-AgentJobSchedule...
    Script     ISECreamBasic             {}                                                                         
    Script     mySQLLib                  {}                                                                         
    Script     OracleClient              {}                                                                         
    Script     OracleIse                 {}                                                                         
    Script     PBM                       {}                                                                         
    Script     PerfCounters              {}                                                                         
    Manifest   Pscx                      {}                                                                         
    Manifest   Repl                      {Get-ReplEnumSubscriptions2, Get-ReplPublisherMonitor, Get-ReplEnumPubli...
    Manifest   ShowMbrs                  {Get-ShowMbrs, Set-ShowMbrs, New-ShowMbrs, Get-GroupUser}                  
    Script     SQLIse                    {}                                                                         
    Manifest   SQLMaint                  {Get-SqlIndexFragmentation, New-UserMember, Invoke-SqlIndexRebuild, Get-...
    Manifest   SQLParser                 {Test-SqlScript, Out-SqlScript}                                            
    Script     SQLProfiler               {}                                                                         
    Script     SQLPSX                    {}                                                                         
    Manifest   sqlserver                 {Get-SqlScripter, Get-SqlIndexFragmentation, Remove-SqlServerRoleMember,...
    Manifest   SSIS                      {New-ISItem, Get-ISPackage, Get-ISItem, Copy-ISItemFileToSQL...}           
    Manifest   WPK                       {}                                                                         
    Manifest   AppLocker                 {}                                                                         
    Manifest   BitsTransfer              {}                                                                         
    Manifest   PSDiagnostics             {}                                                                         
    Manifest   TroubleshootingPack       {}                                                                         
    Manifest   WebAdministration         {}    

RE:SMO

[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.ConnectionInfo") 
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SMO")
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SmoExtended") 

结果:

True   v2.0.50727     C:\Windows\assembly\GAC_MSIL\Microsoft.SqlServer.ConnectionInfo\10.0.0.0__89845dcd8080cc91\Microsoft.SqlServer.ConnectionInfo.dll                             
True   v2.0.50727     C:\Windows\assembly\GAC_MSIL\Microsoft.SqlServer.Smo\10.0.0.0__89845dcd8080cc91\Microsoft.SqlServer.Smo.dll                                                   
True   v2.0.50727     C:\Windows\assembly\GAC_MSIL\Microsoft.SqlServer.SmoExtended\10.0.0.0__89845dcd8080cc91\Microsoft.SqlServer.SmoExtended.dll                                   
New-Object : Cannot find type [Microsoft.SqlServer.Management.Common.ServerConnection]: make sure the assembly containing this type is loaded.

5 个答案:

答案 0 :(得分:8)

确保首先加载包含Microsoft.SqlServer.Management.Common.ServerConnection类型(我认为是Microsoft.SqlServer.ConnectionInfo)的程序集:

[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.ConnectionInfo")

答案 1 :(得分:1)

我意识到这只是有史以来最糟糕的答案,但...... 似乎可能你的SMO或其他东西出了问题。您可以尝试加载SP3 for SQL 2008或尝试重新安装SSMS 2008.安装2008 R2版本的SSMS也是一种选择。

同样,这不是世界上最好的答案,但可能值得尝试。

答案 2 :(得分:0)

只有在SSMS安装时安装了powershell 2.0,才会安装powershell组件。除非您使用的是Windows Server 2008,否则通常已在机器上设置Powershell。确保在安装SSMS之前安装了powershell 2.0。

答案 3 :(得分:0)

$ sc = New-Object Microsoft.SqlServer.Management.Common.ServerConnection

错误: New-Object:找不到类型[Microsoft.SqlServer.Management.Common.ServerConnection]:验证是否已加载包含此类型的程序集

对于这个问题,

请确保已安装micro soft sqlserver管理对象2012(x64)。 并继续检查dll文件是否存在于给定路径“C:\ Program Files \ Microsoft SQL Server \ 110 \ SDK \ Assemblies”

答案 4 :(得分:0)

对我来说

Import-Module -Name SqlServer

它可以保留在脚本中 注意:

  • Windows Server 2016

  • 在我安装

  • 之前
Install-Module -Name SqlServer
  • 使用[Reflection.Assembly] :: LoadWithPartialName仅对Windows 10有效。