65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 PowerShell 加密所有存储过程

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.25/5 (3投票s)

2012年8月3日

CPOL
viewsIcon

28117

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

引言

下面的代码展示了如何使用 PowerShell 脚本一次性加密 SQL Server 中的所有存储过程。

背景

出于安全原因,我们在创建存储过程时使用 'WITH ENCRYPTION' 来加密它。 但是,如果我们要更新所有存储过程以进行加密,如何一次性完成? 有人已经发布了 C# 控制台应用程序。 感谢他们的提示。 关键是我们需要 'Microsoft.SqlServer.Management.Smo' 来完成它。 这是我使用 powershell 的解决方案。

使用代码

首先,我们需要打开 PowerShell。 您需要确认您的 SQL Server 版本支持 PowerShell。 我们使用的是 SQL 2008。

打开 'Microsoft SQL Server Management Studio' -> 打开 '对象资源管理器' -> 最好进入您想要更新的数据库,右键单击并打开 '启动 PowerShell',然后将弹出新的 PowerShell 提示窗口。

修改下面的代码,更改数据库引擎名称和数据库名称为您的,复制并粘贴到 PowerShell 窗口中,按回车键运行

$db = (new-Object Microsoft.SqlServer.Management.Smo.Server("[DataBase Engine Name]")).Databases.Item("[DataBase Name]") 

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."
        }
     }
  }
}

请耐心等待,它将根据数据库中存储过程的数量完成一段时间。

© . All rights reserved.