エンタープライズ プロジェクトでストアド プロシージャの暗号化に取り組んでいます。本番環境で保護する必要がある SP が多数あります。にある各 SP にパラメータ
を設定することは問題ありません。しかし、このディレクティブをオプションにしたいと思います。プロジェクトをデバッグ モードでビルドしている場合は、このプロシージャ オプションを適用しないでください。それ以外の場合は、使用してください。実際、ここでの主な目標は、暗号化なしで開発者向けのデータベースを取得することですが、本番環境では暗号化された SP です。
ビルドタスクでスクリプトを使用すると、生成されたSQLファイルを変更でき、その結果、暗号化パラメーターを使用してスクリプトを取得できますが、.
助言がありますか?WITH ENCRYPTION
sqlproj
PowerShell
dacpac
アップデート:
でしばらく遊んだ後msbuild
。ターゲットPowerShell
の後にスクリプト タスクを使用するソリューションを (少なくとも今のところ) 停止することにしました。SqlCore
<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 を暗号化して変更します。