Getting your Trinity Audio player ready...
|
Esse script não tem nada de complexo, ele serve mais para ajudar a criar de uma forma dinâmica o SnapShot de uma base.
Montei ele para funcionar da forma mais genérica possível, para bases com 1 arquivo até bases com 1000 arquivos.
ele vai renomear a extensão dos arquivos e vai criá-los no mesmo local dos arquivos originais.
DECLARE @ExecStr nvarchar(max) , @DB sysname , @Name sysname , @Physical_Name sysname set @DB = '' --Base que terá o SnapShot criado DECLARE FileListCursor CURSOR FAST_FORWARD FOR SELECT Name , Physical_Name FROM sys.master_files where database_id = DB_ID(@DB) and type <> 1 OPEN FileListCursor FETCH NEXT FROM FileListCursor INTO @Name, @Physical_Name SELECT @ExecStr = N'CREATE DATABASE ' + @DB + '_SS ' + N' ON ( NAME = ''' + @Name + N''' , FILENAME = ''' + + replace(replace(@Physical_Name, '.mdf', '.ss'),'.ndf', '.ss') + + N''') ' FETCH NEXT FROM FileListCursor INTO @Name, @Physical_Name WHILE @@FETCH_STATUS <> -1 BEGIN SELECT @ExecStr = @ExecStr + N', ( NAME = ''' + @Name + ''' , FILENAME = ''' + replace(replace(@Physical_Name, '.mdf', '.ss'),'.ndf', '.ss') + ''') ' FETCH NEXT FROM FileListCursor INTO @Name, @Physical_Name END SELECT @ExecStr = @ExecStr + N' AS SNAPSHOT OF [' + @DB +']' --exec (@ExecStr) --executa o TSQL select (@ExecStr) --gera o TSQL para execuçao manual DEALLOCATE FileListCursor GO
Essa semana tive que usar esta solução para aquela feature meia boca (feita pela metade) do AlwaysOn no SQL 2012.
Quando o link ou o SQL do site primário apresenta problemas a base secundária cai junto,,, esse Always (nem sempre) On no 2012 tem esse problema que, em teoria, foi corrigido no 2014.
Como a migração de SQL está descartada, surgiram algumas alternativas mas o melhor cenário foi:
- Criar uma base oca;
- Criar sinônimos;
- Criar SnapShot.
Agora tenho um Job que fica monitorando a DM do AlwaysOn e garante que os sinônimos da base oca estão apontando para a base que está sendo replicada. Quando ocorrer uma falha, ele gera um SnapShot dessa base e altera os sinônimos para a base SnapShot. E fica monitorando o ambiente para inverter a situação quando a base replicada for restabelecida.
Esse POG funciona… e por incrível que pareça é bem rápido… nos testes a criação do SnapShot da base com 4TB demorou 12 seg e a troca dos sinônimos foi instantânea.
Hey! Isso é bem, bem útil! Olha só, alguma utilidade para este blog… 3:-)
#brinks