DBCC CHECKDB em cópias da MASTER – Um caso interessante

Ilustrando um DB generico a lot

Olá,

Executei o CHECKDB em uma base chamada MASTER_SHADOW, que é uma cópia da master de um servidor de produção.

Erros pipocam na tela conforme ilustrado abaixo (resumido com as partes relevantes, pois os erros abaixo se repetem para diferentes classes):

Msg 8992, Level 16, State 1, Line 1
Check Catalog Msg 3851, State 1: An invalid row (class=12,depid=0,depsubid=0) was found in the system table sys.syssingleobjrefs (class=12).
Msg 8992, Level 16, State 1, Line 1
Check Catalog Msg 3851, State 1: An invalid row (class=13,depid=1,depsubid=0) was found in the system table sys.syssingleobjrefs (class=13).
(…)
(…)
CHECKDB found 0 allocation errors and 61 consistency errors not associated with any single object.
DBCC results for ‘sys.sysrscols’.

Msg 8906, Level 16, State 1, Line 1
Page (1:10) in database ID 7 is allocated in the SGAM (1:3) and PFS (1:1), but was not allocated in any IAM. PFS flags ‘MIXED_EXT ALLOCATED 0_PCT_FULL’.

CHECKDB found 1 allocation errors and 61 consistency errors in database ‘master_shadow’.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.


O que era:

Assim que analisei o resultado, executei o CHECKDB na master em produção, a mãe desse “backup”. Nenhum erro, tudo no grau.

Suspeitei que fosse particularidade de alguma página da master que perdia referência ao virar uma base de usuário.

Fiz aquela pesquisa básica e cheguei no seguinte artigo do Paul Randal que elucidou o motivo do erro: Is my master Database really corrupt?

Em suma, realmente era particularidade da master, especificamente a página #10 da master que possui metadados “especiais”, que não pode existir em nenhuma outra base de usuário, o que era o caso dessa cópia da MASTER. Pelas mensagens de erro, nota-se que todos os erros de consistência apontavam para a mesma página (#10), então estava lendo sobre o assunto certo pro problema certo.


Finalizando

Conclusões do artigo original já supracitados no artigo do sqlmag: É interessante manter a MASTER na sua rotina de checagem de backup/restore mas tire as cópias de testes de integridade pra evitar diversos falso-positivos.

Conclusão: MASTER na rotina de RESTORE? Sim. Na rotina de CHECKDB? Só direto em produção.
Já restaurei master em várias oportunidades. Mas nunca havia executado CHECKDB até então. Topando com esse erro pela primeira vez. Vivendo e aprendendo.
[]’s

Script – Relatório dos Últimos Backups

Olá,

Script para visualização dos últimos backups de banco de dados.

Baseado e adaptado do script: http://timradney.com/2014/02/17/how-to-check-for-last-sql-server-backup/

/***********************************************************

Script: Verifica backup
Descrição:
Retorna, para cada base de dados, as últimas datas para os backups FULL, Diferencial (Diff) e também retorna a data dos dois
últimos backups de log.
Compatibilidade: SQL Server 2005 e versões superiores

************************************************************/

SELECT
DISTINCT

@@servername as [Servidor],
a.Name AS [Banco de Dados] ,
CONVERT(SYSNAME, DATABASEPROPERTYEX(a.name, 'Recovery')) [Recovery Model] ,
COALESCE((SELECT CONVERT(VARCHAR(50), MAX(backup_finish_date), 121)
FROM msdb.dbo.backupset
WHERE database_name = a.name
AND type = 'D'
AND is_copy_only = '0'
), '-') AS 'Full' ,
COALESCE((SELECT CONVERT(VARCHAR(50), MAX(backup_finish_date), 121)
FROM msdb.dbo.backupset
WHERE database_name = a.name
AND type = 'I'
AND is_copy_only = '0'
), '-') AS 'Diferencial' ,
COALESCE((SELECT CONVERT(VARCHAR(20), MAX(backup_finish_date), 121)
FROM msdb.dbo.backupset
WHERE database_name = a.name
AND type = 'L'
), '-') AS 'Log (Último)' ,
COALESCE((SELECT CONVERT(VARCHAR(20), backup_finish_date, 120)
FROM ( SELECT ROW_NUMBER() OVER ( ORDER BY backup_finish_date DESC ) AS 'rownum' ,
backup_finish_date
FROM msdb.dbo.backupset
WHERE database_name = a.name
AND type = 'L'
) withrownum
WHERE rownum = 2
), '-') AS 'Log (penúltimo)'
FROM sys.databases a
LEFT OUTER JOIN msdb.dbo.backupset b ON b.database_name = a.name
WHERE a.name <> 'TEMPDB'
GROUP BY a.Name

Fim de suporte – Microsoft SQL Server 2005

2005end

 

Como diria uma prezada cantora contemporânea de uma riqueza musica inagualável: É hoje.

É hoje que acaba o suporte estendido do SQL Server 2005, que em outras palavras significa o fim definitivo de suporte.

Para os nostálgicos, segue um What’s New de tudo o que a versão trouxe de novidade. Sem dúvida minha favorita foi a quantidade expressiva de DMV’s.

O uso de versões não suportadas significa ausência de suporte técnico do fabricante e maior riscos de sofrer com vulnerabilidades.

Não vamos alimentar os zumbis: considere migrar o quanto antes se você possuir uma versão dessas em ambiente de produção.

Até!

Fonte:

https://support.microsoft.com/en-us/lifecycle?c2=1044

 

Dica – Renomear base com mesmo nome, texto em caixas diferentes

O motivo de postar esse sapo é pelo mesmo motivo que a O'reilly publica seus livros com animais na capa

Olá,

Dica rápida de hoje.
Como renomear uma base para o mesmo nome com o texto em diferentes caixas (caixas baixas e altas).
Exemplo: alterar EssEnOme para EsseNome.O post leva em consideração também apenas instâncias com case insensitive.

Pra renomear bases de dados é muito comum utilizar a sp_renamedb por bons motivos:

  •  Procedure antiga já. Bem conhecida;
  • Sintaxe simples: EXEC SP_RENAMEDB ‘NomeBaseAtual’, ‘NovoNome’;
  • Antes de trocar o nome, faz algumas verificações (óbvias, mas necessárias);

Entretanto, a mesma tarefa pode ser executada com o comando ALTER DATABASE:

Mas o que acontece ao renomear uma base com o mesmo nome, com diferenças apenas nas fontes minúsculas e maiúsculas?

Ao usar a SP_RENAMEDB

Resulta na seguite mensagem:

The database ‘DB_aCesso’ already exists. Specify a unique database name.

O comando ALTER DATABASE vai funcionar tranquilo, e favorável:

Vale lembrar que tanto a sp quanto o comando ALTER DATABASE necessitam de lock exclusivo para efetuar a mudança no nome da base. Além de que comandos que alteram o nome da base exigem permissões de db_creator (na base), control server ou sysadmin.

[]’s
Fonte:

Error 22050 – Failed to initialize sqlcmd library with error number -2147467259. [SQLSTATE 42000]

Olá,

Tivemos o seguinte erro em um job recém implantado aqui na empresa que utiliza a feature Database Mail. Abaixo a tela do job em questão:

E22050_1

Messagem:

Executed as user: DOMINIO\SVC-CONTAETC. Failed to initialize sqlcmd library with error number -2147467259. [SQLSTATE 42000] (Error 22050).  The step failed.

Procurando maiores informações sobre esse erro nos mais decentes mecanismos de busca (não é o bing), localizei várias ocorrências dessa mesma mensagem onde a única coisa em comum era o uso do Database Mail, mas as causas do problema quase sempre eram diferentes. Pensando nisso, a melhor estratégia era identificar o erro raíz que estava gerando a “falha na inicialização na biblioteca do SQLCMD”.

Troubleshooting 

  • Profiler configurado, filtrando a conta do Agent e com o evento “User Error Message”. Pode ser Extended Events também. Não importa o meio de tracing, importante é conseguir resolver o problema.
  • Executar novamente o job problemático. Eu executei no mesmo ambiente porque já conheço o ambiente e o que o job faz, mas recomendo que faça isso em ambiente de não-produção.
  • Consultar o trace. Simples assim.

Básico, mas suficiente. Olha o erro raíz aí:

E22050_2

Erro:

Invalid object name ‘dbo.ResultQuery’.

Antes de falar sobre o erro, é interessante falar sobre o job em questão: ele prepara um resultset bem simples utilizando a tabela  dbo.ResultQuery, só que a lógica inteira do job acontece no banco BDABC e a query utilizada no Database Mail não especificava qual era a base, logo, o objeto era procurado na MASTER (onde ele realmente não existe). Abaixo o trecho de código com a referência inválida.

A forma de consertar isso foi trivial: colocar o nome da base antes do dbo e pronto. Job funcionando e sem erro 22050.

Logo podemos concluir que o que realmente importa neste caso, é o erro raíz, não a mensagem logada no SQL Agent. Lembra um pouco as “palas” que acontecem no DTC onde aparece que a transação foi abortada e no final das contas foi um erro totalmente away (tabela inválida, coluna inválida, pk duplicada, etc).


TL;DR: O erro  22050 não responde o motivo do erro. Analise o código, de preferência com Trace, Extended Events ou algo que possa te ajudar a localizar o erro original.


 

Até o próximo post 🙂

SQL Saturday #424 (SP) – Eu fui + relatos

IMG_20150929_132953005 (Large)

Olá,

Rolou nesse final de semana (26/09) na UNIP de Taubaté (São Paulo) mais uma edição do SQL Saturday (#424). Em resumo, trata-se de um sábado dedicado para disseminação de informação sobre o SQL Server (e relacionados) por voluntários que fazem parte da comunidade técnica (e sem medo de falar besteira, alguns dos melhores profissionais do Brasil estão entre eles) assim como uma oportunidade ímpar de networking com profissionais que estão ali trabalhando com a mesma coisa que você. E o melhor, é um evento gratuito (mesmo que os palestrantes paguem do próprio bolso todo o deslocamento pro evento).

Já é a quarta edição do evento que eu participo (sendo a segunda em São Paulo) e minha impressão pessoal é que tem melhorado cada vez mais como um todo (organização, distribuição de palestras, etc) e isso só tem sido possível graças à sempre afiada comunidade técnica e aos patrocinadores que aparentemente tem investido muito mais no evento do que a própria Microsoft.

A minha dica é: se você pode participar de uma oportunidade dessas, não pense duas vezes: é riquíssima de conhecimento e networking, então se o SAT não chegar na sua cidade, considere viajar para participar. Sugiro também que, caso a empresa não assuma as despesas da viagem por você, considere pagar do próprio bolso. Por mais que não pareça, é um experiência interessante para sua carreira e isso certamente terá retorno (não apenas financeiro, mas profissional, pessoal, etc).

 

Relatos

Enfim, vou falar um pouco sobre momentos do evento. Estou fazendo isso porque preciso voltar a escrever e essa é sim uma boa desculpa pra isso 🙂

Abertura:  Aconteceu no auditório. Começou um pouco em cima da hora e por esse motivo o responsável por abrir o evento (Diego Nogare) realizou a abertura mais depressa possível,  que durou menos de 10 minutos. Trata-se de explicações básicas sobre o evento, quem está patrocinando, como funciona a estrutura das trilhas, etc. Conversa breve e todo mundo levantou  e se direcionou para as salas.


Advanced SQL Server Execution Plans – Level 500

Fabiano Neves Amorim

Trilha: DBA (Desenvolvimento)

A palestra seria em uma sala que rapidamente transbordou de tanta gente (e olha que a sala era grande), e quando não cabia mais cadeiras na sala decidiram trocar nesse momento o local e voltamos para o auditório (onde rolou a abertura).

A palestra foi bem engraçada, com uma abertura bem zoeira do Fabiano que montou um slide só de memes e zoeiras de outros palestrantes, e depois disso  começou de verdade a apresentação: cheia de desafios de otimização e claro, soluções, e nessa apresentação especificamente, soluções que não são sempre as melhores devido à particularidades do Query Optimizer do SQL Server. Enfim, muito doido, recomendo pra quem gosta de conteúdo denso. Como o tempo estava um pouco corrido, Fabiano encerrou a apresentação mencionando que ainda tinha mais coisas pra mostrar, e aí indicou procurar no blog dele (e/ou  na página oficial do sat) .

Ah, e no final ele tirou algumas dúvidas e distribuiu algumas cópias do seu livro Complete Showplan Operators na bondade pura e acabei adquirindo uma cópia física do livro 🙂 Recomendo a leitura se o assunto plano de execução te interessa. O livro aborda de modo bem detalhado os operadores básicos e não é uma leitura pesada. Também é possível obter o .pdf gratuitamente baixando direto pelo site da RedGate.


Entendendo o Clusterlog

Marcelo Fernandes e Alex (@zedump)

Trilha: DBA Administração)

Palestra bem interessantes. Antes de explicarem o que é o Clusterlog, como é gerado e formas de analisá-lo, abordaram um pouco sobre o conceito de alta disponibilidade no geral, a regra dos 9’s e um  pouco sobre Failover Cluster.

O Alex também deu algumas dicas de como pesquisar com efetividade o clusterlog principalmente em casos de crise (onde o tempo é mais escasso), seja filtrando e interpretando o mais importante e fazendo associações com outros logs (como o log do event viewer, por exemplo).

A explicação foi bem clara e direta ao ponto. Algo que eu curti bastante e que não fazia a mínima ideia da existência disso: Backup para recuperação Bare Metal, que é um backup a nível de Sistema Operacional que possibilita a recuperação das configurações de várias estruturas do S.O, inclusive do Cluster, em casos de necessidade. O Marcelo mostrou uma demo disso no final da apresentação. É bacana, é um assunto que de fato tem pouco material na internet e no final arrancou alguns aplausos do povo porque a galera curtiu de verdade. O Marcelo aproveitou e mencionou que esse assunto está em maiores detalhes no livro recém lançado por ele e o Milton, o “ SQL Server 2014:  Alta disponibilidade na prática com AlwaysOn Failover Cluster Instances“, e de fato está (dei uma folheada e estava lá bem explicado).


SQL Server Security Hardening

Diego Miranda

Trilha: Geral 2

É um tema que curto muito e foi muito bem explicado pelo Diego Miranda. O começo da palestra foi uma explicação direta  abstraindo um pouco do que significa segurança no contexto de TI, depois aquele gráfico bem famoso de SGBDS x vulnerabilidades ao longo do tempo (tipo as do NIST) e tá ali a prova histórica de que o SQL Server não negocia o conceito de segurança: é um must e não um extra e todo o desenvolvimento do produto leva isso como parte do design.

 

Depois disso foi explicado vários pontos onde muitos ambientes possuem vulnerabilidades e as melhores práticas para corrigi-las. Citando alguns exemplos (que são extremamente comuns em qualquer ambiente e vi muita gente tossindo de leve em algumas ):

 

  • Conta do SQL Server como admin local;
  • XP_CMDSHELL
  • Porta padrão
  • Sysadmin

 

Na parte das demos, houve um tempo pra falar e mostrar sobre certificados, um pouco de TDE e também de um assunto que curto muito: CONTROL SERVER, que embora não seja um sysadmin pode “se elevar” o suficiente para se “tornar” um. Existem algumas formas de fazer isso e uma delas foi mostrada na apresentação. Não lembro se foi também a última demo, mas teve uma sobre trigger de login pra auditar acessos. Ele explorou algumas falhas que a maioria das implementações deste recurso fazem (como por exemplo, filtrar por Program Name sendo que esse parâmetro é totalmente editável pela string de conexão).

Enfim, foi uma palestra excelente e ficou claro o domínio do palestrante sobre o tema. Quem assistiu não deve ter se arrependido.


 

Vamos falar sobre TEMPDB

Ricardo Leka

Trilha: Geral 2 (DBA Dev)

Leka faz parte do grupo seleto de dois MCM’s e dessa vez o assunto foi particularidades sobre o TEMPDB, explicando a importância dessa base, porque ela é conhecida como playground dos desenvolvedores do SQL Server, arquitetura e limitações, qual a ligação da model com ela (sim) e no final comentou um pouco sobre a polêmica de quantidade de criação de arquivos de TEMPDB. Ficou evidente de que havia muito conteúdo nessa apresentação que ficou de fora por falta de tempo e o palestrante prometeu disponibilizar  material depois (e pessoalmente, estou curioso pra conferir esse material 🙂 ).


 

DataZen – Do Início ao Fim

Arthur Luz

Trilha: Geral 1

DataZen é uma ferramenta de BI relativamente nova no mercado e que foi comprada pela Microsoft. Atualmente não trabalho com BI e fiquei curioso pois não sabia nada da ferramenta, e o Arthur fez um ótimo trabalho explicando de forma facilitada do que se trata a ferramenta e explicou passo a passo sobre o processo de instalação.

O que me surpreendeu de verdade nessa palestra foi a tranquilidade e o domínio do palestrante sobre o tema, o que fez com que ele conseguisse passar tudo (e não era pouca coisa) o que ele realmente propôs na pauta e com certa tranquilidade (mesmo com menos tempo por que a sala estava ocupada). Achei um excelente ponto de partida para conhecer mais da ferramenta. A principal vantagem aqui é que o Arthur está constantemente blogando (e blogando bastante, olouco) sobre a ferramenta que agora é uma frente de trabalho dele, então se você se interessar pelo tema certamente vai querer conferir direto no blog dele, que você pode acessar aqui.


Hekaton v.2 e ColumnsTore Index v.3 – Nova Geração de Banco de Dados

Luan Moreno Medeiros Maciel

Trilha: DEV 1

O Luan é bastante conhecido na comunidade por ter praticamente adotado dois assuntos que são “eternas novidades” no SQL Server: o Hekaton (hoje conhecido por In-Memory OLTP) e Columnstore. Essa palestra foi bacana porque ele conseguiu falar as novidades sobre o Columnstore, depois sobre o Hekaton, depois sobre o Columnstore no Hekaton. Bem interessante ver que as features evoluíram muito desde a versão de inauguração: Hekaton não restringe tanto quanto antigamente como na primeira versão e agora o Columnstore possui algumas vantagens que na minha opinião deveriam ser essenciais desde a primeira versão (uma delas bastante importante é que ele é atualizável agora).

Se você se interessa sobre o assunto, basta procurar o blog do Luan e você verá um avalanche de post sobre o assunto.

 


 

Encerramento do evento + Material

 

E fomos para o auditório para as palavras finais, os agradecimentos, e como de costume, sorteio de vários brindes. É extremamente importante ressaltar que todo o conteúdo do SAT é disponibilizada na web, seja no blog dos palestrantes, seja na página oficial da edição do SAT correspondende. Então, minha recomendação é: se você tiver interesse e quiser um ponto de partida, clique aqui.


Conclusão + chamada pro próximo SQL Saturday (#469)

No final ficou aquele sentimento (pelo menos pra mim) de que precisamos estudar mais (sempre, ehuhea) e que valeu a pena estar ali, e já pensando sobre os próximos SATS. O próximo é aqui em Brasília que ocorrerá no dia 21 de Novembro. Se inscreva clicando aqui. Bora? Não deixe de fazer sua inscrição visitando esse link. Como já disse no início, vale muito a pena!

[]’s

 

Identificando logins com permissões elevadas no SQL Server

Outro título: "sabes quem tem poder de fogo no teu servidor?"

Introdução

É uma informação crítica e vital caso você administre servidores de banco de dados  conhecer quem possui permissões elevadas.

O que defino aqui como login com permissão elevada é aquele que:

• Está incluído na role de servidor sysadmin;
• Está incluído na role de servidor securityadmin
• Possui a permissão de CONTROL SERVER;

O post traz um script básico com o intuito de identificar quem são eles:

Script

O script se divide em duas partes: a primeira analisa roles de servidor com permissões importantes (nesse caso, sysadmin e securityadmin).  A segunda analisa permissões de servidor (CONTROL SERVER, leia os motivos aqui). Ambas as partes ignoram logins desativados.

Compatibilidade do script: SQL Server 2005 ou superior.

 

Segue exemplo de resultado:

EvidenciaPermiss

Customização vai a gosto do freguês: filtrar certificados, outras roles que você pode considerar importante (dbcreator por exemplo), considerar também logins desabilitados…

Espero que você não tenha surpresas ao localizar algum login de modo inesperado e que o script ajude alguém. Mas se encontrar, espero que você resolva da melhor forma possível antes de ter algum problema chato por causa de falha na segurança.
[]’s

 

Sugestões de leitura

Roles do SQL Server: Sysadmin – http://renatomsiqueira.com/roles-do-sql-server-sysadmin/

Roles do SQL Server: Setupadmin e Securityadmin – http://renatomsiqueira.com/roles-do-sql-server-setupadmin-e-securityadmin/

[]’s

É possível estimar ganho de compressão de backup?

A imagem é um trocadilho

Olá,

É possível determinar o tamanho de uma backup comprimido com WITH COMPRESSION?

Observação: Recomendo a leitura do  post sobre backup compression aqui do blog além da documentação oficial, para melhor aproveitamento do assunto deste post.

 

Essa é a resposta do BOL que você pode conferir aqui:

For compressed backups, the size of the final backup file depends on how compressible the data is, and this is unknown before the backup operation finishes

Quando este questionamento foi feito a mim, o banco de dados  em questão nunca teve backup, não tinha valor algum no MSDB.DBO.BACKUPSET pra sequer dar uma ideia de qual seria o tamanho do .bak e além disso espaço em disco, nesta situação em específico, também era um problema. E ganho de compressão é aquela coisa: cada caso é um caso, não tem números mágicos pra multiplicar ou dividir e chegar nesta resposta. Quando qualquer backup com compressão já foi realizado, é possível obter o que é chamado de “Compression Rate”, dividindo o tamanho da base pelo tamanho da base comprimida. O Compression rate ajuda pra ter uma boa ideia de quanto será comprimido.  A fórmula básica é:

Mas bem, se não dá pra estimar qual será o tamanho do backup comprimido se nenhum backup foi realizado, daria certo criar um  um  backup “fake” pra obter informações na backupset? Entenda-se por backup “fake” no contexto deste post aquele backup que é realizado normalmente, logado no msdb mas nada é gravado e persistido em disco. Trata-se do backup enviado para o NUL device, assunto já comentando e que você pode conferir  neste post.

IT’S DEMO TIME!

Tudo foi testado em uma instância 2008 R2, embora possa ser testado em qualquer versão 2008+ que possua a feature de compressão de backup.

Tenho uma base chamada DB_BESTIARIO que possui 484.37 MB.

sp_helpdb na base

Trata-se de um repositório e que no momento do teste estava sem atividade alguma, o que é perfeito para este exemplo diga-se de passagem. Esse banco de dados não tem nenhum backup realizado (Veja o resultset vazio).

Não retorna nenhum resultado

Não retorna nenhum resultado

Agora, vamos tirar um backup FULL normal, sem compressão e conferir o que foi logado na backupset:

comp3

Nada demais. O tamanho do campo compressed backup size é exatamente o mesmo do backup_Size se não for utilizado compressão. Apenas com esta informação, não consigo estimar o tamanho do backup comprimido.

Então, vamos tirar um backup apontando pro NUL:

Comp4

Note que o tamanho do backup feito pra NUL é o mesmo do backup realizado fisicamente em disco. Estes tamanhos conferem com a realidade do primeiro backup tirado?

comp5

.. 151.636 KB equivale à 148MB. Agora, vamos tirar um backup COM compressão e conferir qual tamanho o SQL Server loga no backupset:

comp6

Aqui está a observação principal do teste. Fazendo um backup “fake”, dá pra estimar que o backup comprimido é três vezes menor que o tamanho do backup sem compressão. Mas nem por isso existe a certeza de que o ganho do comprimido x original será sempre 3x menor pra todo backup daquela base, embora isso seja favorável para praticamente todos os cenários. Através deste teste, é possível estimar o tamanho do backup sem efetivamente gerar algum arquivo de saída.

Só pra fechar o teste, vamos tirar um backup comprimido para o disco (ou seja, vai gerar arquivo persistido em disco) pra ver se vai dar esses 45.97MB de fato. Só pra validar se não foi viagem confiar no tamanho que o backup pro NUL mostrou.

comp7

 

 

Mais uma prova cabal do backup comprimido em disco:

comp8

IMPORTANTE (!)

– O backup é “fake” mas o processo de leitura em disco é real, ou seja, há processamento e leitura durante a criação do backup. A única coisa que muda é o destino do arquivo. Não existe essa do backup ser fictício e não consumir recursos do servidor (no caso, disco, memória e CPU).
– Use com cautela e saiba em quais situações aplicar. Por exemplo, se a base em questão tiver backups diferenciais, se você fizer um backup full desta forma sem COPY_ONLY, haverá uma modificação no DCM (Differential Change Mapping) e aquele backup será necessário se for necessário restaurar aquele diferencial que vem em seguida. No exemplo não usei COPY_ONLY pois se trata de uma base de testes. Se for para backup de log, a coisa é um pouco mais séria: mandar um backup de log quebra cadeia de backup de log, e nunca queira contar com um backup que não existe, é a pior coisa que tem quando o assunto é recovery.

RESUMO

Não é possível afirmar com precisão qual será o tamanho do backup com compressão a não ser que você tire um. Então a resposta para a pergunta “É possível estimar o tamanho de um backup comprimido” continua a mesma do BOL (Não, só tendo algum backup . O que apresento aqui é uma forma alternativa de obter essa informação.  Como Backup to NUL não é salvo em disco. Significa na prática que você pode estimar espaço de um backup daquela base de 2TB sem ter problemas com espaço em disco por causa do arquivo de backup. Foi o que usei para resolver essa questão, especificamente.

Obrigado pela sua leitura, e…I’ll be back!


Referências

Backup Compression – https://technet.microsoft.com/en-US/library/bb964719.aspx

Tentativa de Shutdown #fail

rena

Olá,

Hoje aconteceu uma situação engraçada. Um integrante da equipe (codinome Juliana meu óculos) na qual faço parte estava verificando logs de servidores (produção) e encontrou uma mensagem que a princípio é preocupante:

psd1

Mensagem:

The attempt by user %2 to restart/shutdown computer %1 failed

Porque é preocupante?

  • Trata-se de uma máquina em ambiente de produção onde roda uma instância SQL Server (em cluster, então menos mal);
  • A tentativa foi feita no meio da tarde onde a indisponibilidade do serviço, se viesse a ocorrer o move, é ainda mais percebida;
  • O usuário é um DBA da equipe;
  • Ficamos preocupados com  o DBA (codinome Bozo)  porque não conseguir fazer um shutdown é fim de carreira, kkkkkkk
  • Questionamos  o DBA e ele afirmou que não tentou desligar máquina nenhuma.

Ele relatou que neste mesmo horário logou, fez atividade X no servidor e fez logoff.  Após a conversa, chegamos a conclusão do que de fato a mensagem estava representando, já que o servidor não foi reiniciado e de fato não houve nenhuma tentativa de shutdown.

Porque isso ocorre?

Quando um logoff é realizado e existem aplicações abertas, é possível que o Windows apresente a tela de Force (Logoff), informando que antes de realizar logoff/shutdown/restart, um ou mais programas precisam ser finalizados. O usuário pode escolher por forçar o desligamento OU cancelá-lo, e a segunda opção faz com que o Windows registre isso como uma “tentativa” de shutdown.

psd2

Foi exatamente isso o que aconteceu com nosso colega.
Depois que comprovamos o fato, zuamos ele e seu apelido hoje é Quase Shutdown.
Já sabe: se você ver um cenário parecido, lembre desse post 🙂

[]’s

Complementos

Mensagem de log https://www.microsoft.com/technet/support/ee/transform.aspx?ProdName=Windows+Operating+System&ProdVer=5.2&EvtID=1073&EvtSrc=User32&LCID=1033

SQL Server 2016 Public Preview anunciado!

Microsoft_SQL_Server_2016_fanartlogo

Logo não oficial

 

Foi anunciado no Ignite no dia 04/05/2015, evento gigante organizado pela Microsoft voltando pra grandes empresas  pelo gente fina CEO Mr. Satya Nadella, mais rápido que ligeiro, uma notícia de interesse nosso: SQL Server 2016 já tem versão public preview prevista pro verão (espere por novidades pelo período de Junho ~ Agosto).

 

“Mal mexi no 2014 e olha lá, já tem versão nova. Que coisa hein, rsrs”

 

Maiores informações podem ser lidas no blog do time de produto do SQL Server clicando aqui. Lá explicam “por cima” algumas novas features do produto.

Você tem mais informações no Datasheet que costumeiramente é disponibilizado nos anúncios do produto clicando aqui (PDF)

Interessante notar o direcionamento da empresa que está cada vez mais endereçado para  Analytics , Azure (bem interessante o Stretch Database, pra quem puder usar, é claro), além do reforço do OLTP In-memory e melhoria em outros recursos já conhecidos, como criptografia. É claro que não iam mostrar tudo o que o produto tem de novidade antes de lançar o public, então vamos aguardar…

A dica rápida, pra finalizar o post, é direta: acesse a página do public preview através deste link e espere por breves novidades 🙂

[]’s