Arquivo

Archive for the ‘Não categorizado’ Category

WebCast 08/10 – Administrando SQL Server 2008 R2 – Mirroring/Resource Governor e BackupCompression

7 de outubro de 2010 Deixe um comentário

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

https://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032465729&EventCategory=4&culture=pt-BR&CountryCode=BR

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.

Categorias:Não categorizado

WebCast 30/10 – Lipoaspiração no seu Banco de Dados!

2 de outubro de 2010 1 comentário

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.

https://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032464230&EventCategory=4&culture=pt-BR&CountryCode=BR

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!

Categorias:Não categorizado

WebCast 15/10 – Gerenciamento da Plataforma SQL Server R2 utilizando PBM

2 de outubro de 2010 Deixe um comentário

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

Categorias:Não categorizado

Movendo meu Blog, atualize seu RSS

Galera, estou movendo meu blog do Spaces para os Servidores da SolidQ.
Segue o endereço do novo Blog.
Atualize seu RSS, e nos vemos lá…
**** UPDATE – 24/08/2011
Estou voltando pra cá, com o domínio blogfabiano.com
Abraços.
Categorias:Não categorizado

Série Mentes Brilhantes – Parte 14

24 de junho de 2010 3 comentários

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)

Prudente TechDay dia 14/08

Galera, o Prudente TechDay esta chegando… Novamente com certeza o evento será um sucesso com a presença de vários MVPs e funcionários da MS… imperdível…
 
Categorias:Não categorizado

Fabiano vs DBCC Page, 2

8 de junho de 2010 3 comentários

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

Categorias:Não categorizado

Fabiano VS DBCC PAGE

31 de maio de 2010 6 comentários

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…

 

Categorias:Não categorizado

Oração do DBA/Developer

28 de maio de 2010 2 comentários
 

QUERY NOSSA QUE ESTAIS NO BANCO,

RODE RÁPIDO MINHA CONSULTA,

ASSIM NO CONSOLE QUANTO NA APLICAÇÃO

QUE RETORNE NOSSA CONSULTA

 

AMÉM!

Categorias:Não categorizado

Meu twitter

Galera esqueci de colocar meu twitter por aqui segue ai.

http://twitter.com/mcflyamorim

Categorias:Não categorizado