Introdução



O Distributed Replay é bastante simples, quem ja conhecia o famoso SQL Server profiler vai passar a ter agora mais uma ferramenta capaz de reproduzir uma carga de trabalho ja executada em um outro servidor. As diferenças entre então o SQL Server Profiler e o Distributed Replay são:

Primeiramente o Distributed Replay é gerenciado atraves do CMD, já o SQL Server Profiler possui uma interface grafica de gerenciamento. Outro ponto muito interessante é que com o Distributed Replay voce consegue reproduzir uma carga de trabalho a partir de varios clientes simultaneamente diferentemente do SQL Server Profiler onde voce apenas pode fazer o replay de um unico computador (cliente). Falando de um modo mais tecnico podemos então definir o Distributed Replay como:  Uma feature que ajuda voce a avaliar o impacto de futuras atualizações de hardware de seu SQL Server, em updates em seu sistema operacional e até mesmo quando voce está realizando um performance tuning e necessita testar tudo aquilo que voce aplicou. Sua função primordial é bastante parecida com o SQL Server Profiler, realizar um replay de um trace capturado em um ambiente de teste.

Configuração



O primeiro passo da configuração do Distributed Replay é feita no momento da instalação do SQL Server 2012 onde na aba "Feature Selection" você seleciona quais features você deseja instalar e uma das ultimas opções estão o Distributed Replay Controller e Distributed Replay Client.

  • Distributed Replay Controller: Responsável por ser o Administrador do Distributed Replay, ou seja, local onde você irá realizar a configuração do trace.
  • Distributed Replay Client: Você deverá instalar essa opção em cada maquina que voce deseja utilizar como um cliente de execução da carga de trabalho.
Apenas para testes voce poderá gerar com o SQL Server Profiler como gerar um arquivo trace do tipo Replay e salvar em um arquivo em disco. Feito isso voce deverá executar os seguintes comandos (Lembrando que devem ser executados onde voce instalou o Distributed Replay Controller) que podem ser visualizados na imagem 01.


(Imagem 01 - Iniciando o Distributed Replay)

Pre-processamento da carga de trabalho



Feito isso, você deverá executar os comandos estabelecidos na imagem 02 que será utilizado para pre-processar o seu arquivo.


(Imagem 02 - Pre-processamento do arquivo)


Iniciando o serviço do Distributed Replay Client


Em cada maquina que você instalou o Distributed Replay Client voce deverá iniciar o serviço assim como voce iniciou o serviço do Distributed Replay Controller. Para quem está rodando o Distributed Replay Controller na mesma maquina do Distributed Replay Client voce deverá ir até o arquivo: <client installation path>\DReplayClient.config e trocar a propriedade <Controller> para localhost, assim como está no exemplo: <Controller>localhost</Controller> conforme a imagem 03.


(Imagem 03 - Iniciando o Distributed Replay Client)


Execução da carga de trabalho



No passo final basta agora você executar o seguinte comando: dreplay replay –s “FRECCIA” –d “C:\Replay” –w “FRECCIA”. Abaixo a explicação dos parâmetros.

-s: Nome do servidor e instancia que está o SQL Server que será o alvo do replay.
-d: Diretório onde está contido o arquivo de replay pré-processado
-w: Nome dos servidores onde foram instalados os Distributed Replay Client que irá reproduzir a carga de trabalho.


(Imagem 04 - Executando a carga de trabalho)

Na imagem 04 é possivel visualizar os comandos sendo feitos contra o alvo e o tempo de replay dos mesmos.

Você possui um arquivo de configurações no diretorio C:\Program Files (x86)\Microsoft SQL Server\110\Tools\Binn com o nome de DReplay.Exe.Replay.config que possui inumeras configurações. Por default o  Distributed Replay utiliza esse arquivo, mas se voce alterar qualquer parametro dele terá que passar a utilizar o replay o parametro –c para informar o caminho do arquivo de configuração.

Conclusão



Como pode ser visto o Distributed Replay é uma ótima solução presente no SQL Server 2012 que pode executar a carga de trabalho em um novo servidor de SQL Server, ou até mesmo realizar testes de stress de aplicação. A aceitação do Distributed Replay é alta devido a possibilidade de simulação de varias estações de trabalhado se conectando no servidor de banco de dados e gerando conexões concorrentes para assim então melhor simular o cenário de produção atual.