[Cascavel-pm] publicação no CPAN dos módulos de acesso à DTS

glasswalk3r em yahoo.com.br glasswalk3r em yahoo.com.br
Sexta Fevereiro 9 05:19:50 PST 2007


Solli Honorio shonorio em gmail.com wrote:

> Grande Alceu, fico muito contente em vê-lo tão ativo e agora escrevendo o
> teu nome no santo repositório. Só faltou o nome do módulo, e quando não
foi
> a minha surpresa que o cara já começou com um namespace completo ! O DTS
> 'pertence' ao sr. Alceu :)

Obrigado Solli. Mas eu ainda não estou certo sobre o namespace "pertencer"
a mim: eu ainda não recebi um email com aprovação formal da escolha do
namespace. Como eu esperei quase uma semana depois de fazer o pedido antes
de publicar o módulo e o próprio PAUSE incentivar a publicação do módulo,
eu resolvi arriscar.

> Acho interessante abstrair toda esta complexidade, ao contrário do grande
> Nelson.

Foi com essa intenção que eu resolvi escrever o módulo. Internamente ele
faz todas as chamadas via Win32::OLE. Usando essa API eu consegui fazer
testes unitários de pacotes com poucas linhas de código, como o exemplo
abaixo:

use DTS::Application;
use Test::More tests => 6;
use XML::Simple;

my $xml = XML::Simple->new();
my $config = $xml->XMLin('test-config.xml');

my $app = DTS::Application->new($config->{credential});

my $package =
  $app->get_db_package( { name => $config->{package} } );

ok( !$package->log_to_server, 'Log to SQL Server should be disable' );
ok( defined( $package->get_log_file ), 'Log to flat file is enable' );
ok( !$package->use_event_log,
    'Write completation status on Event log should be disable' );
ok(
    $package->use_explicit_global_vars,
    'Global variable are explicit declared'
);
cmp_ok( $package->count_connections, '>=', 2,
    'Package must have at least two connections' );
cmp_ok( $package->count_datapumps, '>=', 1,
    'Package must have at least one datapump task' );

Claro que as regras de testes são específicas. Não creio que seja possível
fazer testes genéricos, você teria que planejar com antecedência como o
pacote DTS deveria ser desenvolvido.

> Este cara não pode ser executado via SQL ? Eu não tenho certeza, mas
quando
> eu estava desenvolvendo uns scripts de monitoramento de SQL, eu traduzi
> todas API acessíveis via OLE para os comandos SQLs do MS SQL Server.
Talvez
> seja possível fazer o mesmo com o DTS, e com isto portável !

Sim, é possível executar pacotes DTS via procedures do SQL Server. Mas não
sei se é possível obter informações, alterar ou até mesmo criar em memória
um pacote DTS inteiro.

Se isso for possível, então realmente isso pode se tornar portável. Mas eu
não sei responder se o uso de COM não dá mais controle do que via
procedures (provavelmente sim, eu arriscaria dizer).

Esse aqui é um artigo bastante interessante sobre uso de Perl + DTS:
http://www.oreillynet.com/pub/a/databases/2006/12/21/dts-imports.html.

[]'s
Alceu

--------------------------------------------------------------------
mail2web.com - Microsoft® Exchange solutions from a leading provider -
http://link.mail2web.com/Business/Exchange




Mais detalhes sobre a lista de discussão Cascavel-pm