Ответ 1
У вас есть 3 инструмента для развертывания файлов .ispac в каталоге SSISDB.
- ISDeploymentWizard.exe
- ManagedObjectModel
- TSQL
Вы уже используете мастер, и он не работает из-за проблем с auth. Я думаю, что даже с вашим подходом MOM вы все равно столкнетесь с проблемами с автоответчиком. Это оставляет подход TSQL, и поскольку у вас есть действительный вход в систему, мы надеемся, что это сработает.
Следующий код будет сериализовать ваш .ispac, создать папку развертывания, если он еще не существует, развернуть проект и затем присвоить значение параметра.
В SSMS вам нужно будет переключить режим в режим SQLCMD, доступный в меню Query. После этого нажмите Ctrl-Shift-M, чтобы открыть макро-вещь, и вы сможете указать, где находится файл .ispac.
USE SSISDB
GO
IF ('$(isPacPath)' = '$' + '(isPacPath)')
BEGIN
THROW 50000, N'This script must be run in SQLCMD mode.', 1;
END
GO
-- You must be in SQLCMD mode
-- setvar isPacPath "C:\sandbox\SSDTDeploy\TSQLDeploy\bin\Development\TSQLDeploy.ispac"
:setvar isPacPath "<isPacFilePath, nvarchar(4000), C:\sandbox\SSDTDeploy\TSQLDeploy\bin\Development\TSQLDeploy.ispac>"
DECLARE
@folder_name nvarchar(128) = 'TSQLDeploy'
, @folder_id bigint = NULL
-- this must match the ispac
, @project_name nvarchar(128) = 'TSQLDeploy'
, @project_stream varbinary(max)
, @operation_id bigint = NULL;
-- Read the zip (ispac) data in from the source file
SELECT
@project_stream = T.stream
FROM
(
SELECT
*
FROM
OPENROWSET(BULK N'$(isPacPath)', SINGLE_BLOB ) AS B
) AS T (stream);
-- Test for catalog existences
IF NOT EXISTS
(
SELECT
CF.name
FROM
catalog.folders AS CF
WHERE
CF.name = @folder_name
)
BEGIN
-- Create the folder for our project
EXECUTE [catalog].[create_folder]
@folder_name
, @folder_id OUTPUT;
END
-- Actually deploy the project
EXECUTE [catalog].[deploy_project]
@folder_name
, @project_name
, @project_stream
, @operation_id OUTPUT;
-- Check to see if something went awry
SELECT
OM.*
FROM
catalog.operation_messages AS OM;
-- Use this to set parameters
-- http://msdn.microsoft.com/en-us/library/ff878162.aspx
EXECUTE catalog.set_object_parameter_value
-- Use the value 20 to indicate a project parameter
-- or the value 30 to indicate a package parameter
@object_type = 20
, @folder_name = @folder_name
, @project_name = @project_name
, @parameter_name = N'' -- nvarchar(128)
, @parameter_value = NULL -- sql_variant
, @object_name = N'' -- nvarchar(260)
, @value_type = '' -- char(1)
-- Use the character V to indicate that parameter_value is a literal value
-- that will be used by default if no other values are assigned prior
-- to execution.
-- Use the character R to indicate that parameter_value is a referenced value
-- and has been set to the name of an environment variable.
-- This argument is optional, the character V is used by default
Если вы посетили конференцию SQL Pass Summit 2012, я продемонстрировал это в своем выступлении в 2012 Model Deployment Model, но я не рассматривал параметр. Я верю, что последний звонок будет правильным, но я не проверил его. Я связался с документацией для вызова процедуры, чтобы вы могли адаптировать ее к вашим конкретным потребностям.
Пример Реализация PowerShell
Обновление в августе 2013 года
Я что-то узнал у своего нынешнего клиента. У нас есть наши ноутбуки, которые подключены к домашнему домену. У нас есть учетные записи в клиентской сети AD. Всякий раз, когда мне нужно "делать" что-то в клиентском мире, мне нужно запустить мой процесс и дать ему указание представить мои "чужие" учетные данные. Это делает возможным RunAs. Альтернативный ссылка
Я создал набор пакетных файлов, которые запускают каждый необходимый мне процесс. Они принимают форму
runas /netonly:ForeignDomain\Doppelganger "C:\windows\system32\cmd.exe"
У меня есть один для командной строки (выше), Visual Studio, SSMS, PowerShell, PowerShell ISE и некоторых других специальных приложений, которые должны работать с их доменом.
Используя подход runas, я смог развернуть пакеты, используя все вышеперечисленные методы (а также развертывание непосредственно из экземпляра Visual Studio, запущенного с использованием иностранных учетных данных).