gpt4 book ai didi

sql-server - 存储过程 ENCRYPTION 选项取决于构建模式

转载 作者:行者123 更新时间:2023-12-03 00:35:55 26 4
gpt4 key购买 nike

我正在企业项目中研究存储过程加密。我们有很多 SP,应该在生产中受到保护。
sqlproj 中的每个 SP 中设置 WITH ENCRYPTION 参数没有问题。但我想让这个指令可选:如果我在 Debug模式下构建项目 - 不要应用此过程选项,否则 - 使用它。实际上,这里的主要目标是为开发人员提供不加密的数据库,但在生产上 - 加密的 SP。
在构建任务中使用PowerShell脚本我可以修改生成的sql文件并因此获得带有加密参数的脚本,但我想知道它如何与dacpac一起使用>.
有什么建议么?

更新:

在使用 msbuild 一段时间后。我决定在 SqlCore 目标之后停止(至少现在)使用 PowerShell 脚本任务解决方案:

<Import Project="$(ExtensionTasksPath)MSBuild.ExtensionPack.tasks" Condition="Exists('$(ExtensionTasksPath)MSBuild.ExtensionPack.dll')" />
<UsingTask TaskFactory="PowershellTaskFactory" TaskName="CreateDecryptedScript" AssemblyFile="$(PowerShellTaskAssembly)" Condition="Exists('$(PowerShellTaskAssembly)')">
<ParameterGroup>
<File Required="true" ParameterType="System.String" />
<ResultFile Required="true" ParameterType="System.String" />
</ParameterGroup>
<Task>
<![CDATA[
(Get-Content $file) | Foreach-Object {$_ -replace 'WITH ENCRYPTION', '--WITH ENCRYPTION'} | Set-Content $resultfile
]]>
</Task>
</UsingTask>
<Target Name="CreateDecryptedScript" AfterTargets="SqlCore">
<CreateDecryptedScript File="$(OutputPath)$(CreateScriptFileName)" ResultFile="$(OutputPath)$(DecryptedScriptName)" Condition="Exists('$(PowerShellTaskAssembly)')" />
</Target>

因此,在重建项目后,我们有了用于创建不加密数据库的脚本。

但是从项目调用的 publish 不会强制发生这种情况,我们将通过加密更改所有 SP。

最佳答案

解密“加密”存储过程很容易。我建议您不要费心加密它们。

如果您必须对它们进行加密,我建议在 DEV 中执行部署后步骤,逐一解密每个加密的存储过程。您可以使用 sp_execsql 和链接中的信息轻松创建这样的步骤。

关于sql-server - 存储过程 ENCRYPTION 选项取决于构建模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13256026/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com