Arquivo

Archive for the ‘Pergunte ao Gordo’ Category

Highway to Hell – Extended Events – Parte 6

Galera,

No vídeo de hoje quero demonstrar como criar uma sessão de monitoração para encontrar possíveis erros no SQL Server e que não são exibidos na camada de aplicação devido ao tratamento de exceções.

Caso tenha interesse em fazer o download do script utilizado no vídeo é só acessar o link abaixo:

Highway to Hell – Extended Events – Parte 6

Não deixe de fazer sua inscrição no blog para continuar recebendo os próximos posts.

Grande abraço a todos.

DESAFIO DO GORDO – SP_READREQUEST

Galera,

Hoje quero propor mais um DESAFIO DO GORDO para vocês.

Recentemente atendi um cliente que estava com um problema de lentidão no envio de alguns relatórios por email, através do Database Mail.

Durante o processo de levantamento de possíveis problemas existentes no ambiente do cliente, foi possível notar que nos principais períodos de lentidão existia uma consulta em estado de “suspended” executando uma procedure de sistema chamada SP_READREQUEST.

Gostaria de saber de vocês o que acham que acontecia de errado neste ambiente e como fariam para resolver este problema.

Quero a participação de todos nos comentários.

Aproveite e faça sua inscrição no blog para receber sempre todos os próximos posts.

Grande abraço galera.

Evento de lançamento do SQL Server 2014

Galera,

No dia 25/04 ocorrerá um evento gratuito, na Microsoft, devido ao lançamento do SQL Server 2014.

Será um dia inteiro de palestras com grandes profissionais de tecnologia e também com alguns especialistas de SQL Server da própria Microsoft.

Quem tiver interesse de participar é só inscrever-se através do link abaixo:

https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032579876&culture=pt-BR

Não percam essa oportunidade, pois a quantidade de inscrições é limitadas.

Já fiz a minha inscrição e com certeza estarei por lá.

Grande abraço a todos.

Pergunte ao Gordo – Arquivos dinâmicos com SSIS

Galera,

Estou iniciando hoje uma nova séria no blog com o nome de PERGUNTE AO GORDO.

A idéia é responder as dúvidas que recebo por email de forma bem clara e bem prática.

Neste primeiro post responderei uma pergunta bem interessante que recebi na semana passada:

“Vitor, preciso ler uma tabela de funcionários e exportar os registros para arquivos textos que serão criados baseados no ano de admissão de cada funcionário. Por exemplo, um funcionário que foi admitido em 01-01-2001 tem de estar no arquivo texto 2001.txt, um funcionário que foi admitido em 01-01-1998 tem de estar no arquivo texto 1998.txt e assim por diante.”

Para esta demonstração utilizarei a tabela ilustrada na Figura 1.

Tabela
Figura 1 – Tabela Employee

Inicialmente precisamos descobrir quais os anos de admissão existentes na tabela Employee utilizando a uma tarefa Execute SQL Task.

Será necessário que o resultado da consulta executada pela tarefa seja retornado em formato de Set e para isso definimos a propriedade ResultSet como Full result set, conforme ilustrado na Figura 2.

SSIS_1
Figura 2 – Configuração da tarefa Execute SQL Task

Também será necessário mapear o resultado da consulta executada pela tarefa para uma variável do tipo object, conforme ilustrado na Figura 3.

SSIS_2
Figura 3 – Mapeando o resultado para uma variável

Com o resultado da consulta em uma variável, será necessário utilizarmos uma tarefa Foreach Loop para navegar em cada um dos registros do resultset.

A coleção utilizada pela tarefa Foreach Loop deve ser Foreach ADO Enumerator, conforme ilustrado na Figura 4.

SSIS_3
Figura 4 – Configuração da tarefa Foreach Loop

Cada registro lido pela tarefa Foreach Loop será armazenado em uma variável chamada AnoAdm, do tipo Int32, que será utilizada posteriormente na construção da consulta dinâmica que criará o conteúdo de cada arquivo texto, conforme ilustrado na Figura 5.

SSIS_4
Figura 5 – Mapeando a variável

É importante ressaltar que o valor do índice deve ser 0, como ilustrado na Figura 6.

SSIS_5
Figura 6 – Definindo o valor do index

Após a configuração da tarefa Foreach Loop, é necessário criar uma tarefa Data Flow Task, conforme ilustrado na Figura 7.

SSIS_6
Figura 7 – Criação da tarefa Data Flow Task

A primeira tarefa necessária para a criação dos arquivos é a seleção dos registros na origem de dados através de uma tarefa OleDB Source, conforme ilustrado na Figura 8.

SSIS_6a
Figura 8 – Criação da tarefa OleDB Source

Para que seja possível a exportação dos funcionários baseado em seu ano admissão, precisamos que a consulta à origem de dados seja dinâmica, conforme ilustrado na Figura 9.

SSIS_7
Figura 9 – Consulta dinâmica na origem de dados

Utilizamos o caractere ? para que o SSIS entenda que é um parâmetro externo e mapeamos esse parâmetro com o valor da variável AnoAdm que é preenchida na tarefa Foreach Loop, ou seja, para cada linha retornada na tarefa Foreach Loop será executada uma consulta na origem de dados retornando apenas os funcionários daquele ano de admissão específico.

Selecionaremos todas as colunas existentes na tabela Employee, conforme ilustrado na Figura 10.

SSIS_8
Figura 10 – Seleção de colunas da tabela Employee

A última tarefa necessária é a Flat File Destination, que deverá criar dinamicamente um arquivo de saída para cada ano de admissão existente na tabela Employee.

Inicialmente é preciso configura um Connection Manager fixo para que possamos alterar suas propriedades através do uso de expressões, conforme ilustrado na Figura 11.

SSIS_11
Figura 11 – Configuração do Connection Manager

Após a criação do Connection Manager, será necessário alterar a propriedade ConnectionString, conforme ilustrado na Figura 12.

SSIS_14
Figura 12 – Configuração da propriedade ConnectionString

Com estas tarefas realizamos os seguintes passos:

1) Leitura da tabela Employee para descobrir os anos de admissão existentes;
2) Navegação nos registros encontrados;
3) Para cada registro encontrado, selecionamos os funcionários e exportamos para um arquivo texto específico

Caso tenham interesse em fazer o download do projeto, bastar acessar o link abaixo:

CriarArquivosDinamicamente

Espero que tenham gostado e não deixe de fazer sua inscrição no blog.

Grande abraço.