2008-11-24 8 views
5

मैं अपने एसएसआईएस और एसएसएएस कलाकृतियों की तैनाती के आधार पर दूरस्थ विकास SQL ​​सर्वर 2005 & 2008 उदाहरणों पर तैनाती को स्वचालित करना चाहता हूं।मैं दूरस्थ SQL सर्वर उदाहरण पर प्रोग्रामेटिक रूप से बोली कलाकृतियों को कैसे तैनात करूं?

इसके लिए सबसे अच्छा समाधान क्या होगा? मैं स्रोत नियंत्रण प्रणाली के रूप में टीएफएस 2008 का उपयोग कर रहा हूं, इसलिए मैं एमएसबिल्ड और अनुसूचित टीम बिल्ड के साथ समाधान को एकीकृत करना चाहता हूं।

उत्तर

2

एसएसआईएस सबसे आसान है, जब मैं एसएसआईएस का उपयोग कर रहा था, हमने अपने पैकेज को एक फाइल में संग्रहीत किया और हम सभी को फ़ाइल को सी: \ प्रोग्राम फ़ाइलें \ माइक्रोसॉफ्ट एसक्यूएल सर्वर \ 90 \ डीटीएस में सही निर्देशिका में कॉपी किया गया था \ संकुल। आप अपने MSBuild के अंत में एक कॉपी कार्य जोड़कर कर सकते हैं। मुझे यकीन नहीं है कि एक्सएमएल आउटपुट निर्देशिका में डिफ़ॉल्ट रूप से उपलब्ध होगा, तो इसके लिए देखें।

SSAS के लिए के रूप में, मैं कभी नहीं आसपास यह स्वचालित करने के लिए मिल गया है लेकिन, आप विश्लेषण प्रबंधन ऑब्जेक्ट्स (एमो) में देखना, किताबें से खींच ऑनलाइन यह कहना है चाहता हूँ:

विश्लेषण प्रबंधन ऑब्जेक्ट्स (एमो) प्रदान करता है पर एक प्रोग्रामैटिक इंटरफेस डेवलपर के लिए उपलब्ध विश्लेषण सेवाओं के लिए पूर्ण कमांड सेट। इसलिए, एएमओ को तैनाती के लिए और पर भी कई प्रशासनिक आदेशों का उपयोग किया जा सकता है जो अन्यथा इसका समर्थन करता है। अधिक एएमओ के उपयोगकर्ता के बारे में जानकारी प्रशासनिक कार्य को स्वचालित करने के लिए, विश्लेषण प्रबंधन ऑब्जेक्ट्स (एएमओ) देखें।

लघु उद्योगों के साथ
2

नहीं कर सकते मदद लेकिन मैं SSAS और TFS 2010 के साथ मदद कर सकते हैं

एक SSAS परियोजना अभ्यस्त के साथ टीम का निर्माण 2010 में निर्माण निर्माण कार्य करवाने के लिए एक MSBuild परियोजना है कि devenv.exe कॉल की आवश्यकता होगी निर्माण करने के लिए और फिर टीम बिल्ड आउटपुट निर्देशिका में फ़ाइलों की प्रतिलिपि बनाएँ।

<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
     <Target Name="Build"> 
      <PropertyGroup> 
        <DevEnvTool Condition="'$(DevEnvTool)'==''">C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe</DevEnvTool> 
        <DevEnvBuildCommand>"$(DevEnvTool)" "$(MSBuildProjectDirectory)\Nexus_VS2008.sln" /Build</DevEnvBuildCommand> 
      </PropertyGroup> 
      <Exec Command="$(DevEnvBuildCommand)" /> 
      <ItemGroup> 
       <SSASSourceFiles Include="$(MSBuildProjectDirectory)\Readify.Nexus.Analysis\bin\Readify.Nexus.Analysis.*"/> 
      </ItemGroup> 

      <Copy SourceFiles="@(SSASSourceFiles)" DestinationFolder="$(OutDir)" /> 
     </Target> 
    </Project> 

यह TFS निर्माण के ड्रॉप फ़ोल्डर में SSAS कलाकृतियों का निर्माण करेगा:

यहाँ एक उदाहरण परियोजना है कि मैं का उपयोग किया है से पहले है। कुछ शक्तियों के साथ एसएसएएस क्यूब्स बनाया जा सकता है और टीएफएस नियोक्ता की मदद से तैनात किया जा सकता है। कम से कम Powerhell स्क्रिप्ट को "microsoft.analysisservices.deployment.exe" निष्पादित करने की आवश्यकता है। एसएसएएस के लिए विभिन्न कॉन्फ़िगरेशन सेटिंग्स को बदलने के लिए स्क्रिप्ट का भी उपयोग किया जा सकता है।

0

मुझे बिल्डिंग को स्वचालित करने के लिए स्क्रिप्टिंग वीएस की वकालत करने वाली बहुत सी पोस्ट मिलीं, जो सीआई पर्यावरण में हमेशा संभव नहीं होती है।

थोड़ा और खुदाई के साथ मुझे http://sqlsrvanalysissrvcs.codeplex.com/ भी मिला जिसमें एमएसबिल्ड में .asडेटाबेस फ़ाइलों को बनाने के लिए एक एमएसबिल्ड कार्य शामिल है।

2

सबसे पहले मैं हमेशा निर्माण और तैनाती प्रक्रियाओं को अलग करने की सिफारिश करता हूं। वे एक और समान नहीं हैं, और पृथक्करण अधिक परिपक्व विन्यास प्रबंधन वर्कफ़्लो का उपयोग करना आसान बनाता है। इसका एक उदाहरण एक रिलीज उम्मीदवार के रूप में एक यूएटी पर्यावरण को पिछले निर्माण (जो एक सिस्टेस्ट पर्यावरण के माध्यम से किया गया है और सभी स्पष्ट किया गया है) को बढ़ावा देने में सक्षम होगा। ऐसा करने के लिए आप पुनर्निर्माण नहीं करना चाहते हैं। अपने निर्माण कलाकृतियों को कैप्चर करें, और उनसे अलग से तैनात करें।

वैसे भी

...

लघु उद्योगों काफी सीधा है: सभी निर्माण तो आप सिर्फ उन्हें किसी भी तरह हड़पने के लिए की जरूरत है वास्तव में, उत्पादन फ़ोल्डर में प्रतिलिपि संकुल है करता है (निर्भर करता है कि क्या आप के साथ बनाने के लिए उपयोग - मैं TeamCity का उपयोग)।फिर अपने तैनाती की प्रक्रिया में है, तो आप काफी आसानी से SMO उन्हें लघु उद्योगों सर्वर पर अपलोड करने के लिए उपयोग कर सकते हैं:

$app = new-object Microsoft.SqlServer.Dts.Runtime.Application 
$app.SaveToSqlServerAs($packageObj, $null, "\\$folderName\$($packageObj.Name)$packageNameSuffix", $serverName, $null, $null); 

(दिलचस्प बात यह है इस SSIS सेवा खुद के माध्यम से जाने के लिए नहीं लगता है, लेकिन MSDB संग्रहीत proc एपीआई के माध्यम से। ऐसा नहीं है कि यह किसी भी तरह से भिन्नता बनाता है, लेकिन यह तब भी काम करता है जब उपयोगकर्ता को that DCOM issue)

एसएसएएस बहुत कठिन है, तो एसएसआईएस सेवा तक दूरस्थ रूप से पहुंच नहीं है। जबकि आप AMO के साथ सामानों का ढेर कर सकते हैं, जो मैं अपने तैनाती के भाग के रूप में करता हूं, मुझे कभी भी समाधान निर्माण (जैसे .asडेटाबेस फ़ाइल) से आउटपुट लेने और उन्हें परिवर्तित करने का एक आसान तरीका नहीं मिला है एक्सएमएलए को खरोंच से ओलाप डेटाबेस स्कीमा बनाने की आवश्यकता है। एक परिवर्तन गुम है, जिसे मुझे लिखने के लिए परेशान नहीं किया जा सका।

$asDeploy = "$programfiles32\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\Microsoft.AnalysisServices.Deployment.exe" 

write-host "Generating XMLA" 
start-process -wait -FilePath:$asDeploy -ArgumentList:"$pwd\..\bin\MyOlap\MyOlap.asdatabase","/d","/o:$pwd\MyOlap.xmla" 
if (-not $?){ 
    throw "Failed to generate XMLA: errors were reported above"; 
} 

write-host "Deploying SSAS Database" 
.\ascmd.exe -S $olapServer -i "$pwd\MyOlap.xmla" 
if (-not $?){ 
    throw "Failed to deploy cube: errors were reported above"; 
} 

मुझे यकीन है कि तैनाती बनाने:

इसके बजाय मैं SSAS deployment utility है, जो एक तैनाती की प्रक्रिया के हिस्से के रूप में कमांड लाइन से इस्तेमाल किया जा सकता का उपयोग करें, यह XMLA पैदा करते हैं और फिर इसे निष्पादित करने के लिए मिलता है उपरोक्त घन को संसाधित नहीं करता है (मैं .deploymentoptions फ़ाइल को फिर से लिखता हूं) ताकि मैं तैनात क्यूब के बावजूद एएमओ का उपयोग कर सकूं और उस वातावरण के लिए आवश्यक डेटा स्रोत अपडेट कर सकूं। फिर मैं एक प्रक्रिया को लात मारता हूं।

आपने नहीं पूछा था, लेकिन एसएसआरएस के लिए आप केवल आरडीएल को बिल्ड से पकड़ सकते हैं, और उन्हें सेवा के लिए webservice API का उपयोग कर सकते हैं, और जाहिर है कि डेटाबेस के लिए आप एक SQL जीडीआर प्रोजेक्ट का उपयोग करेंगे, और कमांड लाइन का उपयोग करें तैनाती उपकरण वहाँ। एक साथ लिया गया है आप एक संपूर्ण स्क्रिप्ट से संस्करण को इत्यादि के आसपास काफी कड़े नियंत्रण के साथ एक स्क्रिप्ट से तैनात कर सकते हैं ...

मैंने पिछले 5 सालों से विभिन्न परियोजनाओं पर इन दृष्टिकोणों का उपयोग किया है, और वास्तव में एक पुस्तकालय को समझ लिया है ऐसा करने के लिए उपयोगी PowerShells। एक दिन मैं इन्हें साफ कर दूंगा और उन्हें छोड़ दूंगा।

[17/मई] नोट: तैनाती जादूगर की एसक्यूएल 2008 R2 संस्करण (SQL/100/फ़ोल्डर में) एक जीयूआई अनुप्रयोग, नहीं एक कंसोल अनुप्रयोग के रूप में चिह्नित किया जाता है (जैसे 2005), इसलिए जैसा कि पहले लिखा गया था स्क्रिप्ट इसे पूरा करने के लिए इंतजार नहीं करता है! उपर्युक्त कोड बदले में स्पष्ट '-wait' के साथ स्टार्ट-प्रोसेस का उपयोग करने के लिए बदला गया। यह nasty gotcha है।

+0

क्या स्क्रिप्ट पावरहेल पावरहेल रीमोटिंग का उपयोग करके काम करता है? – Kiquenet

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