Создание папки SSIS с PowerShell 2.0 - PullRequest
0 голосов
/ 13 июня 2018

Я ищу информацию, которая может показаться простой для получения, но я не могу ее достать.

Я хочу создать папку в каталоге SSISDB через скрипт Powershell, но я получаюошибка, из-за которой Powershell не может загрузить сборки: Microsoft.sqlserver.BatchParser и Microsoft.sqlserver.BatchParserClient, даже если они присутствуют в C: \ Windows \ Assembly.

Но на самом деле я подозреваю, что PowerShell работаетсо слишком старой версией 2.0.Кто-нибудь может подтвердить, что мы можем создать папку каталога SSIS с версией 2.0 Powershell?

Спасибо за помощь

1 Ответ

0 голосов
/ 13 июня 2018

Так как код не был предоставлен, отладка ужасно непонятна, почему он не работает.Тем не менее, этот код - то, что я использую как часть моего развертывания ispac.

[Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.Management.IntegrationServices") | Out-Null

#this allows the debug messages to be shown
$DebugPreference = "Continue"

# Retrieves a Integration Services CatalogFolder object
# Creates one if not found
Function Get-CatalogFolder
{
    param
    (
        [string] $folderName
    ,   [string] $folderDescription
    ,   [string] $serverName = "localhost\dev2012"
    )

    $connectionString = [String]::Format("Data Source={0};Initial Catalog=msdb;Integrated Security=SSPI;", $serverName)

    $connection = New-Object System.Data.SqlClient.SqlConnection($connectionString)

    $integrationServices = New-Object Microsoft.SqlServer.Management.IntegrationServices.IntegrationServices($connection)
    # The one, the only SSISDB catalog
    $catalog = $integrationServices.Catalogs["SSISDB"]

    $catalogFolder = $catalog.Folders[$folderName]

    if (-not $catalogFolder)
    {
        Write-Debug([System.string]::Format("Creating folder {0}", $folderName))
        $catalogFolder = New-Object Microsoft.SqlServer.Management.IntegrationServices.CatalogFolder($catalog, $folderName, $folderDescription)
        $catalogFolder.Create()
    }
    else
    {
        $catalogFolder.Description = $folderDescription
        $catalogFolder.Alter()
        Write-Debug([System.string]::Format("Existing folder {0}", $folderName))
    }

    return $catalogFolder
}

$folderName = "ProdSupport HR export"
$folderDescription = "Prod deployment check"
$serverName = "localhost\dev2012"

$catalogFolder = Get-CatalogFolder $folderName $folderDescription $serverName

Могут быть более изящные способы сделать это в PowerShell, но это выполняет свою работу.Логическое чтение приведенного выше кода

  • Создание подключения SqlClient к рассматриваемому серверу
  • Создание экземпляра класса IntegrationServices
  • Укажите его в фактическом каталоге (предполагается, что он уже есть).было создано)
  • Проверьте, существует ли папка
  • Если папка не существует, создайте ее
  • Если папка существует, обновите описание
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...