我正在尝试使用PowerShell备份SQL Server内容数据库。
这是我的代码:
$dt = Get-Date -Format yyyyMMddHHmmss
$null =
[Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo");
$srvrvinstancename= "srvr-04mssqlserver1"
$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
但当我运行代码时,我会得到错误:
备份SqlDatabase:在模块"SQLPS"中找到"备份SqlDatabase"命令,但无法加载该模块。有关详细信息,请运行"导入模块SQLPS"
第19行字符:1
+备份SqlDatabase-服务器实例$svnm-数据库$dbname-备份文件$bfil+~~~~~~~~~~~~~~~~~~+CategoryInfo:ObjectNotFound:(备份SqlDatabase:String)[],CommandNotFoundException+FullyQualifiedErrorId:CouldNotAutoloadMatchingModule
之后,我运行
import-module sqlps
但这也陷入了错误状态:
导入模块:无法加载文件C:\Program Files(x86)\Microsoft SQL Server\110\Tools\PowerShell\Modules\SQLPS\SQLPS.ps1,因为在此系统上禁用了运行脚本
有关详细信息,请参阅上的about_Execution_Policieshttp://go.microsoft.com/fwlink/?LinkID=135170.
第1行字符:1
+导入模块SQLPS
+~~~~~~~~~~~~~~~~~~~+CategoryInfo:SecurityError:(:)[Import Module],PSSecurityException+FullyQualifiedErrorId:未授权访问,Microsoft.PowerShell.Commands.ImportModuleCommand
我做错了什么?
我认为您需要加载几个Assembly:
# 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