使用PowerShell

时间:2016-04-06 14:09:44

标签: sql-server powershell

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

我做错了什么?

1 个答案:

答案 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