Arquivo
WebCast 08/10 – Administrando SQL Server 2008 R2 – Mirroring/Resource Governor e BackupCompression
Minha gente, ontem fui pego de surpresa com um convite para fazer uma WebCast amanhã 🙂
Conclusão, este mês vou fazer 3 WebCasts :-).
Amanhã vou falar sobre as ferramentas de gerenciamento do SQL Server 2008, e finalmente vou conseguir fazer uma demo que faz tempo que eu quero fazer sobre Auto Repair no DataBase Mirroring.
Portanto, amanhã é dia de almoçar mais tarde e assistir uma WebCast do TechNet…
Conto com a sua presença, te vejo lá… segue mais detalhes sobre a WebCast.
Link para inscrição
Título
Administrando SQL Server 2008 R2 – Mirroring/Resource Governor e BackupCompression
Visão Geral do Evento
Conheça os novos recursos de Administração do SQL Server 2008 R2. Nesta sessão você entenderá porque gerenciar um banco de dados SQL Server ficou mais fácil com as ferramentas de Resource Governor e Compressão de Backup. Bem como manter um ambiente de alta disponibilidade e tolerância a falhas utilizando o espelhamento de banco de dados.
WebCast 30/10 – Lipoaspiração no seu Banco de Dados!
Galera, aproveitando o embalo… dia 30 irei apresentar uma das Sessões do WorldWide Online TechDay.
Quer saber como deixar seu banco de dados com barriga tanquinho? … Não perca esta sessão.
Visão Geral do Evento
Lipoaspiração no seu Banco de Dados!
Veja nesta sessão como cortar a gordura que impede que seu banco de dados tenha uma vida saudavel. Entenda porque esta gordura impede que seu banco de dados responda de forma performática. Após o termino desta sessão você estará apto a operar seu banco de dados. Veremos alguns itens muito importantes tais como: Bad Cluster Index, Unused NonClustered Index, Duplicated Index, DataTypes, Page Compression, Row Compression, VarDecimal, Sparse Columns, Filtered Index, Include, Fillfactor e mais…
Sábado, 30 de outubro de 2010 10:00 Brasília
Minha sessão será as 10:00 da manhã, mas o evento começará as 09:00.
See you there!
WebCast 15/10 – Gerenciamento da Plataforma SQL Server R2 utilizando PBM
Galera, vou apresentar uma WebCast para o TechNet falando sobre PBM(Policy-Based Management) e como utilizar este poderoso recurso para gerenciar seu ambiente de servidores.
Segue mais detalhes abaixo, e conto com a presença de vocês… Abraços!
https://msevents.microsoft.com/CUI/EventDetail.aspx?culture=PT-BR&EventID=1032459532
Webcast TechNet: SQL Server 2008 R2: Simplifique o Gerenciamento da Plataforma de Dados do SQL Server
Visão Geral do Evento
Descubra como o PBM (Policy-Based Management – Gerenciamento Baseado em Diretivas), um sistema de gerenciamento de uma ou mais instâncias do Microsoft SQL Server 2008, pode melhorar sua capacidade de gerenciar servidores, bancos de dados e outros objetos. Neste webcast, discutiremos os três componentes do PBM: gerenciamento de diretivas, administração explícita e modos de avaliação. Mostraremos os objetos usados na configuração do gerenciamento de diretivas: facetas, condições, diretivas, destinos e categorias. Vamos examinar esses componentes diversos, explicar como eles trabalham juntos e demonstrar como as diretivas definidas através do recurso PBM são usadas para monitorar e gerenciar servidores, bancos de dados e outros objetos.
Data de Início:
sexta-feira, 15 de outubro de 2010 12:00 Brasília
Movendo meu Blog, atualize seu RSS
Série Mentes Brilhantes – Parte 14
O que fazer quando você odeia a clausula WHERE ?
Simples, basta usar o filtro no INNER JOIN usando a clausula EXISTS
SELECT Tab1.Col1,
Tab1.Col2,
Tab2.Nome
FROM Tab1
INNERJOIN Tab2
ON Tab1.ID = Tab2.ID
ANDEXISTS(SELECT 1
WHERE Tab1.Col1 = 64
AND Tab1.Col2 > 10)
Fabiano vs DBCC Page, 2
Sábado em um treinamento de SQL aqui na empresa, eu estava mostrando o DBCC Page quando uma pessoa falou…
– Cara o que você esta esperando para criar uma function que faz a conversão do HexaDecimal da SysIndexes ?
Pensando nisso, criei uma proc que você passa um hexadecimal… por exemplo os valores das colunas ROOT ou o FIRST da SysIndexes… e a proc retorna o comando de DBCC PAGE…
Por que eu criei uma proc e não uma function?
Por que precisei usar a sp_ExecuteSQL para converter um VarChar para um VarBinary. Se você tiver um Hexa armazenado em um VarChar e você quiser voltar ele para hexa e rodar:
SELECT CONVERT(VarBinary(200), ‘0x00043B59’)
O SQL irá retornar:
0x30783030303433423539
Ou seja não é bem isso que quero certo?….
Daí para resolver este problema, usei uma dica que li no livro do Itizk, T-SQL Programming 2005.
Usando a sp_ExecuteSQL ele converte certo… veja você mesmo o código na proc… para baixar é só usar o link abaixo.
http://cid-52eff7477e74caa6.office.live.com/self.aspx/Publica/st^_HexaToDBCCPAGE.sql
Abraços
Fabiano VS DBCC PAGE
Pessoal, estes dias eu resolvi fazer algumas brincadeiras com o SQL… e cheguei na procedure em anexo.
Para deixar as coisas mais interessantes, vou começar o artigo perguntando o seguinte: É possível ler os dados armazenados em uma tabela temporária por uma sessão que não seja a que criou a tabela?
Por padrão sabemos apenas a sessão que criou a tabela temporária pode ler os dados armazenados nela, e estes dados ficam armazenados no banco temporário do SQL Server o Tempdb. Sabendo disso podemos pensar o seguinte… ora eu poderia criar uma tabela ir no Tempdb, e tentar dar um select nesta tabela… vamos ver se isso funciona?
Primeiro vamos criar uma tabela temporária e inserir uma linha nela…
Bom agora vamos no Tempdb tentar ver se a tabela que criei na sessão acima existe lá.
Opa, achamos a tabela, ele criou com o mesmo nome que dei, mas colocou uns caracteres na frente… vamos tentar dar um select nela.
Aaaa, não é possível ler os dados… será que tem um jeito?
Programador Marreta: Ummm, mas Fabiano ele cria a tabela o TempDB, e se eu usar o DBCC PAGE para ler os dados? Será que rola?
Fabiano: Opa! SIM claro!
Programador Marreta: Aaa Fabiano mas daí vai dar muito trabalho… não é?
Fabiano: Não, claro que não.
Programador Marreta: Como não, mas e se a tabela tiver 1000 páginas, vou ter que escrever 1000 comandos de DBCC Page?
Fabiano: Imagina, claro que não. É só rodar um exec na proc que ele mostra os dados a partir do DBCC Page.
Programador Marreta: Opa, qual proc? Daí você me pegou.
Fabiano: st_SelectPAGEs !
Pois é galera, criei uma proc que usa DBCC IND e DBCC PAGE para ler os dados de uma tabela diretamente a partir das páginas de dados. J Pura geekeza!
Vamos ver se funciona? … Você pode baixar o código de criação da procedure aqui.
Pronto, desta forma conseguirmos ler o valor da tabela temporária…
Fora isso, pra que mais essa procedure pode ser útil? Vou mostrar outro exemplo com uma página corrompida.
Primeiro vamos criar um banco de dados qualquer.
USE Master
— Caso exista um banco chamado DBCorrupt, apaga ele.
IF (SELECT DB_ID(‘DBCorrupt’)) IS NOT NULL
BEGIN
USE Master
ALTER DATABASE DBCorrupt SET SINGLE_USER WITH ROLLBACK IMMEDIATE
DROP DATABASE DBCorrupt
END
GO
— Criar um banco de dados chamado DBMirroring
IF (SELECT DB_ID(‘DBCorrupt’)) IS NULL
BEGIN
CREATE DATABASE DBCorrupt
END
GO
— Altera o banco para utilizar CHECKSUM no Page_Verify
ALTER DATABASE [DBCorrupt] SET PAGE_VERIFY CHECKSUM
GO
Agora vamos criar uma tabela e inserir uma linha nela.
USE DBCorrupt
GO
— Vamos criar uma tabela para utilizar nos testes.
CREATE TABLE Teste(ID Int IDENTITY(1,1) PRIMARY KEY,
Nome VarChar(250))
GO
— Vamos inserir uma linha na tabela
INSERT INTO Teste(Nome) VALUES(‘Fabiano Neves Amorim’)
GO
SELECT * FROM Teste
GO
CHECKPOINT
GO
Agora vamos setar o banco para OFFLINE para poder editar o arquivo e simular uma corrupção. Para isso eu utilizei o Hex Editor Neo, você pode usar qualquer programa de edição de hexa.
USE master
GO
ALTER DATABASE DBCorrupt SET OFFLINE
GO
Procura pelo valor “Amorim” incluído na tabela.
Vou editar e trocar para XXXXXX, para causar um erro de lógico de CheckSum, leia mais e entenda o CheckSum aqui.
Após isso, vou voltar o banco para ONLINE.
ALTER DATABASE DBCorrupt SET ONLINE
GO
Agora vamos tentar rodar um select na tabela “Teste”.
USE DBCorrupt
GO
SELECT * FROM Teste
Ao tentar rodar este comando, o seguinte erro é exibido:
Msg 824, Level 24, State 2, Line 1
SQL Server detected a logical consistency-based I/O error: incorrect checksum (expected: 0xe7f12a45; actual: 0xf3e431c5). It occurred during a read of page (1:78) in database ID 18 at offset 0x0000000009c000 in file ‘C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008R2\MSSQL\DATA\DBCorrupt.mdf’. Additional messages in the SQL Server error log or system event log may provide more detail. This is a severe error condition that threatens database integrity and must be corrected immediately. Complete a full database consistency check (DBCC CHECKDB). This error can be caused by many factors; for more information, see SQL Server Books Online.
Para recuperar a tabela, teríamos que rodar o DBCC CHECKDB com a opção REPAIR_ALLOW_DATA_LOSS.
Mas e se eu tentar ler usando minha proc? Ou seja, diretamente nas páginas de dados?
Feito, desta forma você poderia fazer um backup da tabela, apaga-la e voltar os dados a partir da tabela lida pelo DBCC Page.
Galera, fica ai a dica e o script da proc… have fun…
Oração do DBA/Developer
QUERY NOSSA QUE ESTAIS NO BANCO,
RODE RÁPIDO MINHA CONSULTA,
ASSIM NO CONSOLE QUANTO NA APLICAÇÃO
QUE RETORNE NOSSA CONSULTA
AMÉM!















