CROSS APPLY com FOR XML, dentro de um FOR XML

Esses dias surgiu uma questão aqui no trabalho que acho que vale o registro… Me questionaram sobre a possibilidade de concatenar o resultado de diversas linhas em uma única e, imediatamente, me veio o bom e velho FOR XML PATH(”) em mente. O problema é que o resultado deveria ser concatenado de acordo com o resultado proveniente de uma outra tabela, algo como: Status1 (Codigo1, Codigo2, Codigo3) Status 2 (Codigo4) Status 3 (Codigo5) A criação da estrutura seria algo assim: ...

19 mar. 2014 · 4 minutos · 669 palavras · Logan D. Merazzi

Feliz Ano Novo em T-SQL!?!?

Bom, hoje dando uma brincada com dados geoespaciais (férias tem disso… hehehe), resolvi fazer uma “brincadeira” e desejar um Feliz Ano Novo de um jeito diferente… Claro, nada se compara ao Feliz Natal do Michael Coles, mas é como dizem: O que vale é a intenção… heheheh Espero que em 2014 todas as metas estipuladas sejam alcançadas, que seja um ano de renovação ou, pelo menos, de ação. Ah, claro… Para quem quiser ver o script, acesse o meu github: https://github.com/LoganMerazzi/SQLServerScripts/blob/master/Happy%20new%20year ...

31 dez. 2013 · 1 minuto · 88 palavras · Logan D. Merazzi

Descobrindo quais tabelas estão em quais filegroups

Alguma vez você deve ter se perguntado: “Como eu sei em qual filegroup está essa tabela?” Existe uma ideia de que a hierarquia se dá da seguinte forma: Instância -> Database -> Filegroup -> Tabela -> Dados Porém está faltando um item aí que acaba passando despercebido muitas vezes… Os índices! Ele é quem define onde os dados de uma tabela serão armazenados. O índice cluster é o responsável por organizar a tabela fisicamente. Seria conveniente dizer que ele “É” os dados da sua tabela (falar que os dados estão dentro do índice cluster me soa errado, então deixemos a frase estranha mesmo 🙂 ). Então, na prática, ao criar o seu índice cluster, você estará especificando o filegroup onde os dados serão armazenados. ...

23 out. 2013 · 3 minutos · 599 palavras · Logan D. Merazzi

Compatibility Views & Catalog Views

Alguma vez você já parou para pensar em como as functions, procedures, constraints, etc ficam armazenadas no banco? Onde fica a definição dos objetos? No SQL Server 2000 existia uma tabela de sistema chamada syscomments. Essa tabela retornava 1 linha a cada 4000 caracteres que tivesse a definição do objeto. ...

18 jul. 2013 · 2 minutos · 307 palavras · Logan D. Merazzi

Função Escalar x Table Valued Function

Muito se fala na internet sobre como as funções escalares são terríveis e que devemos evitar o uso a todo o custo… Eu gostaria de mostrar o porquê: Vejam o seguinte script abaixo (um procedimento muito utilizado por aí: a utilização de uma função escalar que trata “N” casos e retorna o valor desejado). Primeiro, a criação da tabela e inserção dos dados: CREATE TABLE NotaFiscal (Cod int identity primary key, Pessoa varchar(20), Valor decimal (15,2), Data date) CREATE INDEX Ncl_NotaFiscal ON NotaFiscal (Data) INCLUDE (Pessoa, Valor) GO -- Inserindo 10 notas no período de 500 dias (5000 notas). INSERT INTO NotaFiscal SELECT 'Logan', 100, DATEADD(DD, Number, '2012-12-31') from Numbers WHERE Number < 500 GO 10 GO CREATE FUNCTION CalculaTributos (@Codigo int, @Tipo char(1)) Returns decimal(15,2) AS BEGIN DECLARE @valor decimal(15,2) SELECT @Valor = CASE @tipo WHEN 'a' then valor * 0.1 WHEN 'b' then valor * 0.3 WHEN 'c' then valor * 0.5 END FROM NotaFiscal RETURN @valor END; ...

01 jul. 2013 · 3 minutos · 509 palavras · Logan D. Merazzi

3º Encontro do grupo SQLServerRS de 2013 – Scripts

Pessoal, Antes de qualquer coisa, gostaria de agradecer ao grupo (pela enésima vez) a oportunidade de me permitir palestrar neste 3º encontro. O encontro na Ftec foi muito bom, primeiramente com o Marcus Vinícius falando sobre a comunidade SQL Server e o PASS. Após, eu assumi o projetor e falei sobre Snapshot no SQL Server. ...

09 mai. 2013 · 1 minuto · 164 palavras · Logan D. Merazzi

3º Encontro de 2013 do Grupo SQL Server RS – Comigo!

Pessoal, com muita honra e orgulho foi convidado pelo Chapter Leader do grupo SQL Server RS, Marcus Vinícius Bittencourt para palestrar no próximo encontro do grupo. Pois bem, o encontro será realizado na FTEC (Caxias do Sul – RS), no dia 04/05/2013 às 14 horas e o assunto será: Snapshot Database: o que é, pra que serve e como usar. Fica aberto o convite à todos! Até!

29 abr. 2013 · 1 minuto · 67 palavras · Logan D. Merazzi

SQL Server + Volume Shadow Copy = Sem backup diferencial.

Após implementar o recurso de envio de e-mails com os erros de backup do SQL Server, notei que o backup diferencial não estava sendo executado, apresentando o seguinte erro: Cannot perform a differential backup for database “MyDatabase”, because a current database backup does not exist. Perform a full database backup by reissuing BACKUP DATABASE, omitting the WITH DIFFERENTIAL option. [SQLSTATE 42000] (Error 3035) BACKUP DATABASE is terminating abnormally. [SQLSTATE 42000] (Error 3013). The step failed. ...

24 abr. 2013 · 2 minutos · 383 palavras · Logan D. Merazzi

SQL Server Database Snapshot

O Database Snaphot (ou “instantâneo de Banco de Dados”, se você estiver no SQL Server em português – Que nome terrível, hehehe) é um banco de dados _somente leitura, _onde o SQL Server guarda os dados originais de tudo o que está sendo alterado pelos usuários, para que seja possível realizar verificações (dentre outras coisas) de como estava o banco antes destas ocorrerem. Ao contrário do que muita gente pensa, as alterações ocorrem nas páginas de dados e não no objeto que está sofrendo alteração. O SQL Server utiliza um recurso chamado “Copy-on-write” onde, antes da página ser alterada, os dados originais são armazenados no snapshot. ...

12 abr. 2013 · 5 minutos · 959 palavras · Logan D. Merazzi

SQL Server Internal Ops. Eu fui!

No dia 07/12, foi realizado na PUC o SQL Server Internal Ops, um evento idealizado pelas comunidades SQL Server RS e MSITPSC, com o apoio da Microsoft e da Dell. Há muito tempo que eu ansiava por um evento do gênero aqui em Porto Alegre, com foco 100% em SQL Server, uma vez que já houveram eventos semelhantes em São Paulo, Rio de Janeiro (Que eu felizmente consegui ir), Recife (com o SQL Saturday) enquanto nós, que moramos aqui no RS, não tínhamos nada. ...

09 dez. 2012 · 5 minutos · 960 palavras · Logan D. Merazzi