5

エンタープライズ プロジェクトでストアド プロシージャの暗号化に取り組んでいます。本番環境で保護する必要がある SP が多数あります。にある各 SP にパラメータ
を設定することは問題ありません。しかし、このディレクティブをオプションにしたいと思います。プロジェクトをデバッグ モードでビルドしている場合は、このプロシージャ オプションを適用しないでください。それ以外の場合は、使用してください。実際、ここでの主な目標は、暗号化なしで開発者向けのデータベースを取得することですが、本番環境では暗号化された SP です。 ビルドタスクでスクリプトを使用すると、生成されたSQLファイルを変更でき、その結果、暗号化パラメーターを使用してスクリプトを取得できますが、. 助言がありますか?WITH ENCRYPTIONsqlproj
PowerShelldacpac

アップデート:

でしばらく遊んだ後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 を暗号化して変更します。

4

1 に答える 1

2

「暗号化された」ストアド プロシージャを解読するのは簡単です。わざわざ暗号化しないことをお勧めします。

それらを暗号化する必要がある場合は、暗号化されたすべてのストアド プロシージャを 1 つずつ復号化する DEV の展開後の手順をお勧めします。このようなステップsp_execsqlは、リンクの情報を使用して簡単に作成できます。

于 2012-11-06T23:01:18.127 に答える