Во-первых, я всегда рекомендую разделять процессы сборки и развертывания. Они не одно и то же, и разделение облегчает использование более зрелых рабочих процессов управления конфигурацией. Примером этого может быть продвижение предыдущей сборки (которая проходила через систематическую среду и с полной ясностью) в среду 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'. Это противный гоча .