使用PowerShell备份SQL Server内容数据库时引发错误



我正在尝试使用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

最新更新