Arquivo
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.
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
SQL Server Managment Studio
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
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.
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:
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.
Série Mentes Brilhantes – Parte 10
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
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…
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…
Veja aqui quando começou a esquentar…
Veja aqui a explicação do Brad…
http://bradsruminations.blogspot.com/2010/04/looking-under-hood.html
Veja aqui quando começou a ferver…
Série Mentes Brilhantes – Parte 8
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
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
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
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
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










