Usuário com melhor resposta
integration server

Pergunta
-
Olá!
Tenho um problemão. Hoje a minha empresa trabalha na plataforma sql 2000 e pretende migrar para o sql 2005, nós temos uma proc que faz execução de alguns DTS através da criação do objeto DTS.Package2.
Alguem sabe me dizer se é possível no sql 2005 criar um objeto que chame os dtsx e pegue informações como o nome do step, se houve falha ou sucesso...?
Obrigada.
Respostas
-
Boa Noite,
A utilização das procedures sp_OA* não está atrelada ao uso do DTS. Elas certamente vão ser descontinuadas em alguma edição futuras mas isso não está sequer divulgado ainda, então acredito que só no SQL Server 2012 e olhe lá. O DTS não existe mais no SQL Server 2005 e embora possa ser executado, é chamado através de uma tarefa do SSIS que nada tem a ver com as procedures sp_OA*
Independente disso, acho que o CLR é uma ótima alternativa. O CLR (Common Language RunTime) permite que você escreva procedures utilizando alguma linguagem do Framework .NET. Como o SSIS também possui classes nesse Framework, você pode codificar um Assembly em .NET para executar um pacote SSIS. Posteriormente você pode carregar esse Assembly para o SQL Server e executá-lo.
É uma implementação que acho que vai demorar bastante para ser descontinuada. O CLR baseia-se no código gerenciado, enquanto as procedures sp_OA* utilizam o COM e código não gerenciado. Se as procedures sp_OA* ainda não tem data para serem retiradas, muito menos o CLR
[ ]s,
Gustavo
Todas as Respostas
-
-
Olá Fabiana,
O DTS não existe no SQL Server 2005. Ele foi substituído por uma implementação bem superior conhecida como SSIS (SQL Server Integration Services) que assim como o DTS também possui seu modelo de objetos. Só que a conversão não é tão direta e se você está trabalhando nesse nível, receio que tenha de reescrever boa parte de seus pacotes, já que o modelo de objetos do SSIS não é o mesmo do DTS.
Para não atrasar a migração ou ainda impedí-la, o SSIS possui uma tarefa chamada Execute DTS Package que pode executar um pacote DTS a partir do SSIS.
[ ]s,
Gustavo
-
-
Olá Gustavo,
Nós não utilizaremos mais DTS e sim SSIS. Hoje nós temos uma proc que executa os DTS (além de fazer o controle das falhas) segue parte do código que exemplificam o que acontece. Gostaria de saber se é possivel criar um objeto que execute o DTSX.
--Cria o objeto pacote
EXEC @intHResult = sp_OACreate 'DTS.Package2', @intHPkg OUTPUT
--Carrega o pacote
SET @txtMetodo = 'LoadFromSQLServer'
EXEC @intHResult = sp_OAMethod @intHPkg, @txtMetodo, NULL, @ServerName = @txtNomeServidor,
@ServerUserName = @txtServerUsuario,
@ServerPassword = @txtServerSenha,
@Flags = @intFlagsPerm,
@PackageName = @txtNomeDTS
--Executa o pacote
SET @txtMetodo = 'Execute'
EXEC @intHResult = sp_OAMethod @intHPkg, @txtMetodo, NULL
Obrigada.
Fabiana
-
Olá Fabiana,
Se a utilização é essa então está mais fácil do que eu imaginei. Você pode continuar utilizando as procedures sp_OA* para instanciar objetos COM+ e certamente é possível de fazer isso com o SSIS. No entanto, além de deixar o DTS para trás, possivelmente você vai deixar a sp_OA* para trás também. É melhor fazer isso com o CLR
[ ]s,
Gustavo
-
Gustavo,
A minha preocupação é que estas procedures sp_OA* existam no sql 2005 porque ainda é possível executar DTS no Integration Service, mas numa próxima mudança de platafroma o DTS eventualmente pode não ser mais utilizado e estas procs desaparecam, ai seria outro retrabalho rescrever a aplicação novamente. Então por isso gostaria se saber se há outra alternativa "mais moderna". Você citou o CLR, o que seria? Só para orientar minha pesquisa sobre.
Obrigada!
-
Boa Noite,
A utilização das procedures sp_OA* não está atrelada ao uso do DTS. Elas certamente vão ser descontinuadas em alguma edição futuras mas isso não está sequer divulgado ainda, então acredito que só no SQL Server 2012 e olhe lá. O DTS não existe mais no SQL Server 2005 e embora possa ser executado, é chamado através de uma tarefa do SSIS que nada tem a ver com as procedures sp_OA*
Independente disso, acho que o CLR é uma ótima alternativa. O CLR (Common Language RunTime) permite que você escreva procedures utilizando alguma linguagem do Framework .NET. Como o SSIS também possui classes nesse Framework, você pode codificar um Assembly em .NET para executar um pacote SSIS. Posteriormente você pode carregar esse Assembly para o SQL Server e executá-lo.
É uma implementação que acho que vai demorar bastante para ser descontinuada. O CLR baseia-se no código gerenciado, enquanto as procedures sp_OA* utilizam o COM e código não gerenciado. Se as procedures sp_OA* ainda não tem data para serem retiradas, muito menos o CLR
[ ]s,
Gustavo
-
-
-
-
Fabiana,
Não tenho certeza, acredito que não pois o DTSRun abra uma sessão para trabalhar e o conjunto de dados que ele esta processando normalmente deve retornar informações para que esta sessão seja encerrada.
Se invês de utilizar o DTSRun utilizar o DTExec!!!
Vou tentar fazer alguns testes aqui com o DTSRun sobre este retorno de informações!!!!
-
-
Fabiana,
Isso vai depender da sua necessidade, existem vários para trabalhar com o DTExec, veja estes que extraí diretamente do Books On-line:
Examples
Running Packages
To execute an SSIS package saved to SQL Server using Windows authentication, use the following code:
dtexec /sq pkgOne /ser productionServer
To execute an SSIS package saved to the File System folder in the SSIS Package Store, use the following code:
dtexec /dts "\File System\MyPackage"
To validate a package that uses Windows Authentication and is saved in SQL Server without executing the package, use the following code:
dtexec /sq pkgOne /ser productionServer /va
To execute an SSIS package that is saved in the file system, use the following code:
dtexec /f "c:\pkgOne.dtsx"
To execute an SSIS package that is saved in the file system, and specify logging options, use the following code:
dtexec /f "c:\pkgOne.dtsx" /l "DTS.LogProviderTextFile;c:\log.txt"
To execute a package that uses Windows Authentication and is saved to the default local instance of SQL Server, and verify the version before it is executed, use the following code:
dtexec /sq pkgOne /verifyv {c200e360-38c5-11c5-11ce-ae62-08002b2b79ef}
To execute an SSIS package that is saved in the file system and configured externally, use the following code:
dtexec /f "c:\pkgOne.dtsx" /conf "c:\pkgOneConfig.cfg"
Note: The package_path or filespec arguments of the /SQL, /DTS, or /FILE options must be enclosed in quotation marks if the path or file name contains a space. If the argument is not enclosed in quotation marks, the argument cannot contain white space. -
-