2012-11-06 15 views
5

के आधार पर संग्रहित प्रक्रिया 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 इस सामग्री को होने के लिए मजबूर नहीं करता है और हम सभी एसपी को एन्क्रिप्शन के साथ बदल देंगे।

+0

एसपी के परिवर्तन को बदलने के लिए एक पोस्ट परिनियोजन स्क्रिप्ट चाल चल सकती है। –

+0

@ aclear16 हां, मैं उस पर सोच रहा था लेकिन मुझे कोई उचित समाधान नहीं मिला है। –

+0

"एनक्रिप्शन" के स्थान पर एक प्रोजेक्ट लेवल वैरिएबल जोड़ना एक विकल्प हो सकता है। अपने देव वातावरण के लिए इसे एक खाली स्ट्रिंग या टिप्पणी लाइन के रूप में जोड़ें। उन वातावरणों के लिए जिन्हें एन्क्रिप्ट किया जाना चाहिए, मान के लिए "एनक्रिप्शन के साथ" का उपयोग करें। अपनी प्रकाशित प्रोफाइल में सेट करें। –

उत्तर

2

"एन्क्रिप्टेड" संग्रहित प्रक्रियाओं को डिक्रिप्ट करना आसान है। मेरा सुझाव है कि आप उन्हें एन्क्रिप्ट करने से परेशान न हों।

आप उन्हें एन्क्रिप्ट करना चाहिए, तो मैं देव में एक पोस्ट तैनाती कदम है जो हर एन्क्रिप्टेड संग्रहीत प्रक्रिया, एक के बाद एक decrypts सुझाव देते हैं। आप sp_execsql और लिंक पर जानकारी का उपयोग करके आसानी से ऐसा कदम बना सकते हैं।

+0

हां, यही वह तरीका है जो काम कर सकता है, लेकिन फिर भी मैं लचीला समाधान ढूंढ रहा हूं जिसके लिए एसपी के देव पर्यावरण पर कुशलता की आवश्यकता नहीं होगी। –

+1

मुझे लगता है कि आपने मुझे गलत समझा है। मेरा मतलब है कि उन्हें बिल्कुल एन्क्रिप्ट न करें - यह समय बर्बाद है। – Ben

+0

ओह .. मैं देखता हूं। लेकिन यह मेरा निर्णय नहीं है। और दुर्भाग्य से मुझे अभी भी एपीपी एसपी की जरूरत है। लेकिन पॉइंटिंग के लिए धन्यवाद। +1) –

संबंधित मुद्दे