Arquivo

Archive for the ‘Não categorizado’ Category

What 5 things should SQL Server get rid of? Me too, why not?

O Paul Randal começou uma discussão bem interessante sobre 5 coisas que ele gostaria de remover do SQL Server.

Depois disso vários começaram a dar suas opiniões, no fim do post tem alguns links…

Desconsiderando alguns itens já mencionados pelo Paul e companhia, segue a minha lista de 5 coisas que deveriam morrer no SQL Server.

1.    Permitir criar índices duplicados. SQL Server 2008 permite que você crie 999 índices exatamente iguais. Isso é ridículo.

Msg 1910, Level 16, State 1, Line 1

Could not create nonclustered index ‘ix_test1000’ because it exceeds the maximum of 999 allowed per table or view.

2.    Botão play de Debug, cansei de contar quantas vezes já cliquei ou já reclamaram pra mim que clicaram no botão errado.

clip_image002

3.    Arredondamento “automático” de campos Float no SSMS. Isso definitivamente causa confusões enormes. Várias vezes já me perguntaram… “ma que merda que tá acontecendo aqui?”

Query Analyzer

clip_image004

SQL Server Managment Studio

clip_image006

4.    Essa é recente e já vai pra minha lista. Desculpe a palavra mas… Porra, acabou de lançar o R2 e já não posso restaurar um Backup feito no R2 no 2008 SP1. Que saco!

5.    Por fim mas não menos importante, acho que deveriam remover o recurso de Paralelismo. Haha, Laerte e Fernando Garcia muita calma nessa hora, é brincadeira… 🙂

Por fim de verdade, SQL Server em Português ninguém merece. Definitivamente isso deve morrer. Ou no mínimo se é pra fazer faz direito.

E você o que acha? Qual é a sua lista?

Paul Randal – What 5 things should SQL Server get rid of?

Michelle Ufford – DELETE 5_Useless_Things FROM [SQL Server]

Lee Everest – Five things SQL Server should ban forever

Buck Woody – What 5 things should SQL Server get rid of?

Jonathan Kehayias – 5 Things SQL Server should get rid of

Lee Everest – Five things SQL Server should add

Mike Walsh – 5 Things SQL Server Should DROP

Aaron Bertrand – Tagged: 5 things SQL Server should drop

Thomas LaRock – What 5 things Should SQL Server Get Rid Of?

Brent Ozar – 5 Things SQL Server Should Truncate

Categorias:Não categorizado

Fabiano VS Reporting Services 2005

Por estes dias um de nossos clientes abriu um chamado dizendo que estava com um problema no Wizard do Reporting Services.

Ao tentar utilizar uma proc que usa uma tabela temporária, o Wizard retornava uma mensagem de erro dizendo que a tabela não existia, segue o print abaixo.

clip_image001

Quando fui analizar utilizei o SQL Server 2008 R2 que é a versão que esta instalada na minha máquina. Conclusão, não deu erro, veja abaixo:

clip_image003

clip_image005

Conclusão corrigiram a “cagada” no SQL 2008 R2, para resolver o problema, tive que incluir um no SET FMTONLY OFF; no início da procedure.

Por padrão o Reporting Services habilita o FMTONLY para que seja retornada somente o metada do código, porém neste caso da erro por causa da tabela temporária. Incluindo o OFF no início da proc resolvemos o problema.

Categorias:Não categorizado

Série Mentes Brilhantes – Parte 10

18 de maio de 2010 1 comentário

O que fazer quando você deseja apagar registro somente se ele existir na tabela?

 

Verifique se ele existe antes de apagar

IFEXISTS(SELECT 1 FROM Clientes WHERE ID_Cliente = @ID)

BEGIN

  DELETEFROM Clientes WHERE ID_Cliente = @ID

END

Série Mentes Brilhantes – Parte 9

17 de maio de 2010 1 comentário

O que fazer quando você odeia like?

 

Não use o like, crie sus próprios meios para filtrar os dados

SELECT*FROM Pedido

WHERESubString(Vendedor,1,2)=‘Fa’

Ordem dos Joins…

14 de maio de 2010 5 comentários

Galera tem uma discução maravilhosa rolando sobre ordem das tabelas nos joins…

 

Eu com certeza vou blogar sobre isso logo… por enquanto NÃO deixem de acompanhar….

 

Veja aqui onde tudo começou…

http://social.msdn.microsoft.com/Forums/en-US/transactsql/thread/278c272b-5ebb-4fda-8985-49927bbd3799/#b5592aec-e146-4972-ab75-5e4fcb81a43e

 

Veja aqui quando começou a esquentar…

http://blogs.msdn.com/conor_cunningham_msft/archive/2010/04/23/conor-vs-left-outer-join-reordering.aspx

 

Veja aqui a explicação do Brad…

http://bradsruminations.blogspot.com/2010/04/looking-under-hood.html

 

Veja aqui quando começou a ferver…

http://blogs.msdn.com/conor_cunningham_msft/archive/2010/05/14/conor-vs-anti-semi-join-reordering.aspx

 

 

Categorias:Não categorizado

Série Mentes Brilhantes – Parte 8

13 de maio de 2010 1 comentário

O que fazer quando você odeia fazer joins?

 

Crie SubQuerys para retornar os dados das colunas.

SELECT ID_Pedido,

       Valor,

      (SELECT Nome     FROM Clientes WHERE Clientes.ID_Cliente = Pedidos.ID_Cliente)AS NomeCliente,

      (SELECT Endereco FROM Clientes WHERE Clientes.ID_Cliente = Pedidos.ID_Cliente)AS EnderecoCliente,

      (SELECT Bairro   FROM Clientes WHERE Clientes.ID_Cliente = Pedidos.ID_Cliente)AS BairroCliente,

      (SELECT Cidade   FROM Clientes WHERE Clientes.ID_Cliente = Pedidos.ID_Cliente)AS CidadeCliente

FROM Pedidos

WHERE ID_Cliente = 10

Série Mentes Brilhantes – Parte 7

12 de maio de 2010 3 comentários

O que fazer quando você quer atribuir um valor para uma variável mas somente se o valor existir na tabela?

Simples, verifique se o valor existe na tabela antes de atribui-lo.

IF EXISTS(SELECT 1

            FROM Tab1

           WHERE Col1 = @Col1

             AND Col2 = ‘FR’)

BEGIN

  SELECT @Col3 = Col3

    FROM Tab1

   WHERE Col1 = @Col1

     AND Col2 = ‘FR’;

END

 

IF EXISTS(SELECT 1

            FROM Tab1

           WHERE Col1 = @Col1

             AND Col2 = ‘TA’)

BEGIN

  SELECT @Col3 = Col3

    FROM Tab1

WHERE Col1 = @Col1

     AND Col2 = ‘TA’;

END

 

Ps: Sabe aonde eu já vi isso? No script da procedure sp_who2. Que beleza!

Série Mentes Brilhantes – Parte 6

11 de maio de 2010 3 comentários

O que fazer quando você precisa que o SQL retorne os dados, mas você não quer esperar muito tempo para que ele leia as informações?

 

Use um hint para retornar as primeiras 5 milhões de linhas FAST, ou seja, rápido.

SELECT * FROM Pedidos

OPTION(FAST 5000000)

Série Mentes Brilhantes – Parte 5

11 de maio de 2010 1 comentário

O que fazer quando você gosta muito de fazer Updates?

Crie um Update para cada campo que será atualizado

UPDATE Clientes SET Nome = @NovoNome

WHERE ID_Cliente = @ID

 

UPDATE Clientes SET Sobrenome = @NovoSobrenome

WHERE ID_Cliente = @ID

 

UPDATE Clientes SET Endereco = @NovoEndereco

WHERE ID_Cliente = @ID 

UPDATE Clientes SET Bairro = @NovoBairro

WHERE ID_Cliente = @ID

 

UPDATE Clientes SET CEP = @NovoCEP

WHERE ID_Cliente = @ID

Série Mentes Brilhantes – Parte 4

10 de maio de 2010 3 comentários

O que fazer quando você gosta muito de uma tabela?

 

Sempre faça joins com ela, mesmo quando você não precisa dos dados.

SELECT Pedido.Codigo_Pedido

  FROM Pedido

INNER JOIN Clientes

    ON Pedido.ID_Cliente = Clientes.ID_Cliente