Distribuire ed eseguire pacchetti SSIS utilizzando le stored procedure
Quando un progetto di Integration Services viene configurato in modo da utilizzare il relativo modello di distribuzione, è possibile utilizzare le stored procedure nel catalogo di SSIS per distribuire il progetto ed eseguire i pacchetti. Per informazioni sul modello di distribuzione del progetto, vedere Distribuzione di progetti e pacchetti.
Per distribuire il progetto ed eseguire i pacchetti, è inoltre possibile utilizzare SQL Server Management Studio o SQL Server Data Tools (SSDT). Per ulteriori informazioni, vedere gli argomenti nella sezione Vedere anche.
Suggerimento |
---|
Ad eccezione di catalog.deploy_project, è possibile generare facilmente le istruzioni Transact-SQL per le stored procedure elencate nella procedura descritta di seguito effettuando le operazioni seguenti:
|
Per distribuire ed eseguire un pacchetto utilizzando le stored procedure
Chiamare catalog.deploy_project (database SSISDB) per distribuire il progetto di Integration Services in cui è contenuto il pacchetto per il server Integration Services.
Per recuperare il contenuto binario del file di distribuzione del progetto di Integration Services, per il parametro @project\_stream utilizzare un'istruzione SELECT con la funzione OPENROWSET e il provider BULK per set di righe. Questo provider consente di leggere i dati da un file. Tramite l'argomento SINGLE_BLOB per il provider BULK per set di righe, il contenuto del file di dati viene restituito come un set di righe a riga e colonna singole di tipo varbinary(max). Per ulteriori informazioni, vedere OPENROWSET (Transact-SQL).
Nell'esempio seguente, il progetto SSISPackages_ProjectDeployment viene distribuito nella cartella di pacchetti SSIS nel server Integration Services. I dati binari vengono letti dal file di progetto (SSISPackage_ProjectDeployment.ispac) e archiviati nel parametro @ProjectBinary di tipo varbinary(max). Il valore del parametro @ProjectBinary viene assegnato al parametro @project\_stream.
DECLARE @ProjectBinary as varbinary(max) DECLARE @operation_id as bigint Set @ProjectBinary = (SELECT * FROM OPENROWSET(BULK 'C:\MyProjects\ SSISPackage_ProjectDeployment.ispac', SINGLE_BLOB) as BinaryData) Exec catalog.deploy_project @folder_name = 'SSIS Packages', @project_name = 'DeployViaStoredProc_SSIS', @Project_Stream = @ProjectBinary, @operation_id = @operation_id out
Chiamare catalog.create_execution (database SSISDB) per creare un'istanza dell'esecuzione del pacchetto e, facoltativamente, chiamare catalog.set_execution_parameter_value (database SSISDB) per impostare i valori dei parametri di runtime.
Nell'esempio seguente, tramite catalog.create_execution viene creata un'istanza di esecuzione per package.dtsx che è contenuto nel progetto SSISPackage_ProjectDeployment. Il progetto si trova nella cartella di pacchetti SSIS. Il valore di execution_id restituito dalla stored procedure viene utilizzato per la chiamata a catalog.set_execution_parameter_value. Tramite questa seconda stored procedure il parametro LOGGING_LEVEL viene impostato su 3 (registrazione dettagliata) e un parametro del pacchetto denominato Parameter1 viene impostato su un valore 1.
Per i parametri come LOGGING_LEVEL, il valore di object_type è 50. Per i parametri del pacchetto, il valore di object_type è 30.
Declare @execution_id bigint EXEC [SSISDB].[catalog].[create_execution] @package_name=N'Package.dtsx', @execution_id=@execution_id OUTPUT, @folder_name=N'SSIS Packages', @project_name=N'SSISPackage_ProjectDeployment', @use32bitruntime=False, @reference_id=1 Select @execution_id DECLARE @var0 smallint = 3 EXEC [SSISDB].[catalog].[set_execution_parameter_value] @execution_id, @object_type=50, @parameter_name=N'LOGGING_LEVEL', @parameter_value=@var0 DECLARE @var1 int = 1 EXEC [SSISDB].[catalog].[set_execution_parameter_value] @execution_id, @object_type=30, @parameter_name=N'Parameter1', @parameter_value=@var1 GO
Chiamare catalog.start_execution (database SSISDB) per eseguire il pacchetto.
Nell'esempio seguente, una chiamata a catalog.start_execution viene aggiunta a Transact-SQL per avviare l'esecuzione del pacchetto. Viene utilizzato il valore di execution_id restituito dalla stored procedure catalog.create_execution.
Declare @execution_id bigint EXEC [SSISDB].[catalog].[create_execution] @package_name=N'Package.dtsx', @execution_id=@execution_id OUTPUT, @folder_name=N'SSIS Packages', @project_name=N'SSISPackage_ProjectDeployment', @use32bitruntime=False, @reference_id=1 Select @execution_id DECLARE @var0 smallint = 3 EXEC [SSISDB].[catalog].[set_execution_parameter_value] @execution_id, @object_type=50, @parameter_name=N'LOGGING_LEVEL', @parameter_value=@var0 DECLARE @var1 int = 1 EXEC [SSISDB].[catalog].[set_execution_parameter_value] @execution_id, @object_type=30, @parameter_name=N'Parameter1', @parameter_value=@var1 EXEC [SSISDB].[catalog].[start_execution] @execution_id GO
Per distribuire un progetto da un server in un altro mediante stored procedure
Un progetto può essere distribuito da un server in un altro utilizzando le stored procedure catalog.get_project (database SSISDB) e catalog.deploy_project (database SSISDB).
Prima di eseguire le stored procedure, è necessario effettuare le operazioni riportate di seguito.
Creare un oggetto server collegato. Per ulteriori informazioni, vedere Creazione di server collegati (Motore di database di SQL Server).
Nella pagina Opzioni server della finestra di dialogo Proprietà server collegato impostare RPC e RPC Out su True. Inoltre, impostare Abilita innalzamento di livello delle transazioni distribuite per RPC su False.
Abilitare i parametri dinamici per il provider selezionato per il server collegato espandendo il nodo Provider in Server collegati in Esplora oggetti, facendo clic con il pulsante destro del mouse sul provider e selezionando Proprietà. Selezionare Abilita accanto a Parametro dinamico.
Verificare che Distributed Transaction Coordinator (DTC) venga avviato in entrambi i server.
Chiamare catalog.get_project per restituire i dati binari per il progetto, quindi chiamare catalog.deploy_project. Il valore restituito da catalog.get_project viene inserito in una variabile di tabella di tipo varbinary(max). Tramite il server collegato non possono essere restituiti risultati di tipo varbinary(max).
Nell'esempio seguente, tramite catalog.get_project viene restituito un file binario per il progetto SSISPackages nel server collegato. Tramite catalog.deploy_project il progetto viene distribuito nella cartella denominata DestFolder nel server locale.
declare @resultsTableVar table (
project_binary varbinary(max)
)
INSERT @resultsTableVar (project_binary)
EXECUTE [MyLinkedServer].[SSISDB].[catalog].[get_project] 'Packages', 'SSISPackages'
declare @project_binary varbinary(max)
select @project_binary = project_binary from @resultsTableVar
exec [SSISDB].[CATALOG].[deploy_project] 'DestFolder', 'SSISPackages', @project_binary
Vedere anche
Attivitá
Distribuire progetti nel server Integration Services
Eseguire un pacchetto in SQL Server Data Tools
Eseguire un pacchetto sul server SSIS mediante SQL Server Management Studio