高峰之巅 发表于 2018-9-3 08:16:52

使用 PowerShell 加密 SQL Server 的存储过程

  出于安全的考虑,我们使用 WITH ENCRYPTION 在创建存储过程的时候进行加密,但如果我们想要更新已加密的存储过程该如何做呢?我看到一些人写了一个 C# 控制台程序,受此提示,我使用了 PowerShell 调用 'Microsoft.SqlServer.Management.Smo' 来实现。
  首先我们打开 PowerShell,你需要确定的是你的 SQL Server 版本是否支持 PowerShell,我这里用的是 SQL Server 2008.
  打开 'Microsoft SQL Server Management Studio' -> open 'Object Explorer'->,然后右键打开 'Start PowerShell', 将会弹出 PowerShell 提示窗口。
  修改代码如下所示:
  $srv = new-Object Microsoft.SqlServer.Management.Smo.Server("")
  $db = New-Object Microsoft.SqlServer.Management.Smo.Database
  $db = $srv.Databases.Item("")
  Foreach ($sp in $db.StoredProcedures){
  if(!$sp.IsSystemObject){
  if (!$sp.IsEncrypted){
  $sp.TextMode = $false;
  $sp.IsEncrypted = $true;
  $sp.TextMode = $true;
  try{
  $sp.Alter();
  }catch{
  Write-Host "$sp.Name fail to encrypted."
  }
  }
  }
  }
  执行时请耐心,这取决于你的存储过程的数量。

页: [1]
查看完整版本: 使用 PowerShell 加密 SQL Server 的存储过程