服务器管理脚本编写安全DBA数据库开发SQL Server 2008.NET4.NET 3.5SQL Server 2005C# 3.5C# 3.0C# 4.0中级开发SQL Server.NETC#
使用 PowerShell 加密所有存储过程
使用 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."
}
}
}
}
请耐心等待,它将根据数据库中存储过程的数量完成一段时间。