2008-11-24 8 views
5

Я хотел бы автоматизировать развертывание артефактов SSIS и SSAS для удаленной разработки SQL Server 2005 & 2008 экземпляров по расписанию.Как программно развернуть артефакты BIDS на удаленный экземпляр SQL Server?

Какое будет лучшее решение для этого? Я использую TFS 2008 в качестве исходной системы управления, поэтому я хотел бы интегрировать решение с MSBuild и запланированной командой Build.

ответ

2

SSIS является самым простым, когда я использовал SSIS, мы сохранили наши пакеты в файле, и все, что нам нужно сделать, это скопировать файл в правильный каталог в C: \ Program Files \ Microsoft SQL Server \ 90 \ DTS \ Пакеты. Что вы можете сделать, добавив задачу «Копировать» в конец вашего MSBuild. Я не уверен, будет ли xml доступен по умолчанию в выходном каталоге, поэтому следите за этим.

Что касается SSAS, я никогда не удосужился автоматизировать его, но вы хотите, чтобы посмотреть в Управление анализа объектов (АМО), потянув из книг онлайн он говорит:

Анализ управляющих объектов (АМО) предоставляет программный интерфейс для полный набор команд для служб Analysis Services, доступный разработчику . Поэтому AMO может использоваться для развертывания, а также для многих административных команд, которые в противном случае поддерживаются. Для получения более информации о пользователе AMO для автоматизации любого вида административной задачи см. В разделе Объекты управления анализом (AMO).

2

Cant помощь с SSIS, но я могу помочь с SSAS и TFS 2010

проект

SSAS обыкновение строить с помощью Team Build в 2010 году, чтобы получить работу сборки потребуется MsBuild проект, который вызывает devenv.exe выполнить сборку, а затем скопировать файлы в выходной каталог Team Build.

Вот пример проекта, который я использовал раньше:

<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> 

Это создаст артефакты SSAS в папке капания TFS построить. С небольшим количеством powershell кубы SSAS могут быть созданы и развернуты с помощью TFS Deployer. Как минимум сценарий powershell должен выполнить «microsoft.analysisservices.deployment.exe». Сценарий также может использоваться для изменения различных параметров конфигурации для SSAS.

0

Я нашел много сообщений, посвященных скрипту VS для автоматизации сборки, что не всегда возможно в среде CI.

С еще большим количеством копания я также нашел http://sqlsrvanalysissrvcs.codeplex.com/, который включает в себя задачу msbuild для создания файлов .asdatabase в msbuild.

2

Во-первых, я всегда рекомендую разделить процессы сборки и развертывания. Они не одно и то же, и разделение упрощает использование более зрелых рабочих процессов управления конфигурацией. Примером этого может быть возможность продвинуть предыдущую сборку (которая прошла через систовую среду и с учетом всех ясных) в среду UAT в качестве кандидата на выпуск. Вы не хотите rebuild, чтобы выполнить это. Захватите артефакты сборки и разверните их отдельно.

Во всяком случае ...

SSIS довольно прост: все билда действительно копировать пакеты в папку вывода, так что вам просто нужно, чтобы захватить их каким-то образом (зависит от того, что вы используете, чтобы построить с - я использую TeamCity).Затем в процессе развертывания, вы можете довольно легко использовать SMO, чтобы загрузить их на сервер служб SSIS:

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

(Интересно, это не кажется, идут через сам сервис SSIS, но через MSDB ХП API. Не то, чтобы это имело большое значение в любом случае, но работает, даже если у пользователя нет доступа к службе SSIS удаленно из-за that DCOM issue)

SSAS намного сложнее. В то время как вы можете делать кучу вещей с AMO, которые я делаю как часть моих развертываний, я никогда не находил простой способ вывода выходов из сборки решения (например, файла .asdatabase) и преобразования их в XMLA требуется для создания схемы базы данных olap с нуля. Там отсутствует преобразование, о котором я не мог написать.

Вместо этого я использовать SSAS deployment utility, который может быть использован из командной строки как часть процесса развертывания, получить он генерировать XMLA и затем выполнить его:

$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"; 
} 

Я убеждаюсь развертывание выше, не обрабатывает куб (я перезаписываю файл .deploymentoptions), чтобы я мог подмножественно использовать AMO для запуска с использованием развернутого куба и обновления источников данных, необходимых для этой среды. Затем Я начинаю процесс.

Вы не спросили, но для SSRS вы можете просто взять RDL из сборки и использовать API-интерфейс webservice для их развертывания, и, очевидно, для баз данных, которые вы используете SQL GDR, и используйте командную строку инструмент развертывания. Взятые вместе, вы можете развернуть весь проект BI из одного сценария с довольно жестким контролем над версиями и т. Д.

Я использовал эти подходы в течение последних 5 лет или около того по различным проектам и набрал библиотеку действительно полезные PowerShells для этого. Однажды я очищу их и выпущу.

[17/May] Примечание: версия мастера развертывания SQL 2008 R2 (в папке SQL/100 /) помечена как приложение графического интерфейса, а не консольное приложение (например, 2005 год), поэтому скрипт, как было написано ранее, не ждет его завершения! Приведенный выше код изменился, чтобы использовать start-process с явным «-wait». Это nasty gotcha.

+0

Работает ли сценарий с использованием PowerShell удален? – Kiquenet 2014-06-06 11:46:35