2014-11-04 2 views
1

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

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

Я попытался получить сценарий выполнения из пакета и поместив его в PowerShell и используя это как SQL-запрос, мой долговременный страх с этим методом заключается в том, что пакеты меняются, тогда мне нужно отслеживать это.

Самое простое решение, которое я хотел бы иметь, это выполнить пакет только по имени, если мне нужно обновить имя, которое проще, чем весь SQL-скрипт для каждого пакета. Возможно ли это более простое решение и какой лучший способ это сделать? До сих пор мне не повезло, что это выполнялось с SMO. Я пробовал что-то вроде:

[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SMO") | out-null 
$SMOserver = New-Object ('Microsoft.SqlServer.Management.Smo.Server') -argumentlist $Server 

#This sets the connection to mixed-mode authentication 
$SMOserver.ConnectionContext.LoginSecure=$true 

$query = @" this is where my execute SQL goes from the SSIS catalog "@ 

$db2 = New-Object ('Microsoft.SqlServer.Management.Smo.Database') 
$db2 = $SMOserver.Databases[$database] 
Write-Host "My Query: $query" 
$results2 = $db2.ExecuteNonQuery($query) 
Write-Host "Results: " $results2 

Хотя, когда я запускаю это, я часто получаю только возврат, без значений.

ответ

0

Закончен, обойдя это, используя sqlcmd и сделав отдельные задачи в Джобс, а затем используя sqlcmd для выполнения заданий.

Так с именем пользователя и Пароль для:

$ jobOutput = SQLCMD -S $ сервер -U $ имя пользователя -P $ пароль -Q «EXEC msdb.dbo.sp_start_job @ JOB_NAME = N '$ JobName »

Это позволило доступ и дал мне некоторый вывод о результатах,

Смежные вопросы