Выполнение пакета служб SSIS с помощью PowerShell

Применимо к: SQL Server Integration Runtime служб SSIS в Фабрика данных Azure

В этом кратком руководстве описывается применение скрипта PowerShell для подключения к серверу базы данных и запуска пакета служб SSIS.

Предварительные требования

Сервер Базы данных SQL Azure прослушивает порт 1433. Если вы пытаетесь подключиться к серверу базы данных SQL Azure изнутри корпоративного брандмауэра, для успешного подключения в этом брандмауэре должен быть открыт данный порт.

Поддерживаемые платформы

Сведения, приведенные в этом кратком руководстве, можно использовать для выполнения пакета SSIS на следующих платформах:

  • SQL Server в Windows.

  • Среда выполнения интеграции SSIS в Фабрике данных Azure, где каталог SSIS (SSISDB) размещен в Управляемом экземпляре SQL Azure. Дополнительные сведения о развертывании и запуске пакетов в Azure см. в разделе Перенос рабочих нагрузок SQL Server Integration Services в облако.

Сведения, приведенные в этом кратком руководстве, не могут быть использованы для выполнения пакета SSIS в Linux. Дополнительные сведения о запуске пакетов на Linux см. в разделе Извлечение, преобразование и загрузка данных в Linux с помощью служб SSIS.

Получение сведений о подключении для базы данных SQL Azure

Для запуска пакета в базе данных SQL Azure вам нужны сведения, необходимые для подключения к базе данных каталога служб SSIS (SSISDB). В описанных ниже процедурах вам потребуется полное имя сервера и имя для входа.

  1. Войдите на портал Azure.
  2. Выберите Базы данных SQL в меню слева, а затем на странице Базы данных SQL — базу данных SSISDB.
  3. На странице Обзор для базы данных просмотрите полное имя сервера. Чтобы увидеть параметр Щелкните, чтобы скопировать, наведите указатель мыши на имя сервера.
  4. Если вы забыли данные для входа на сервер Базы данных SQL Azure, перейдите на соответствующую страницу, чтобы просмотреть имя администратора сервера. При необходимости вы можете сбросить пароль.
  5. Щелкните Показать строки подключения к базам данных.
  6. Просмотрите полную строку подключения ADO.NET.

Поставщик SSIS PowerShell

Поставщик PowerShell служб SSIS можно использовать для подключения к каталогу служб SSIS и выполнения пакетов в нем.

Ниже приведен простой пример того, как выполнить пакет служб SSIS в каталоге пакетов с помощью поставщика PowerShell для служб SSIS.

(Get-ChildItem SQLSERVER:\SSIS\localhost\Default\Catalogs\SSISDB\Folders\Project1Folder\Projects\'Integration Services Project1'\Packages\ |
WHERE { $_.Name -eq 'Package.dtsx' }).Execute("false", $null)

Сценарий PowerShell

Предоставьте соответствующие значения для переменных в начале следующего скрипта, а затем выполните скрипт, чтобы запустить пакет служб SSIS.

Примечание

В следующем примере используется проверка подлинности Windows. Чтобы использовать проверку подлинности SQL Server, замените аргумент Integrated Security=SSPI; на User ID=<user name>;Password=<password>;. Если вы подключаетесь к серверу базы данных SQL Azure, вы не можете использовать проверку подлинности Windows.

# Variables
$SSISNamespace = "Microsoft.SqlServer.Management.IntegrationServices"
$TargetServerName = "localhost"
$TargetFolderName = "Project1Folder"
$ProjectName = "Integration Services Project1"
$PackageName = "Package.dtsx"

# Load the IntegrationServices assembly
$loadStatus = [System.Reflection.Assembly]::Load("Microsoft.SQLServer.Management.IntegrationServices, "+
    "Version=14.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL")

# Create a connection to the server
$sqlConnectionString = `
    "Data Source=" + $TargetServerName + ";Initial Catalog=master;Integrated Security=SSPI;"
$sqlConnection = New-Object System.Data.SqlClient.SqlConnection $sqlConnectionString

# Create the Integration Services object
$integrationServices = New-Object $SSISNamespace".IntegrationServices" $sqlConnection

# Get the Integration Services catalog
$catalog = $integrationServices.Catalogs["SSISDB"]

# Get the folder
$folder = $catalog.Folders[$TargetFolderName]

# Get the project
$project = $folder.Projects[$ProjectName]

# Get the package
$package = $project.Packages[$PackageName]

Write-Host "Running " $PackageName "..."

$result = $package.Execute("false", $null)

Write-Host "Done."

Дальнейшие действия