Как программно развернуть артефакты BIDS на удаленном экземпляре SQL Server? - PullRequest
5 голосов
/ 24 ноября 2008

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

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

Ответы [ 4 ]

2 голосов
/ 11 мая 2012

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

В любом случае ...

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

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

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

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

Вместо этого я использую утилиту развертывания SSAS , которую можно использовать из командной строки как часть процесса развертывания, получить it для генерации 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 веб-сервиса для их развертывания, и, очевидно, для баз данных вы будете использовать проект SQL GDR и использовать развертывание из командной строки инструмент там. Взятые вместе, вы можете развернуть весь проект BI из одного скрипта с довольно жестким контролем над версиями и т. Д ...

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

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

2 голосов
/ 04 марта 2011

Не могу помочь с 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 в папке drop сборки TFS. С помощью небольшой оболочки PowerSube кубы SSAS можно создавать и развертывать с помощью TFS Deployer. Как минимум сценарий powershell должен выполнить «microsoft.analysisservices.deployment.exe». Сценарий также можно использовать для изменения различных параметров конфигурации для SSAS.

2 голосов
/ 24 ноября 2008

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

Что касается SSAS, я никогда не удосужился автоматизировать его, но вам захочется взглянуть на объекты управления анализом (AMO), в которых из Книги в Интернете написано:

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

0 голосов
/ 07 марта 2011

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

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

...