के आधार पर संग्रहित प्रक्रिया ENCRYPTION विकल्प मैं एंटरप्राइज़ प्रोजेक्ट में संग्रहित प्रक्रियाओं एन्क्रिप्शन पर काम कर रहा हूं। हमारे पास एसपी का एक गुच्छा है जिसे उत्पादन पर संरक्षित किया जाना चाहिए।
sqlproj
में प्रत्येक एसपी में WITH ENCRYPTION
पैरामीटर सेट करने में कोई समस्या नहीं है। लेकिन मैं यह निर्देश वैकल्पिक बनाना चाहता हूं: यदि मैं डीबग मोड में प्रोजेक्ट का निर्माण कर रहा हूं - इस प्रक्रिया विकल्प को लागू न करें, अन्यथा - इसका उपयोग करें। असल में मुख्य लक्ष्य डेवलपर्स के लिए एनक्रिप्शन के बिना डेटाबेस प्राप्त करना है, लेकिन उत्पादन पर - एन्क्रिप्टेड एसपी है।
निर्माण कार्य में PowerShell
स्क्रिप्ट का उपयोग करके मैं उत्पन्न एसक्यूएल फ़ाइल को संशोधित कर सकता हूं और परिणामस्वरूप एन्क्रिप्शन पैरामीटर के साथ स्क्रिप्ट प्राप्त कर सकता हूं, लेकिन मुझे आश्चर्य है कि यह dacpac
के साथ कैसे काम करेगा।
कोई सुझाव?बिल्ड मोड
अद्यतन:
कुछ समय msbuild
के साथ खेल खर्च करने के बाद। नतीजतन
<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>
, परियोजना के पुनर्निर्माण के बाद हम एन्क्रिप्शन के बिना डेटाबेस बनाने के लिए स्क्रिप्ट है: मैं SqlCore
लक्ष्य के बाद साथ PowerShell
स्क्रिप्ट कार्य समाधान पर बंद करने के लिए (कम से कम अब के लिए) का फैसला किया।
लेकिन परियोजना से लागू publish
इस सामग्री को होने के लिए मजबूर नहीं करता है और हम सभी एसपी को एन्क्रिप्शन के साथ बदल देंगे।
एसपी के परिवर्तन को बदलने के लिए एक पोस्ट परिनियोजन स्क्रिप्ट चाल चल सकती है। –
@ aclear16 हां, मैं उस पर सोच रहा था लेकिन मुझे कोई उचित समाधान नहीं मिला है। –
"एनक्रिप्शन" के स्थान पर एक प्रोजेक्ट लेवल वैरिएबल जोड़ना एक विकल्प हो सकता है। अपने देव वातावरण के लिए इसे एक खाली स्ट्रिंग या टिप्पणी लाइन के रूप में जोड़ें। उन वातावरणों के लिए जिन्हें एन्क्रिप्ट किया जाना चाहिए, मान के लिए "एनक्रिप्शन के साथ" का उपयोग करें। अपनी प्रकाशित प्रोफाइल में सेट करें। –