Descobrindo se os seus planos de execução estão sendo reutilizados no SQL Server

Quer saber se os seus planos de execução que estão em cache no SQL Server estão sendo reutilizados?

Para visualizar a quantidade e porcentagem de planos de execução que estão sendo reutilizados basta executar a consulta abaixo:


DECLARE @singleExec BIGINT;
DECLARE @multipleExec BIGINT;
DECLARE @totalExec BIGINT;

SELECT @singleExec = COUNT(*)
FROM sys.dm_exec_query_stats s
WHERE execution_count = 1
SELECT @totalExec = COUNT(*)
FROM sys.dm_exec_query_stats s

SET @multipleExec = @totalExec - @singleExec

SELECT @totalExec AS totalExec, @multipleExec AS multipleExec, @singleExec AS singleExec
UNION ALL
SELECT 100 AS totalExec, ((@multipleExec * 100) / @totalExec) AS multipleExec, ((@singleExec * 100) / @totalExec) AS singleExec

Resultado:

Screen Shot 2017-08-24 at 03.21.28

Primeira linha: #

Segunda linha: %

totalExec: Total de planos de execução em cache.

multipleExec: Total de planos de execução em cache que foram reutilizados.

singleExec: Total de planos de execução em cache que foram utilizados apenas uma única vez.

Se este script foi útil para você avalie na galeria de scripts da TechNet por gentileza: https://gallery.technet.microsoft.com/SQL-Server-Get-Plan-Reuse-412de376

Obrigado! Espero que tenham gostado. Até a próxima!

Mapeando uma instância de SQL Server para uma instância de MSDTC

Precisando mapear uma instância de SQL Server para uma instância específica do MSDTC?

Aí vão algumas dicas e comandos para facilitar a sua vida.

Listar todos os mapeamentos do MSDTC:


msdtc.exe -tmMappingView *

Adicionar um mapeamento de uma instância do SQL server para uma instância do MSDTC:


msdtc -tmMappingSet -name "nomeDoMapeamento" -service 'MSSQL$nomeInstancia' -clusterResourceName "nomeDoRecursoDoMsdtcDentroDoCluster"

Screen Shot 2017-08-24 at 01.59.58

Importante: Se você adicionar um mapeamento incorreto o comando de criação será bem sucedido, mas o seu mapeamento não irá funcionar corretamente.

Remover um mapeamento realizado anteriormente:


msdtc.exe -tmMappingClear -name "nomeDoMapeamento"

Mais informações, dicas e boas práticas sobre MSDTC/SQL Server podem ser encontradas nas documentações abaixo:

https://blogs.msdn.microsoft.com/cindygross/2009/02/22/how-to-configure-dtc-for-sql-server-in-a-windows-2008-cluster/

https://blogs.msdn.microsoft.com/alwaysonpro/2014/01/15/msdtc-recommendations-on-sql-failover-cluster/

É isso galera. Espero que tenham gostado.

Exame 70-764 (Beta) – Administering a SQL Database Infrastructure

https://borntolearn.mslearn.net/b/weblog/posts/calling-all-database-professionals-register-for-the-764-administering-a-sql-database-infrastructure-beta-exam

SQL Server 2014 Service Pack 2

Galera,

Foi liberado hoje o Service Pack 2 do SQL Server 2014.

O download já está disponível através do link abaixo.

Quem quiser pode conferir as principais alterações incluídas no Service Pack 2:

anúncio do SQL Server 2014 SP2 foi feito hoje no blog oficial do SQL Server.

Trabalhando com dados geográficos no SQL Server

Por mais que não seja muito comum a utilização de dados geográficos dentro do SQL Server o tipo de dados GEOGRAPHY está disponível desde a versão 2008 no SQL Server.

Para quem ainda não utilizou este recurso vou mostrar um rápido exemplo desde a criação da tabela, inserção de dados e a utilização de uma função específica para calcular a distância entre dois pontos em linha reta.

Vamos primeiramente criar a tabela.

Observem que estamos criando um campo coords do tipo GEOGRAPHY aonde irão ficar armazenadas as coordenadas propriamente ditas. O campo place será uma coluna computada utilizando a função STAsText() para retornar as coordenadas armazenadas em coords em um formato legível.


CREATE TABLE [pocGeography] (
id BIGINT IDENTITY,
name VARCHAR(1000),
coords GEOGRAPHY,
place AS coords.STAsText() );

Agora vamos para a inserção dos dados. Notem a utilização da função Point() que representa um ponto a partir das coordenadas [Latitude, Longitude] fornecidas e da função STGeomFromText() que transforma as coordenadas legíveis em um formato apto para armazenamento em um tipo de dados geográfico no SQL Server.


INSERT INTO [dbo].[pocGeography] ([name],[coords])
VALUES ('Sapiranga', geography::STGeomFromText('POINT(29.6353861 051.0069556)', 4326));
INSERT INTO [dbo].[pocGeography] ([name],[coords])
VALUES ('Porto Alegre', geography::STGeomFromText('POINT(30.0348417 051.2386778)', 4326));

Agora vamos utilizar a função STDistance() para calcular a distância entre dois pontos em linha reta.


DECLARE @src GEOGRAPHY;
DECLARE @dst GEOGRAPHY;
SET @src = (select coords from [dbo].[pocGeography] where id=2)
SET @dst = (select coords from [dbo].[pocGeography] where id=1)
--SELECT @src.STDistance(@dst)/1609.344 --Miles
SELECT @src.STDistance(@dst)/1000 --Kilometers

Resultado:

Screen Shot 2016-06-18 at 4.44.00 AM

Existem muitas outras funções, métodos e funcionalidades para trabalharmos com dados geográficos no SQL Server. Se quiserem conferir alguns métodos existentes deem uma olhada na documentação da MSDN no link abaixo:

https://msdn.microsoft.com/en-us/library/bb933802.aspx

É isso galera! Espero que tenham gostado!

Referências:

SQL Server 2016 eBook

Fala galera!

Para quem quiser dar uma olhada nas novidades e novos recursos da versão 2016 do SQL Server recomendo baixarem o eBook de introdução da versão 2016 do SQL Server disponível desde o dia 03 de Junho na sua versão final.

Baixem agora o eBook de introdução do SQL Server 2016!

Post do blog da MSDN sobre o eBook de introdução ao SQL Server 2016

Download do eBook de introdução do SQL Server 2016

SQL Server s2 Linux

Já fez a certificação para Linux? Ainda não?

Poisé. Durante o ano de 2017 veremos pela primeira vez o SQL Server em um sistema operacional Linux.

No segundo link abaixo você pode se inscrever para ficar informado sobre as novidades do SQL Server para Linux.

Anúncio do SQL Server para Linux

Página oficial do SQL Server para Linux

Screen Shot 2016-06-18 at 2.32.57 AM.png