Gerenciando espaço em disco no SQL Server com MOUNT POINT

Gerenciando espaço em disco no SQL Server com MOUNT POINT.

viaGerenciando espaço em disco no SQL Server com MOUNT POINT.

Advertisements

Migrando banco de dados SQL Server utilizando powershell

Deseja mover um banco de dados SQL de um servidor pra outro realizando backup e restore através de um linha de comando apenas?  Quem sabe mover vários bancos sem ter que realizar cada passo manualmente, como redistribuir os arquivos nos discos manualmente a cada restore? e ainda deixar os bancos preparados para o mirror? Se você está enquadrado nesses desejos aqui vai uma super contribuição do SQL Masters Brasil!

Estamos compartilhando um script da hora escrito pelo meu amigo e colega Mauricio Moura (http://mauriciomoura.blog.br/) e com atualizações minhas como passagem de um banco ou uma lista de bancos e parâmetros para informar que o mirror faz parte da migração, e entre outras. Nosso dia a dia na empresa está repleto de demandas de m igração como parte dos projetos e requisições de clientes. Vários bancos todo o tempo sendo migrados, com tamanhos cada vez mais gigantescos. Este post parte do princípio que você é familiarizado com o Windows Powershell e o modelo de objetos “smo” do SQLServer.

MigrateDB.ps1 (https://docs.google.com/file/d/0B2cd7SRFjgbmcjJCRTBoQldWM1U/edit?usp=sharing)

Testado e utilizado para as versões: SQL Server 2008\SQL Server 2008R2

image

Para utilizar o script, você precisa apenas passar alguns poucos parâmetros e pronto…vá preparar aquele café esperto e aprecie olhando alguns emails enquanto a migração rola suave.

Abaixo está um conjunto de sintaxes necessárias de acordo com sua necessidade.

Sintaxe

./MigrateDB.ps1 from_server to_server backup_path [-nodblist dbname |

-nocompression | -mirror | -nocopyonly ]

Argumentos

from_server

Servidor origem de onde o banco está sendo migrado.

to_server

Servidor destino para onde o banco está sendo migrado.

backup_path

pasta compartilhado usada pelo script para criar o arquivo de backup.

-nodblist

Informa que a lista de bancos não será usada. Quando usar este argumento o parâmetro dbname deve ser fornecido. Caso não utilizar este argumento,  script irá fazer uso do arquivo “migratedblist.txt” que deve ser adicionado na pasta c:\temp da máquina em que o script está sendo executado.

dbname

É nome do banco de dados sendo migrado. Ele deve ser informado quando –nodblist é utilizado.

-nocompression

Informa o script que compression não será utilizado durante o backup. Compression é utilizado como default.

-mirror

Informa o script que uma sessão de mirroring será criada após a migração. Com este argumento o script realiza um backup de tlog também e restaura ambos os backups full and tlog com norecovery para a configuração do mirror mais adiante. Show de bola!

-nocopyonly

Informa o script para não usar a opção copyonly. Útil quando utilizando o argumento –mirror para migrar o banco recém alterado do modo simple para full para a configuração do mirror. Neste caso se –nocopyonly é usado o backup de tlog falhará devido o backup full não ter sido realizado antes do banco de dados ter sido alterado para full.

 

Como Utilizar:

Digite o nome do script com os argumentos: >./MigrateDB.ps1 <argumentos>

Exemplos:

1.

Copia o(s) banco(s) listados na pasta c:\temp\migratedblist.txt do servidor1 para o servidor2  realizando backup para e restore da pasta compartilhada \\servidor2\backup. Apenas o full backup é realizado com compressão e restaurado no servidor destino.

./MigrateDB.ps1 servidor1 servidor2 \\servidor2\backup

* c:\temp\migratedblist.txt é o aqruivo texto contendo a lista de banco de dados, exemplo:

banco1

banco2

banco3

Isso aí, bem assim, um embaixo do outro.

 

2.

Esse exemplo copia o banco dellpowertodomore do servidor1 para o servidor2 realizando backup para e restore da pasta compartilhada \\servidor2\backup. O backup não será compactado, ambos backup full e tlog serão realizdos e então restaurados com o norecovery para configuração de mirror. O banco dellpowertodomore estáe em “full recovery mode” e os backups full e tlog realizados normalmente antes de iniciar a migração. Isso tudo o script faz!

./MigrateDB.ps1 servidor1 servidor2 “\\servidor2\backup” –nodblist dellpowertodomore

-nocompression –mirror

*Certifique-se que o banco estava em full recovery mode antes de rodar o script.

 

3.

Esse exemplo copia o banco dellpowertodomore do servidor1 para o servidor2 realizando backup para e restore da pasta compartilhada \\servidor2\backup. O backup não será compactado, ambos backup full e tlog serão realizdos e então restaurados com o norecovery para configuração de mirror. O banco dellpowertodomore foi recém alterado para “full recovery mode” e o backup full nunca realizado antes da migração.

 

./MigrateDB.ps1 servidor1 servidor2 “\\servidor2\backup” –nodblist dellpowertodomore

-nocompression –mirror –nocopyonly

 

Considerações

Se a pasta compartilhada ter bastante espaço e o  script está rodando em um ambeinte bem ocupado, use o argumento –nocompression para evitar alta utilização da CPU e torne assim a migração possível. Tudo depende sempre de cada ambiente de produção e ainda exige uma monitoração mais próxima enquanto o script roda e interrompa-o sempre que os recusros começarem a ser muito utilizados.

Abra mais de uma sessão powershel para realizar multiplas migrações. O númeor de sessões dependerá dos recursos de hardware que você utiliza. Eu sugiro  dar 10-15 segundos de intervalo entre uma sessão e outra pra dar chance ao script de ler o tamanho atual do disco do servidor destino ao realizar a operação de restore.

Personalize as variáveis abaixo para excluir unidades de disco não usadas para os arquivos de dados e os usados para os tlogs, o scripts irá colocar os arquivos “mdfs” e “ndfs” em todos os discos não inclusos na variável $ExcludeDevicesforData  e colocará os “ldf” nos discos $DevicesForTlog,  exemplo:

$ExcludeDevicesforData = “DeviceID <> ‘C:’ and DeviceID <> ‘S:’ and DeviceID <> ‘T:’ and DeviceID <> ‘D:’ and DeviceID <> ‘U:'”
$DevicesForTlog = “DeviceID = ‘S:’ or DeviceID = ‘U:'”

 

Espero que o script seja útil no seu dia a dia e traga bastante produtividade para você. Seja feliz e um abraço!

Como recuperar um banco de dados apagado acidentalmente sem ter o backup

Como fazer parte da comunidade SQL Server Masters Brasil

Gostaria de fazer parte da comunidade SQL Server Masters Brasil e ficar por dentro de tudo o que acontece? Preencha este formulário abaixo, que vamos incluir você a nossa lista de e-mails.

A comunidade SQL Server Masters Brasil agradece o seu interesse.