我正在尝试使用PowerShell备份SQL Server内容数据库。
这是我的代码:
$dt = Get-Date -Format yyyyMMddHHmmss
$null =
[Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo");
$srvrvinstancename= "srvr-04\mssqlserver1"
$svr = New-Object
Microsoft.SqlServer.Management.Smo.Server($srvrvinstancename);
#Write-Output $svr WSS_Content_2d426b353ded49aa8ace920d4178c298
$bdir = "C:"
$svnm = $svr.Name
$db =
$svr.Databases['WSS_Content_2d426b353ded49aa8ace920d4178c298']
$dbname = $db.Name
$dt = get-date -format yyyyMMddHHmmss
$bfil = "$bdir\$($dbname)_db_$($dt).bak"
Backup-SqlDatabase -ServerInstance $svnm -Database $dbname -
BackupFile $bfil
但是当我运行代码时出现错误:
Backup-SqlDatabase:' Backup-SqlDatabase'命令在模块' SQLPS'中找到,但无法加载模块。有关更多信息,请运行“导入 - 模块SQLPS” 在行:19 char:1
+ Backup-SqlDatabase -ServerInstance $ svnm -Database $ dbname -BackupFile $ bfil + ~~~~~~~~~~~~~~~~~~ + CategoryInfo:ObjectNotFound:(Backup-SqlDatabase:String)[],CommandNotFoundException + FullyQualifiedErrorId:CouldNotAutoloadMatchingModule
之后,我跑了
import-module sqlps
但是这也遇到了错误状态:
导入 - 模块:文件C:\ Program Files(x86)\ Microsoft SQL Server \ 110 \ Tools \ PowerShell \ Modules \ SQLPS \ Sqlps.ps1无法加载,因为在此系统上禁用了运行脚本。
有关详细信息,请参阅http://go.microsoft.com/fwlink/?LinkID=135170处的about_Execution_Policies 在行:1 char:1
+ Import-Module SQLPS
+ ~~~~~~~~~~~~~~~~~~~ + CategoryInfo:SecurityError:(:) [Import-Module],PSSecurityException + FullyQualifiedErrorId:UnauthorizedAccess,Microsoft.PowerShell.Commands.ImportModuleCommand
我做错了什么?
答案 0 :(得分:1)
我认为你需要装配一些装配:
# Load SQL server assemblies
#
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SMO") | Out-Null
# SmoExtended
#
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SmoExtended") | Out-Null
[Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.ConnectionInfo") | Out-Null
[Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SmoEnum") | Out-Null
更新。
对于无法执行的脚本,您需要执行(作为Powershell中的管理员)
Set-ExecutionPolicy remotesigned