SQL 24 HOP – Palestrarei no SQL PASS 24 horas português

Olá Amigos

No próximo dia 14/11 (segunda-feira) iniciaremos mais um ciclo de palestras com diversos profissionais de SQL Server dos países que falam a língua portuguesa.

A minha sessão será no dia 14/11 as 19:00 (Horário de Brasilia) vou falar de SMB 3.0 como alternativa de storage. Corra, ainda da tempo de fazer a inscrição totalmente gratuíta e online! REGISTRE-SE

Veja a grade de palestras aqui.

 

Anúncios

Testando conexão no SQL com arquivo UDL

Arquivos .UDL (Universal Data Link) é uma maneira simples e rápida para testar conexões com o SQL Server ou ainda criar Connections Strings

1- Criamos um arquivo teste.TXT e vamos renomear para teste.UDL (o ícone mudará)

imageimage

2- Execute o arquivo teste.udl e clique sobre a aba Providers, como você pode observar existem diversos providers, mas para esta artigo em específico vou usar o Native Client do SQL 2008 (10.0), após selecionar o provider clique sobre o botão Next.

image

3- Na aba Connection você deve informar o nome do seu servidor SQL no campo 1 no campo 2 você deve informar o modo de autenticação (SQL ou Windows) se o usuário estiver correto e com permissões no SQL server no campo 3 você conseguirá selecionar o database

image

4- Agora para testar basta clicar sobre o botão Test Connection, se o usuário estiver correto e com as devidas permissões no SQL você deverá receber a mensagem abaixo:

image

5- Caso queira criar a Connection String, basta clicar em OK na mensagem de Test Connection e em OK nas propriedades do arquivo UDL e em seguida abrir o arquivo teste.UDL no notepad e copiar a Connection String e utilizar em seu aplicativo, deverá ser algo +/- assim:

[oledb]
; Everything after this line is an OLE DB initstring
Provider=SQLNCLI10.1;Persist Security Info=False;User ID=teste;Password=123456;Initial Catalog=master;Data Source=C3PO

Failed to open loopback connection

Amigos, recentemente passei por um problema muito interessante, ao executar a procedure SP_READERRORLOG recebia o erro abaixo:

Msg 22004, Level 16, State 1, Line 0
Failed to open loopback connection. Please see event log for more information.
Msg 22004, Level 16, State 1, Line 0
error log location not found

Este erro ocorreu em um ambiente clusterizado com Windows 2008 R2 e SQL Server 2008.
Publiquei um artigo no Technet Wiki com detalhes sobre o erro e como solucionar o problema:

http://social.technet.microsoft.com/wiki/contents/articles/7063.solucionando-problemas-error-failed-to-open-loopback-connection-ao-executar-sp-readerrorlog-pt-br.aspx

No transaction is active

Amigos, recentemente passei por um problema bem chato com transações distribuidas em ambiente geograficamente distribuídos, a mensagem é a seguinte:

OLE DB provider “SQLNCLI10” for linked server “<LinkedServer>” returned message “No transaction is active.”.

Msg 7391, Level 16, State 2, Line 4
The operation could not be performed because OLE DB provider “SQLNCLI10” for linked server “<LinkedServer>” was unable to begin a distributed transaction.

Escrevi um pequeno artigo que mostra como identificar e como resolver, espero que ajude caso alguém tenha o mesmo problema:

http://www.mcdbabrasil.com.br/modules.php?name=News&file=article&sid=611

Concactenando valores na mesma coluna

Bom dia galera, tem sido recorrente no Forum Technet threads solicitando ajuda para agrupar valores na mesma coluna e também a pedido do Thiago Alencar que queria ver outra alternativa para concatenar valores sem usar CTE onde o código fica mais enxuto.

Bom, vamos ao cenário, temos os seguintes dados na tabela:

image

E desejo retornar os dados para a aplicação agurapados da seguinte forma:

image

Vamos agrupar todos os personagens por tipo separando-os com uma “,”
Inicialmente vamos criar a variável table @Personagens que usaremos neste exemplo

DECLARE @Personagem TABLE (dsTipo varchar(20),
nmPersonagem VARCHAR(50))
 
INSERT INTO @Personagem VALUES(‘Jedi’,‘YODA’)
INSERT INTO @Personagem VALUES(‘Jedi’,‘Obi-Wan Kenobi’)
INSERT INTO @Personagem VALUES(‘Jedi’,‘Qui-Gon Jinn’)
INSERT INTO @Personagem VALUES(‘Jedi’,‘R2-D2’)
INSERT INTO @Personagem VALUES(‘Jedi’,‘C-3PO’)

A idéia é simples, vamos converter o resultado do nosso select em XML com o FOR XML e usar a função STUFF para substituir as tags XML para “,”.

SELECT a.dsTipo,
    STUFF((SELECT ‘, ‘ + b.nmPersonagem AS “text()”
          FROM @Personagem b
         WHERE a.dsTipo = b.dsTipo
          FOR XML PATH()),1,3,) AS nmPersonagem
FROM @Personagem AS a
GROUP BY a.dsTipo

Existem outras maneiras para se atingir o objetivo, no artigo de um grande amigo Thiago Alencar ele usa CTE.

 

 

Technorati Tags: ,,,,,,,
Windows Live Tags: Concactenando,Forum,Technet,STUFF,SELECT,valores,coluna,agrupar
WordPress Tags: Concactenando,Forum,Technet,STUFF,SELECT,valores,coluna,agrupar