Over 10 years we help companies reach their financial and branding goals. Engitech is a values-driven technology agency dedicated.

Gallery

Contacts

411 University St, Seattle, USA

engitech@oceanthemes.net

+1 -800-456-478-23

Windows

Usando o Robocopy para mover arquivos do SQL Server

O utilitário de linha de comando conhecido como Robocopy (Robust File Copy) é utilizado por administradores de redes e servidores para realizarem migrações de dados entre servidores ou até mesmo para um novo disco apresentado ao servidor.
Sabemos que no dia a dia de um administrador de banco de dados tudo acontece, então é importante conhecer uma possibilidade de movimentação de arquivos de forma simples e bastante prática.
Hoje irei demonstrar como utilizar o Robocopy para mover dados de uma unidade F:\ para a unidade E:\ , poderia citar N situações que poderia a levar essa manobra, mas vamos imaginar que o time de Storage está trocando o tecnologia de Storage e precisa que seja entregue o disco F:\ para acabar com o Storage legado desta forma o time de Storage apresentou um novo disco para o servidor e o time de Windows apresentou ao sistema operacional a unidade E:\.

E sabemos que em alguns momentos vamos ter de efetuar migrações de dados de arquivos em Terabytes (TB) no qual sabemos que o também irá influênciar na velocidade da cópia dos arquivos. O robocopy é tão poderoso que copia até as permissões dos arquivos.

Porém para o SQL Server ainda temos um ponto de atenção que é “os datafiles de banco de dados” estão na unidade F:\ e o que mais o DBA precisa fazer para evitar mais trabalho? Para este caso após a cópia dos arquivos para a nova unidade o próximo passo é alteração da letra E:\ para letra F:\ , isso é feito via disk management, fazendo desta forma o DBA evita um trabalho de backup > restore, ou alteração do diretório via Transact-SQL.

Então o cenário que temos é o host DEVSAP possui uma unidade F:\ que iremos remover no futuro.

O comando abaixo irá listar todos os datafiles que estão na unidade F:\.

SELECT DB_NAME(database_id) AS DatabaseName,
       Name AS Logical_Name,
       Physical_Name,
       (SIZE*8)/1024 SizeMB
FROM sys.master_files
WHERE Physical_Name like 'F:\%'

Utilizei uma ferramenta chamada “TreeSize Free”, apenas para demonstrar que na unidade F:\ temos o diretório “Data” com alguns arquivos de datafile e um diretório “Homologacao” com um arquivo de datafile.

Estão prontos para efetuar a migração de dados entre unidades de disco utilizando o comando robocopy?

É de suma importância que a uma janela de manutenção seja solicitada para a área de negócio no qual o database atende, ou seja, a burocracia chata de pedir a janela de manutenção para o cliente ou para o gestor da área da empresa no qual o database será impactado, pois será necessário colocar a instância do SQL Server em STOP (offline).

Observação: a janela de manutenção depende do tamanho dos arquivos que irá movimentar, não vai achar que é igual a pastelaria que você chega e pede um pastel e caldo de cana que vai ser rápido. HAHA

Abaixo temos o print das unidades F:\ e E:\.

Primeiro passo é dar um STOP na instância SQL SERVER.

Chegou a hora esperada de utilizar o famoso robocopy.

Acesse o CMD (Prompt de Comando) como administrador para executar a linha de comando de cópia.

O Robocopy possui vários parâmetros que podem ser utilizados na execução do comando, não irei abortar o que cada parâmetro faz, pois depende de cada situação que você está enfrentando no momento, então irei deixar o link da documentação da Microsoft acesse Documentação do Robocopy.

Nosso objetivo é origem F:\ para destino E:\

robocopy F:\ E:\  /e /zb /sec /copyall /r:10 /w:10 /v /eta /log:C:\Temp\robocopy.log /tee

Os arquivos são pequenos pois é um ambiente de laboratório.

No print abaixo é a saída do comando executado, no qual podemos verificar no rodapé informações se teve falhas ou até mesmo o tempo gasto de execução.

No comando também passei um diretório C:\temp no qual irá gerar um arquivo de logo robocopy.log, para que seja anexado para evidenciar o trabalho realizado.

Chegou a hora da verdade, e aí será que os arquivos foram copiados para a unidade E:\?

No print abaixo podemos observar que de fato todos os diretório e arquivos foram copiados com sucesso.

O próximo passo é a alteração das letras F:\ e E:\ no disk management.

Você precisa alterar a unidade F:\ para qualquer letra disponível, para que seja possível você alterar a a letra da unidade E:\ para F:\ , ou seja, não tem como utilizar uma letra que já está em uso.

Acesse o disk management para realizar a alteração.

Botão direito sobre a unidade F:\ clique sobre “change drive letter and paths…” para realizar a alteração, neste exemplo irei alterar para a letra Z:\

Selecionando a letra Z:\.

Ao selecionar a letra Z:\ é necessário clicar em “OK”.

Ao clicar em “OK” será exibida a mensagem abaixo como alerta. Clique em “YES”.

Você irá repetir o processo na unidade E:\ trocando a letra para F:\.

Selecione a letra F:\ e clique em OK.

Podemos visualizar no print abaixo, as unidades com as letras atualizadas.

Último passo iniciar a instância SQL Server.

Todos os bancos de dados estão com o status online como esperado.

E a unidade Z:\ você pode formatar ou solicitar o time de sistema operacional para remover do host e entregar para storage o volume.

E aí curtiu o artigo sobre Robocpy?

Espero que gostem do conteúdo apresentado!

O artigo é apenas para apresentar uma forma de movimentação de arquivos no windows, basta utilizar a imaginação de como fazer isso quando você tiver a necessidade.

Bora tomar aquele cafezinho com o pão de queijo?!

Feliz dia das Mães!!!

Author

Wesley Cardoso