Подтвердить что ты не робот

Развертывание проекта SSIS (SQL Server 2012) вне сети

Я создал проект SSIS на своем ПК и подключаюсь к SQL 2012 Server за пределами нашей сети (через SQL Authentication) при выполнении пакета. Настало время развернуть проект на тот же сервер, но я ударил стену. Просматривая встроенный мастер развертывания, я ввожу имя сервера (так же, как я ввел его, чтобы подключиться к базе данных с менеджерами соединений) и получить ошибку "ненадежного домена" (для этого требуется проверка подлинности Windows, а не проверка подлинности SQL).

Я думаю, что также может быть актуальным, что я использую параметры для установки значений для среды в проекте.

Как развернуть проект SSIS на SQL Server вне сети?

Я также должен добавить, что в моих поисках я столкнулся с тем, кто пытался сделать это с помощью VPN-соединения (без разрешения), заключается в том, как это обычно делается?

4b9b3361

Ответ 1

У вас есть 3 инструмента для развертывания файлов .ispac в каталоге SSISDB.

Вы уже используете мастер, и он не работает из-за проблем с 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, запущенного с использованием иностранных учетных данных).

Ответ 2

Один из способов, которым я пользовался при столкновении с аналогичной проблемой, - это:

  • Построен проект в VS 2012.
  • Скопируйте файл *.ispac на удаленный сервер.
  • Дважды нажмите "*.ispac", запустите мастер, выбрав целевой сервер и каталоги.
  • Подключитесь к учетной записи Windows с требуемым уровнем доступа и ролями, проверьте пакет.

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

Надеюсь, что это поможет.