Во-первых, я всегда рекомендую разделить процессы сборки и развертывания. Они не одно и то же, и разделение упрощает использование более зрелых рабочих процессов управления конфигурацией. Примером этого может быть возможность продвинуть предыдущую сборку (которая прошла через систовую среду и с учетом всех ясных) в среду 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.
Работает ли сценарий с использованием PowerShell удален? – Kiquenet 2014-06-06 11:46:35