Mostrando postagens com marcador SQL Server. Mostrar todas as postagens
Mostrando postagens com marcador SQL Server. Mostrar todas as postagens

sexta-feira, 24 de junho de 2016

FUN! Deadlock art generator

Contexto: Estou ministrando um treinamento in-company e preparando uma série de novas demonstrações para este cliente. Após escrever uma procedure que era para ser problemática, esbarrei em deadlocks mais interessantes do que eu havia planejado….

Gostei da brincadeira e resolvei compartilhar com vocês um deadlock art generator!

Algumas imagens da saída estão abaixo. Também coloquei no OneDrive um trace com alguns deadlocks que eu coletei.





A primeira ver que ouvi falar sobre deadlock art foi em um post do Catae (https://blogs.msdn.microsoft.com/fcatae/2010/03/18/deadlock-art/) que sempre cito no módulo de locking nos meus treinamentos.

Para reproduzir em seu ambiente, você vai fazer o seguinte.

    1. Crie a procedure proc_Divertida no AdventureWorks2014
    2. Utilizando o SQLQueryStress, mande 20/30 threads com 3/4 execuções “EXEC proc_Divertida;”
        a. O número de threads/repetições você muda de acordo com seu interesse na arte. kkkk
    3. Monitore o deadlock graph no profiler

HAVE FUN!

Abraços,


USE AdventureWorks2014
GO
IF OBJECT_ID('dbo.proc_Divertida') IS NOT NULL
     DROP PROCEDURE dbo.proc_Divertida
go
CREATE PROCEDURE dbo.proc_Divertida
AS 

     DECLARE @OrderID INT = (CAST((RAND() * 100000) AS INT) % 30000) + 43659;
     PRINT @OrderID

     BEGIN TRANSACTION

           UPDATE Sales.SalesOrderDetail
                SET UnitPrice = UnitPrice
           WHERE SalesOrderID = @OrderID

           ; WITH C AS (
                SELECT (Quantity * ActualCost) AS LineTotal, PRODUCTID, TransactionDate
                FROM Production.TransactionHistory
                UNION
                SELECT (Quantity * ActualCost), PRODUCTID, TransactionDate
                FROM Production.TransactionHistoryArchive
                UNION
                SELECT (UnitPrice * OrderQty), SOD.ProductID, SOH.OrderDate 
                FROM Sales.SalesOrderDetail AS SOD
                INNER JOIN Sales.SalesOrderHeader AS SOH
                ON SOH.SalesOrderID = SOD.SalesOrderID
           )
           SELECT 
                C.ProductID,
                YEAR(TransactionDate),
                SUM(LineTotal)  
           FROM C
           GROUP BY GROUPING SETS (ProductID, YEAR(TransactionDate), (ProductID, YEAR(TransactionDate)), ())

     COMMIT TRANSACTION
GO

Luciano Caixeta Moreira - {Luti}
luciano.moreira@srnimbus.com.br
www.twitter.com/luticm
www.srnimbus.com.br

quinta-feira, 31 de março de 2016

SQL Server Developer Edition - for free

 Excelente notícia! SQL Server Developer Edition agora é grátis. Veja o anúncio da Microsoft na íntegra: https://blogs.technet.microsoft.com/dataplatforminsider/2016/03/31/microsoft-sql-server-developer-edition-is-now-free/

Ele vem junto com um conjunto de ferramentas disponíveis no Visual Studio Dev Essentials (http://www.visualstudio.com/products/visual-studio-dev-essentials-vs). Que tem até um crédito para brincar com o Azure (nada demais, mas é algo legal para quem nunca brincou com o Azure!).

Além disso tem muita novidade rolando no Build 2016. Se quiser acompanhar o que anda acontecendo por lá, não deixe de dar uma olhada no Channel9: https://channel9.msdn.com/Events/Build/2016.

É meu amigo, cada dia que passa temos menos desculpas para não nos reinventarmos...

Abraços

Luciano Caixeta Moreira - {Luti}
luciano.moreira@srnimbus.com.br
www.twitter.com/luticm
www.srnimbus.com.br

quarta-feira, 16 de março de 2016

TODOS os treinamentos da Nimbus com preço promocional

Durante o fim de semana, talvez incentivado por um espírito de mudança, resolvi fazer algo diferente na Nimbus. Conversei com os outros instrutores, que se mostraram abertos à seguinte ideia…

Todos os treinamentos da Nimbus que já estão anunciados, serão comercializados por R$ 1.500,00 (originalmente os valores estavam entre R$ 2.250,00 e R$ 2.750,00) - http://www.srnimbus.com.br/calendario/turmas/turmas-sql/

Alguns aspectos que nos motivaram a fazer isso:

    • Recorrentemente estou vendo um número grande de pessoas em fóruns, postando frases como "em busca de recolocação no mercado", "procurando trabalho", etc.
        ○ Este é um público que, com a escassez de vagas atualmente, pode se beneficiar de um valor diferenciado.
    • O país está em crise e em geral as famílias estão apertando o orçamento, o que faz com que muitos deixem de se capacitar (o que é um erro, às vezes necessário!) ou aceitem qualquer centro de treinamento, que com frequência acaba contratando instrutores inexperientes e disseminando um conteúdo básico, só para conseguir "fechar a conta".
        ○ Com isso o retorno do SEU investimento é baixo, porém com o conteúdo já entregue muitas vezes você acaba por aceitar o mediano ou medíocre.
    • Sempre foi meu objetivo criar os mais avançados e melhores treinamentos de SQL Server do país, algo que sinceramente acredito que conseguimos, com o apoio de profissionais diferenciados.
        ○ Porém queremos atingir (ou "iluminar") o maior número de pessoas possível, o que nem sempre é viável, seja por agenda, por estar em outra cidade, pela situação financeira, etc.
    • Por último e não menos importante, por conta da agenda dos instrutores, que anda bastante tumultuada por conta de outras atividades, e por outros fatores pessoais (no meu caso), neste momento não existe previsão para anunciarmos mais treinamentos no ano de 2016!

Levando todos esses fatores em conta, achamos por bem colocar no ar este grande incentivo! Como instrutores, o que queremos é uma sala com muita gente interessada, nos metralhando de perguntas, e saindo do curso pensando: "Nossa, eu achei que conhecia o SQL Server…".

Com nossa orientação os profissionais que trabalham com o SQL Server poderão sair do básico e avançar mais rapidamente na jornada para se tornar um DBA sênior ou consultor.

Espero que esse seja o empurrão que faltava para você participar em um de nossos treinamentos. Se não for neste ano,  quem sabe em 2017 ou em outro ano, quando abrirmos mais turmas…

Um forte abraço,

Luciano Caixeta Moreira - {Luti}
luciano.moreira@srnimbus.com.br
www.twitter.com/luticm
www.srnimbus.com.br

terça-feira, 8 de março de 2016

SQL Server on Linux


A essa altura do campeonato você já deve estar sabendo do anúncio que a Microsoft fez no dia 07/03/2016 (ontem): https://blogs.microsoft.com/blog/2016/03/07/announcing-sql-server-on-linux/

Sim, SQL Server rodando em Linux.

Um assunto que pegou até MVPs de Data Plataform desprevenidos, pois muitos não tinham ideia de que isso poderia acontecer. E mesmo com inúmera incógnitas, não posso deixar passar em branco o assunto sem um post.

Eu estou ANIMADO com o anúncio e vou expor meus motivos, porém primeiro vou listar o que nós não sabemos (nem mesmo os MVPs de SQL Server):

  • Quais serão as funcionalidades suportas pelo produto. Será todo o core da engine relacional? Integration Services?
    • Hekaton, Columnstore, e outras funcionalidades que estão brilhando, estarão incluídas?
  • Teremos Enterprise, Standard e todas as outras edições?
  • Os releases serão sincronizados ou podemos esperar uma defasagem de funcionalidade entre SQL Server do Windows e Linux?
  • Como será o SQL Server Agent? Controlaremos nossos jobs pela cron?
  • Quais serão as distribuições de Linux suportadas? Suse?
  • Suportaremos quais file systems? Ext3, ext4, reiserFS, XFS?
  • Quais serão as ferramentas? Vamos ter o SSMS on Linux? Visual Code será suficiente? Vamos usar IDEs como Eclipse?
  • Haverá interoperabilidade entre plataformas? Isto é, um backup de um banco no Linux pode ser restaurado em um SQL Server rodando no Windows?
  • Teremos 100% de compatibilidade no T-SQL?
  • Como fica integração com o CLR?
  • Diferente do Windows, onde o SQL Server não alterada nada no kernel do SO, será que teremos compilações de kernel específicas para o SQL Server?
  • Vão abrir o código fonte do SQL Server? (Aqui eu aposto contra…)

O que nós sabemos:


Ficou claro que a listagem de dúvidas é muito maior que a de certezas, o que não deixa o assunto menos interessante.

O que é mais legal e me deixa motivado, é que teremos a possibilidade de acompanhar o SQL Server em uma nova jornada, podendo analisar e aprender com os acertos e erros da Microsoft e seus desenvolvedores. Então elucubro sobre alguns pontos…

  1. Fica evidente mesmo para os mais míopes, o que já sabemos: “Data is the core asset now.” Mr. Nadella said.
  2. Linux é um grande sistema operacional e com um market share significativo. Estar presente nele representa uma oportunidade para a Microsoft e, claro, para todos os DBAs SQL Server.
    1. O que não significa que o SQL Server irá se comportar melhor.
  3. As empresas poderão optar por ter um excelente banco de dados (veja prosa abaixo) mesmo que esteja com seus servidores rodando Linux.
    1. O poder de escolha é importante para o negócio, e caso a Microsoft garanta compatibilidade do T-SQL e boa integração entre plataformas, a migração Windows -> Linux pode ser facilitada.
  4. Será possível fazer comparações efetivas de desempenho entre o SQL Server e outras engines rodando com mesmo sistema operacional e hardware.
    1. Só isso já vale o ingresso, a comparação efetiva de engines ou funcionalidades específicas, sem ficar com discursinho de que se fosse no Linux o resultado seria outro.
  5. Muitos DBAs SQL Server vão ter que aprender Linux e isso fará com que eles estudem e comparem as plataformas. Saber as diferenças e como explorar os pontos fortes de cada sistema operacional vai te deixar um melhor profissional.
    1. O que não significa que será melhor ou mais fácil… Por exemplo: deixe de agendar seus jobs com o SQL Server Agent e passe a usar a cron. Ou melhor, tente criar no Linux um monitor de desempenho como faz no Perfmon, cruzando dados de sistema operacional (memória, processos, processadores, I/O, rede), com contadores do SQL Server (access methods, buffer manager, SQL Statistics).
  6. Poderemos observar a qualidade do código produzido pela Microsoft para suportar diferentes sistemas operacionais. Será que ela fará melhor ou vou encontrar listas gigantescas de correções como eu vejo no DB2 LUW?

Prosa SQL Server, Oracle, DB2, PostgreSQL, …

Relembrando: Essa prosa vem de um geek que estudou por muito tempo o SQL Server, administrou por quase 2 anos e meio o DB2 LUW com Suse Linux, foi massacrado com informações sobre o Oracle no treinamento do Portilho e agora eventualmente investe uns minutinhos lendo coisas a sobre o PostgreSQL. Isto é, com certeza escrevo muita besteira…

Hoje temos o DB2 e Oracle com mais funcionalidades que o SQL Server, algumas sensacionais que eu gostaria de ver no SQL Server, além da possibilidade de fazer ajustes finos em diversas configurações (mesmo que quase ninguém o faça). Já no SQL Server eu vejo uma engine mais concisa e muito eficiente, e um produto que está se adaptando mais rápido às inovações/pesquisas de banco de dados (talvez por não ter que manter diferentes SOs), o que pode ser um diferencial nos próximos anos.

Vejo na nova direção da Microsoft, abraçando o Linux e open source, a possibilidade de muitos de nós sair de um casulo dentro de uma plataforma (como eu vivi por muitos anos!!) e até de abraçarmos modelos diferentes. Quem sabe no futuro veremos menos gastos com uma cadeia gigantesca de vendedores, minimizando o custo do licenciamento, melhorando o serviço de suporte e focando no que realmente importa: a qualidade dos produtos e resolver os problemas dos clientes. Seria muito bom ter que parar de desmentir histórias que alguns vendedores contam…

Já disse isso para vários clientes (inclusive um bem recente) que para a grande maioria dos ambientes transacionais, não importa se o seu banco é Oracle, SQL Server, DB2 ou PostgreSQL (que tem recebido muitos elogios e acho que merece ser acompanhado de perto), o que importa muito mais é como fazemos a adoção da tecnologia e se estamos utilizando-a de forma efetiva.

Por fim, espero sinceramente que o maior benefício seja produzirmos comparações de qualidade, discussões inteligentes e que isso traga maior maturidade para TODOS os profissionais que trabalham com banco de dados. A aproximação da Microsoft com o Linux deve fazer com que DBAs SQL Server se aproximem de outras engines e também trazer DBAs Oracle/DB2/PostgreSQL para explorar um pouco do SQL Server, quebrando mitos e preconceitos.

Quero poder discutir e testar se o completely fair scheduler (https://en.wikipedia.org/wiki/Completely_Fair_Scheduler) é realmente ruim para máquinas com banco de dados que não adotam um modelo cooperativo de escalonamento (como eu acredito ser). Quero poder falar sobre configurações do SO (ex.: swapiness, huge pages), ou se a implementação do Vectored I/O (https://en.wikipedia.org/wiki/Vectored_I/O) no Linux realmente não é a ideal (como eu já soube), tudo isso sem esbarrar na barreira de minha versus sua plataforma de banco de dados ou sistema operacional.  

Mas tem uma coisa que continuará igual: os manés xiitas sempre existirão.

Isso não mudará, infelizmente teremos manés em todas as plataformas. Vou continuar observando calado um DBA de outro SGBDR dizendo que eu, DBA SQL Server, não sei administrar banco de dados sem mouse, notando em seguida que o infeliz não tem a menor ideia do funcionamento de um banco de dados (pela minha observação, os xiitas tendem a ser os mais leigos). E mesmo sabendo que em dois ou três meses estudando o SGBDR muitos profissionais seriam melhores do que ele, continuarei calado. Para esses xiitas, que por desconhecimento de outra tecnologia, continuam a arrotar besteiras colossais e se sentindo maiorais, meu total desprezo.


Estamos vivendo tempos excitantes no mundo dos bancos de dados e essa mudança dentro da Microsoft e com o SQL Server eu quero assistir de camarote. Pode ser que ninguém adote o "novo" produto, pode ser que o desenvolvimento falhe espetacularmente e venha com muitos bugs ou péssimo desempenho, ou que as ferramentas não sejam tão interessantes como as que temos hoje. Ou pode ser que o SQLOS ofereça uma abstração fantástica e o produto se adapte muito bem em um novo SO, deixando muita gente de queixo caído. Seja qual for o resultado desse movimento, com certeza ele trará muito aprendizado.

De quebra, quem sabe um dia não teremos um treinamento Mastering SQL Server on Linux na Sr. Nimbus, irmão do já conhecido Mastering http://www.srnimbus.com.br/sql23/.

Quer acompanhar de perto também? Se cadastre no preview e acompanhe o evento Data Driven que acontecerá no dia 10 de março, onde provavelmente vão falar sobre o assunto.


Se estiver com tempo e quiser analisar por outras fontes como está sendo recebida a notícia, alguns links:



Ah, Kevin Farlee colocou essa imagem no twitter… Esse não acredito ser fake, como muitos outros que já vi. :-)




====================== UPDATE ======================

Brent Ozar traz para a mesa mais outros questionamentos, que podem ser tão importantes quanto a qualidade do produto desenvolvido. Recomendo a leitura: https://www.brentozar.com/archive/2016/03/microsoft-sql-server-coming-linux

Seria legal também ouvir comentários de profissionais Oracle, DB2, Postgres… E aí, acham que isso vai vingar? Tem curiosidade com o que está por vir ou não vai fazer a menor diferença no mercado?

Abraços

Luciano Caixeta Moreira - {Luti}
luciano.moreira@srnimbus.com.br
www.twitter.com/luticm
www.srnimbus.com.br

sexta-feira, 4 de setembro de 2015

Nível de isolamento e sp_reset_connection

Ajudando um cliente encontrei um comportamento do ADO.NET que eu desconhecia e, sinceramente, acredito que todos que trabalham com ADO.NET deveriam saber.

Cenário: uma mudança no EF 6.1 fez com que este cliente mudasse a aplicação e chamasse explicitamente a instrução SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ao instanciar o DBContext.
O problema surgiu quando a aplicação começa a abrir/utilizar/fechar as conexões, e o nível de isolamento READ UNCOMITTED é mantido.

Minha reação inicial: o ADO.NET não está chamando o sp_reset_connection ao reutilizar a conexão do pool, então pode ser um problema na configuração do pool de conexões.

Ao pesquisar sobre a configuração do pool de conexões me deparei com o comportamento que não conhecia: a sp_reset_connection não redefine o nível de isolamento.

Referências:


O item do Connect foi fechado como by design.

Então suponha o seguinte, você uma aplicação que funciona perfeitamente bem. Um novo módulo é desenvolvido e para uma interface específica você define o nível de isolamento READ UNCOMMITTED ou SERIALIZABLE, quando essa conexão é devolvida para o pool, uma outra classe da sua aplicação pode pegar essa conexão e trabalhar com um nível de isolamento inadequado, causando efeitos colaterais inesperados na aplicação. Nada bom.

Se você é desenvolvedor .NET e já trabalha com o ADO.NET provavelmente já sabe disso, mas achei importante registrar aqui para referência futura.

The devil is in the details…

Quer fazer o teste você mesmo?
Utilize os scripts abaixo para:

1. Criar o banco de dados e deixar uma transação aberta
2. Executar uma aplicação console em C# com pool de conexão habilitado
a. A segunda execução não vai ficar bloqueada (comportamento READ UNCOMMITTED)
3. Executar uma aplicação console em C# com pool de conexão desabilitado
a. A segunda execução vai ficar bloqueada (comportamento READ COMMITTED)

Você pode brincar com o profiler e DMVs para monitorar o comportamento das sessões.

1 - Scripts para testar comportamento (SSMS e VS)

USE master
go

CREATE DATABASE IsolationLevel
go

USE IsolationLevel
go

IF (OBJECT_ID('dbo.TabelaBase') IS NOT NULL)
DROP TABLE dbo.TabelaBase
go

CREATE TABLE dbo.TabelaBase
(Codigo INT IDENTITY NOT NULL PRIMARY KEY,
 Nome VARCHAR(100) NOT NULL,
 DataHora DATETIME2 NOT NULL DEFAULT SYSDATETIME())
GO

INSERT INTO DBO.TabelaBase (Nome) VALUES ('Sr. Nimbus')
INSERT INTO DBO.TabelaBase (Nome) VALUES ('SQL Server')
INSERT INTO DBO.TabelaBase (Nome) VALUES ('ADO.NET')
GO

-- Monitorar as sessões
-- 1 = read uncommitted
-- 2 = read committed
SELECT session_id, transaction_isolation_level, * 
FROM sys.dm_exec_sessions 
WHERE program_name = '.Net SqlClient Data Provider'


BEGIN TRANSACTION
UPDATE dbo.TabelaBase SET Nome = 'Luti @ Sr. Nimbus' WHERE Codigo = 1
SELECT @@TRANCOUNT





static void Main(string[] args)
{

    SqlConnection con = new SqlConnection("Server=LUTIXPS;Database=IsolationLevel;UID=sa;PWD=.sql2014.;");
    // SqlConnection con = new SqlConnection("Server=LUTIXPS;Database=IsolationLevel;UID=sa;PWD=.sql2014.;Pooling=false;");            
    SqlCommand com = new SqlCommand("SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED", con);
    con.Open();
    com.ExecuteNonQuery();

    com.CommandText = "SELECT * FROM dbo.TabelaBase";
    SqlDataReader dr = com.ExecuteReader();
    while(dr.Read())
    {
        Console.WriteLine(dr["Nome"].ToString());
    }                        
    con.Close();

    // novamente...
    con.Open();
    dr = com.ExecuteReader();

    while (dr.Read())
    {
        Console.WriteLine(dr["Nome"].ToString());
    }

    con.Close();
}


Abraços

Luciano Caixeta Moreira - {Luti}
luciano.moreira@srnimbus.com.br
www.twitter.com/luticm
www.srnimbus.com.br

quinta-feira, 30 de julho de 2015

Non-foldable expressions e o QO

Post rápido.
Estou executando um pequeno benchmark para um cliente, avaliando se uma mudança na modelagem vai trazer benefícios para a aplicação, quando me deparo com um problema interessante. Conversando com o Fabiano ele citou non-foldable expressions, a causa raiz da questão.

Resumindo, quando o QO encontra non-foldable expressions ele não utiliza a densidade ou o histograma para estimar o número de registros, então ele chuta que um percentual dos registros será retornado (10% no meu caso).

Qual o problema disso? Mesmo com um índice em uma coluna com boa seletividade, acabo por ver cluster index scans e planos bem ruins.

Me parece que seria mais interessante o QO usar a densidade no caso de igualdade com non-foldable expression, mas com certeza devem haver cenários onde isso acaba por trazer resultados ruins.

Quer testar? Abaixo está o código que eu gerei para simular o problema utilizando o AdventureWorks2012.
Aproveite e teste o código no SQL Server 2014 e veja a diferença…

E não deixe de testar a última consulta do script e analisar a estimativa do QO. #fun


/****************************************************************************************
*****************************************************************************************

Autor: Luciano Caixeta Moreira
E-mail: luciano.moreira@srnimbus.com.br
LinkedIn: http://www.linkedin.com/in/luticm
Blog: http://luticm.blogspot.com
Twitter: @luticm

Título: non-foldable expression and bad plans
Descrição: 

Histórico de atualização (yyyy-mm-dd):
- 2015-07-30: Criação do script


*   Copyright (C) 2015 Sr. Nimbus Prestação de Serviços em Tecnologia LTDA
*   http://www.srnimbus.com.br

*****************************************************************************************
****************************************************************************************/

USE tempdb
GO

SELECT *
INTO tempdb.dbo.TestePredicado
FROM AdventureWorks2012.Sales.SalesOrderDetail

CREATE UNIQUE CLUSTERED INDEX idx01
ON dbo.TestePredicado (SalesOrderDetailID)
go

CREATE NONCLUSTERED INDEX idx02
ON dbo.TestePredicado (SalesOrderID)
GO

EXEC sp_helpindex 'TestePredicado'

DBCC SHOW_STATISTICS('dbo.TestePredicado', idx02)
GO

-- Usa o histograma, conforme esperado, e estima 1 registro.
SELECT *
FROM dbo.TestePredicado
WHERE salesorderid = 46040
GO

-- Vetor de densidade
-- 3.178134435086604e-5 * 121317 = 3.855617352614016
DECLARE @X INT
SET @X = 46040

SELECT *
FROM dbo.TestePredicado
WHERE salesorderid = @X
GO

-- Utiliza a densidade
SELECT *
FROM dbo.TestePredicado
WHERE salesorderid = CAST(RAND() * 10000 AS INT)
GO

-- Estimated number of rows: 12131.7 => 10%
-- Plano ruim, scan (10% estimate) + filter
SELECT *
FROM dbo.TestePredicado
WHERE salesorderid = CAST(CAST(NEWID() AS binary(6)) % 20000000 AS INT)
GO

-- Ok, densidade
SELECT *
FROM dbo.TestePredicado
WHERE salesorderid = DATEPART(YEAR,GETDATE()) 
GO

-- Para resolver o problema...
DECLARE @X INT
SET @X = CAST(CAST(NEWID() AS binary(6)) % 20000000 AS INT)

SELECT *
FROM dbo.TestePredicado
WHERE salesorderid = @X
GO

/*
In a larger and more complex query on a larger data set, this type of error can result 
in bad plan selection. If this is a problem for your application, consider using a 
technique like the one illustrated above. Use sp_executesql or a stored procedure 
containing the problem query, and pass in the precomputed result of the non-foldable 
expression as a parameter. 
This will allow you to work around the problem and get good cardinality estimates.

https://technet.microsoft.com/en-us/library/cc966419.aspx
*/

-- Estimativa OK
WITH C AS (
SELECT TOP 100
CAST(RAND() * 10000 AS INT) AS IDVenda
FROM sys.columns
)
SELECT *
FROM dbo.TestePredicado AS T
INNER JOIN C
ON T.SalesOrderID = C.IDVenda

-- Estimativa ficou ótima (!!!??!!!?!!), considerou um cross join...
WITH C AS (
SELECT TOP 100
CAST(CAST(NEWID() AS binary(6)) % 20000 AS INT) AS IDVenda
FROM sys.columns
)
SELECT *
FROM dbo.TestePredicado AS T
INNER JOIN C

ON T.SalesOrderID = C.IDVenda


Abraços

Luciano Caixeta Moreira - {Luti}
luciano.moreira@srnimbus.com.br
www.twitter.com/luticm
www.srnimbus.com.br

quarta-feira, 1 de julho de 2015

SQL Server MVP 6.0

01 de Julho de 2015, mais um ano renovado como Microsoft Most Valuable Professional (MVP) na especialidade SQL Server. Curiosamente ontem foi meu último dia no Sicoob, uma coincidência legal, pois junto com o ânimo das mudanças e meu retorno full-time para a Nimbus, aproveito também para comemorar o MVP 6.0!



Espero contribuir ainda mais com a comunidade técnica de SQL Server e poder ajudar profissionais do mundo todo. E obrigado a todos que leem este blog e as tranqueiras que eu escrevo.

De quebra, junto com a mudança eu aproveitei e dei uma repaginada no escritório, inclusive sei que vou aproveitar para ler alguns livros atrasados e revisitar outros. Abaixo porque evito comprar muitos mais livros impressos… Isso que ainda estão alguns outros e essa é só a estante técnica. :-)






Abraços

Luciano Caixeta Moreira - {Luti}
luciano.moreira@srnimbus.com.br
www.twitter.com/luticm
www.srnimbus.com.br

sexta-feira, 3 de outubro de 2014

Sessões no PASS Summit 2014

Ontem eu montei minha agenda para o PASS Summit 2014, que acontecerá em novembro, na nossa queria Seattle. Na verdade a minha semana será bem cheia, pois em seis dias participarei do MVP Summit e do PASS Summit, então pense em sessões com muito deep dive técnico. Vai ser bbeeemm cansativo, mas excelente para qualquer sqlgeek!

Um ponto interessante deste ano é a quantidade de brasileiros vão ao evento. Muita gente mesmo, são os Brazucas invadindo Seattle! Se você está nessa condição não deixe de nos avisar, pois temos um grupo no facebook e dicas (já escrevi parte de um post) para todos.

Como não posso deixar de destacar, vejam algumas sessões do PASS deste ano... J

[DBA-502] Advanced Data Recovery Techniques – Paul Randal
[DBA-500-HD] Inside SQL Server I/O – Bob Ward
[DBA-501-HD] Locking Internals Deep Dive – Bradley Ball
[DBA-403] High Performance Infrastructure for SQL Server 2014 - Michael Frandsen

Gostou? Então já vai fazendo sua reserva financeira para o PASS do próximo ano.

Abraços,

sr. Nimbus Serviços em Tecnologia - www.srnimbus.com.br

terça-feira, 18 de março de 2014

PASS Summit para Brazucas

OBS: já comprei minha passagem e estarei no PASS Summit 2014!

Atendendo pedidos escrevo esse post, que espero que esse seja um living post, com diversas atualizações e dicas para Brasileiros que irão ao PASS Summit em Seattle, pois é um lugar que conheço razoavelmente bem...
·         PASS Summit 2013: http://www.sqlpass.org/summit/2013/Sessions.aspx
·         PASS Summit 2014: http://www.sqlpass.org/summit/2014/RegisterNow.aspx
·         Meus posts do PASS Summit 2012:
A viagem
Seattle não fica ali na esquina, então se prepare para uma viagem cansativa. A menos que você pegue alguma promoção eu espero que gaste entre R$ 2.500,00 e R$ 3.500,00 na passagem aérea, se tiver milhas para gastar, melhor. O aeroporto que você quer é Seattle Tacoma International Airport (Sigla: SEA - http://www.portseattle.org/Sea-Tac/Pages/default.aspx).
Para quem sai de Brasília a Delta oferece os melhores trechos, sendo o melhor BSB – Atlanta – Seattle (média de 17 horas de viagem). Vale ressaltar que o trecho dentro dos EUA é longo, com mais que 4 horas, e as refeições usualmente pagas. Então aproveito os minutos no aeroporto de entrada nos EUA para comprar alguma coisa para comer e já faço um teste com o cartão de crédito, para ver se foi liberado para uso no exterior.
Outra coisa que gosto de fazer é sair na sexta-feira de noite e chegar sábado de manhã em Seattle, assim eu aproveito o fim de semana antes do evento. Costumo voltar no voo de sábado, para chegar domingo cedo no Brasil, curtir a família e descansar para a segunda-feira.
O evento
O Summit tem 3 dias de duração com sessões diversas, precedido por 2 dias de pre-con (pagos à parte, US$ 495 cada). Idealmente você compra seu ingresso com bastante antecedência (se comprar até o fim desse ano o Summit de 2015 o desconto é muito bom!) e também as pre-sessions, que costumam ter de altíssimo nível. Não deixe de comprar o DVD Set com as gravações do evento, que para participantes costuma sair por US$ 195,00 e muito legal, pois usualmente existe colisão de horário entre grandes sessões.
O evento acontece no centro de convenções da cidade, o Washington State Conference Center (http://www.wscc.com/), que é um lugar grande, bem localizado e que acomoda muito bem um evento desse porte.
Caso você não vá participar da pre-con, pode procurar outros eventos, com o SQLSaturday que costuma acontecer nas redondezas de Seattle ou SQL in the City da RedGate (http://sqlinthecity.red-gate.com/), que torço para acontecer neste ano.
Dicas para aproveitar ao máximo o evento
TODO
Carro
Durante o evento é besteira você ficar com o carro, a menos que queria sair de noite para lugares mais longes, porém no centro de Seattle tem muita coisa legal para fazer, então minha recomendação é para pegar um carro antes ou depois do evento. Aí você deve considerar se o seu hotel tem incluso estacionamento, pois alguns cobram uma taxa (ex.: US$ 15) pela diária do estacionamento.
Outra dica é ficar atendo a lugares onde se pode estacionar e horários permitidos, pois é normal ficarmos sabendo de história onde amigos tomaram multa. Eu nunca tomei, mas bastou empresar um dia o carro que tomaram uma por mim! Hehehehe
Como o aluguel da semana é relativamente barato, muitos acabam optando por ficar a semana inteira com o carro. Se você optar por isso, ao invés de pagar a diária do GPS, por um pouco mais você compra um GPS novo e fica com ele para você.
Hospedagem
Ao lado do evento existem hotéis excelentes, como o Sheraton, Hilton, Crowne, Westin e W hotel, todos muito bons, mas um pouco salgado ($$$).
No meu caso eu costumo ficar nos hotéis pertos do Space Needle, que tem um bom custo benefício e são relativamente perto do centro de convenções (8 a 10 quarteirões – 15 a 20 minutos de caminhada). Alguns deles (busque por “<nomedoHotel> by the space needle”):
·         Travelodge: http://www.travelodgeseattlecenter.com/
Além do estacionamento duas outras coisas que sempre checo é o café da manhã e política de entrega de pacotes, pois alguns hotéis cobram para guardar e entregar suas encomendas.
Clima
TODO
Compras
Esse aqui Brasileiro curte:
·         Eletrônicos: Bestbuy que nada, eu gosto de ir à Frys, que é uma loja de eletrônicos imensa que tem perto do aeroporto de Seattle (SEA-TAC) - http://www.frys.com/.
·         Seattle Premium Outlet: aaaaahhhh, outlets, ruim né? O de Seattle fica longe da cidade, então recomendo ir de carro.
o   Faça seu cadastro no site, imprima as promoções e pegue o cupom book, que dá bons descontos no outlet.
·         Toys r’us e Baby r’us: para quem tem filho é parada obrigatória e existem lojas espalhadas ao redor de Seattle.
Não vou esticar aqui mais lojas, se quiserem mais dicas peçam.
O que visitar e conhecer
TODO – Provavelmente a parte mais longa deste post

Abraços
sr. Nimbus Serviços em Tecnologia - www.srnimbus.com.br