Tokyo DB ShowTech Conference slides and scripts

Hey, as I told, following is the link to download the slides and scripts from my sessions… http://1drv.ms/1L2N4T7 Some printscreen from slides: DBA CheckList SQL Server execution plans – hidden and tricky optimizations

MVP Virtual Conference–Material de apresentação

Olá pessoal, No inicio do mês de maio de 2015 entre os dias 13 e 14 tivemos o MVP Virtual Conference onde tive a oportunidade de palestrar apresentando sobre o Resource Governor no SQL Server 2014. Antes de mais nada peço desculpas pela demora em disponibilizar o conteúdo para vocês, mas ultimamente tenho estado bastante … … Continuar lendo

Columnstore Indexes – part 55 (“New Architecture Elements in SQL Server 2016″)

Continuation from the previous 54 parts, the whole series can be found at http://www.nikoport.com/columnstore/ The architectural changes in the upcoming SQL Server 2016 are bringing some very important & long-awaited improvements for the complete Columnstore Indexes architecture in Microsoft SQL…

Short Script – Junho – 2015

Bom dia, Comunidade! Hello Everybody!!! Estamos começando mais um mês e como diz alguns dos cronistas esportivos durante suas transmissões “O tempo passa….”, realmente passa e temos que procurar aproveitar. Como já destaquei anteriormente procure diariamente estudar e conhecer cada vez mais sobre o mundo de Banco de Dados, Carreira de DBA, SQL Server e […]

Azure Premium Storage… Testes com SQLIO

Fala galera, faz tempo eim? Bom, semana passada fiz uns testes em um cliente acho que a informação vai ser útil pra vocês. Esse é um cliente que sofria demais com a péssima performance dos discos do Azure, todo a sua infra-estrutura de banco de dados está em VMs. Depois de aplicar várias técnicas para […]

SQL Server 2016 CTP2 – É hora de estudar #FicaDica

Antecipando a previsão em cerca de duas semanas, a Microsoft lançou publicamente no dia 27/05/2015 a versão de testes do SQL Server 2016 para a comunidade técnica. O SQL Server 2016 CTP2 (Community Technical Preview) está disponível para qualquer pessoa baixar e utilizar para testes e avaliação das novas features, por um período de 180 dias. […]

How to enable Strecth Tables in SQL 2016

Howdy! SQL Server 2016 CTP 2.0 has been launched today, so I want to take some time to show you how to enable the new feature called Stretch Tables. Stretch Tables will allow you to save your table in a Microsoft Azure SQL Database without any application code change to retrieve the information stored in … … Continuar lendo

SQL Server 2016 Preview

Fala galera, Post rápido só para deixar o link de download do SQL Server 2016 Preview: http://blogs.technet.com/b/dataplatforminsider/archive/2015/05/27/sql-server-2016-first-public-preview-now-available.aspx?WT.mc_id=Social_SQL_General_DI&linkId=14509669 Download direto https://www.microsoft.com/en-us/evalcenter/evaluate-sql-server-2016?WT.mc_id=Blog_SQL_Announce_DI Abraço, Demétrio Silva

Columnstore Indexes – part 54 (“Thoughts on upcoming improvements in SQL Server 2016″)

Continuation from the previous 53 parts, the whole series can be found at http://www.nikoport.com/columnstore/ This is a not very deep technical post, which is describing the upcoming news and changes in SQL Server 2016. Since there is no public CTP…

A mudança no Identity a partir do SQL Server 2012!



Fala galera tudo certo? Espero que sim!

Hoje vou falar sobre um comportamento do SQL Server 2012 relacionado à utilização da propriedade Identity que muitos já devem ter presenciado ou lido algo sobre.

Para começar, o que é o Identity?

O Identity como já foi dito a cima, é uma propriedade que você define dentro de uma coluna contendo um tipo numérico com o intuito de gerar valores únicos¹ que tenham um incremento automático, por exemplo, uma coluna do tipo INT com um Identity definido em “1,1”, irá crescer sempre de um em um conforme forem sendo feitas as inserções das linhas na tabela. O criador da tabela define o valor inicial e o valor do incremento, ambos são chamados de “seeds”, quando estes não são definidos o SQL Server assume o padrão “1,1”.
¹ Não é garantido que os valores sejam sempre únicos e que nunca ocorram intervalos entre eles, em certas situações estes podem duplicar.

O antes e depois...

Em versões anteriores do SQL Server, sempre que um novo valor do Identity era gerado, este era logado separadamente. No SQL Server 2012 os valores do identity são gerados em batches e apenas o valor máximo é logado, ou seja, com o mínimo de operações sendo logadas a performance do SQL Server em operações evolvendo identity tende a ser melhor.

+10,+100,+10.00,+10.000...

Esta mudança feita no SQL Server 2012 acabou provocando um comportamento peculiar nas colunas Identity. Imagine que uma instância do SQL Server falha sem que o CHECKPOINT seja executado. Durante o restart do serviço, o SQL Server precisa garantir que não irá reutilizar um valor já atribuído a um campo Identity. Para isto, os campos terão seus valores máximos ajustados de um determinado valor, de acordo com o tipo do campo:

Colunas TINYINT = + 10
Colunas SMALLINT = + 100
Colunas INT = + 1.000
Colunas BIGINT = + 10.000

TRACE FLAG -t272

O trace flag -t272, não documentado, faz com que o SQL Server volte a operar da maneira antiga com relação ao Identity. Ou seja, para cada novo valor gerado será persistido no log.

Simulando o comportamento...

CREATE DATABASE TesteDB
GO

USE TesteDB
GO

CREATE TABLE SimulaID
(
ID INTIDENTITY,
NOME VARCHAR(20)
)
GO

INSERT INTO SimulaID VALUES ('SQL')
INSERT INTO SimulaID VALUES ('MAGU')

--VEJA O RESULTADO…

SELECT ID,NOME FROM SimulaID


--PARE O SQL SERVER COM O COMANDO SHUTDOWN WITH NOWAIT...

SHUTDOWN WITH NOWAIT

Server shut down by NOWAIT request from login --\Andre Cesar.
SQL Server is terminating this process.

--SUBA O SERVIÇO DO SQL NOVAMENTE...

C:\Windows\system32>net start "MSSQL$MSSQL2014" << Troque pelo nome da sua instância...
The SQL Server (MSSQL2014) service is starting.
The SQL Server (MSSQL2014) service was started successfully.

INSIRA NOVAMENTE DOIS VALORES NA TABELA...

USE TesteDB
GO

INSERT INTO SimulaID VALUES ('SQL')
INSERT INTO SimulaID VALUES ('MAGU')

--VEJA NOVAMENTE O RESULTADO, REPARE NO SALTO DO IDENTITY...


Agora, habilite o trace flag -t272 nos parâmetros de inicialização do SQL Server e reinicie o serviço...

 
 
Com o serviço no ar novamente, faça os procedimentos abaixo...

--LIMPE A TABELA...

TRUNCATE TABLE SimulaID

--INSIRA DOIS VALORES NA TABELA..

USE TesteDB
GO

INSERT INTO SimulaID VALUES ('SQL')
INSERT INTO SimulaID VALUES ('MAGU')

--PARE O SQL SERVER NOVAMENTE COM O COMANDO SHUTDOWN WITH NOWAIT...

SHUTDOWN WITH NOWAIT

--SUBA O SERVIÇO DO SQL NOVAMENTE...

C:\Windows\system32>net start "MSSQL$MSSQL2014" << Troque pelo nome da sua instância...
The SQL Server (MSSQL2014) service is starting.
The SQL Server (MSSQL2014) service was started successfully.


--INSIRA NOVAMENTE DOIS VALORES NA TABELA..

USE TesteDB
GO

INSERT INTO SimulaID VALUES ('SQL')
INSERT INTO SimulaID VALUES ('MAGU')

--VEJA O RESULTADO AGORA QUE O TRACE FLAG ESTÁ LIGADO…

SELECT ID,NOME FROM SimulaID


Fontes:

http://www.virtualpass.com.br/
Go to Top