我正在尝试实施我在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.
答案 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