Diferenças entre Instância Padrão x Instância Nomeada

Olá,

Mais um fast-post (postagem rapidona, tradução livre) pra ilustrar um cenário bem comum para quem usa SQL Server eventualmente: o conceito de instâncias nomeadas e instâncias padrão (default). Peço que tenham paciência pois irei partir do começo, e quando digo “começo”, eu falo da parte de instalação do SQL Server.

O processo de instalação é relativamente simples (quer aprender como faz utilizando as melhores práticas?) e não será detalhado aqui. Recomendo este vídeo no MVA especialmente pois ilustra uma instalação completa.

A tela que define a configuração de sua instância é essa aqui:

Padrão ou nomeada?

Assumo que você já conhece o conceito de instância do SQL Server e por isso vamos abordar três tópicos:

  •  Instância padrão
  • Instância nomeada
  • SQL Server Express

Instância padrão

A lei suprema do universo é que, em determinada máquina, só pode ter uma e apenas uma (e apenas uma e apenas uma e apenas u…) instância padrão (Default Instance). Jamais, em hipótese alguma, você poderá ter mais de uma instância padrão na mesma máquina, mesmo se você instalar várias instâncias de versões do SQL Server diferentes.

Por exemplo, se você instalou uma instância padrão do SQL Server 2008 R2 em sua máquina, e deseja instalar uma instância do SQL Server 2012 pra testes, você não pode instalar uma instância padrão, a mesma PRECISA ser nomeada.

Depois de instalado, se o serviço do SQL Server estiver online (pode ser conferido no SQL Server Configuration Manager ou em services.msc do Windows), como logamos?

Assim:

Opções para logar em uma instância padrão:

  • (local) – Como ilustrado na imagem acima;
  • . – Também conhecido como ponto.  Puro unix-pattern 🙂
  • NOMEDASUAMAQUINA – A sua máquina só pode possuir uma instância padrão, logo,
  • MSSQLSERVER – Aponta também para a instância padrão. Note que no ato da instalação, quando se seleciona default, esse é o nome que aparece (Instância padrão) .

Instância nomeada

Enquanto você só pode ter uma instância padrão em uma máquina, poderá ter N instâncias nomeadas. Olha como é criada uma instância nomeada:

nomeada

E como logamos em uma instância nomeada?

Instância nomeada

Ou seja: NomeDaMaquina\NomeInstancia

E o que tem haver o SQL Server Express?

É o campeão em frustar recém-chegados ao SQL Server 🙂

O motivo é a edição EXPRESS, que é bastante baixada seja por desenvolvedores ou para quem está pegando o jeito com o SQL Server, obrigatoriamente é nomeada.

E como logar? Usando um dos  nomes abaixo:

  • NomeDaSuaMaquina\SQLEXPRESS;
  • .\SQLEXPRESS

Porque achei interessante mencionar o SQL Express? Porque um amigo meu topou com essa dificuldade e talvez outra pessoa também tope.

E qual a diferença entre instâncias padrão e nomeada?

Basicamente configurações de conectividade (leia-se: nome do servidor e porta).

Porta pode se tornar um fator problemático  (sem devido conhecimento) se você estiver conectando em uma instância nomeada e o SQL Server Browser não está habilitado nela. Mas isso é assunto pra outro post 🙂

Referência: http://technet.microsoft.com/en-us/library/ms165614(v=sql.90).aspx

 

[]’s

 

Roles do SQL Server – Diskadmin e Processadmin

hard-drive-inside

 

 

 

 

 

 

 

 

 

 

 

Olá.

Depois de algum tempo sem postar (falta de tempo mas por motivos profissionais, graças à Deus) aqui estamos. Pra abreviar um pouco a série sobre as roles de servidor, não seguirei a mesma linha dos posts anteriores se não for extremamente necessário.

Vamos falar um pouco agora sobre duas roles em específico (até porque não temos muito o que falar sobre: DiskAdmin e ProcessAdmin)

Diskadmin

Administra dispositivos de backup (obs: dispositivos, não o backup). Hoje em dia, esta role foi pro museu. Um motivo forte pra isso é caiu no desuso o uso de dispositivos para backup em fita (antigamente era comum fazer backup diretamente na fita, e hoje, é algo raro, pois, o desempenho de uma fita é ligeiramente inferior à backup no disco.

Funcionalidades:

  • sp_addumpdevice/sp_dropdevice = Adiciona/deleta um dispositivo de backup novo  à instância.
  • sp_diskdefault  e DISK INIT = Deprecated desde o SQL Server 2000. Fora do escopo (adorei essa frase).
  • Add member to diskadmin = Milagre da multiplicação, o famoso “passa a corrente pra frente”, etc. Dispensa explicações se você está acompanhando a série do começo =)

É interessante notar que um Disdkadmin não equivale a um backup operator ou algo do tipo (fazendo aqui referência à outros SGBD’s) pois por padrão, ele não possui direito de backup, a menos que seja dado tal direito explicitamente por outras formas.  Isso é um tanto quanto engraçado, poder gerenciar pra onde o backup vai mas não poder fazer backup. É muita falta de moral (risos).

ProcessAdmin

Possui o poder de matar conexões. Mas não só isso. Literalmente, ele é um administrador de processos, logo, com certeza, consegue enxergar todos eles. Em suma, ele consegue verificar todas as conexões da instância de várias formas, como por exemplo: a procedure sp_who2 e a dmv dm_exec_connections.

Funcionalidades:

  • Add member to processadmin = Milagre da multiplicação…
  • KILL = Possibilita utilizar o comando KILL, que encerra uma conexão. Leia-se: pode desconectar quem quiser.

Apesar de parecer pouca coisa, tal role possui um poder de fogo considerável. Matar conexões é um tanto quanto perigoso e pode trazer problemas se tal permissão for concedida à pessoas inexperientes/mal-intencionadas.

Geralmente quem tem o poder de matar conexões é um sa (sysadmin), então, é muito mais interessante deixar tal tarefa para algum membro desta role do que “granular” o fato de administrar conexões com o ProcessAdmin.

 —-

Em breve, continuo o post sobre as server roles. Obrigado pela leitura e sinta-se à vontade para comentar.

Roles do SQL Server – Dbcreator

DBCREATOR

Mais um post da série SQL Server Vida e Obra   , dessa vez sobre uma role bem peculiar: dbcreator, também conhecido como filho do sa. Cuidado com essa permissão, beleza?

O que é o DBCREATOR?

A documentação oficial da Microsoft (meio datada, mas ainda vale), diz:

Members of the dbcreator fixed server role can create databases, and can alter and restore their own databases.

Em português simples traduzido no popular:

Membros da função fixa dbcreator podem criar bases de dados, e podem alterar e restaurar suas próprias bases

Bem, vamos explorar um pouco e mostrar que a role vai um pouco além do que o nome sugere (criar bases)…O que pode ser uma benção e uma maldição, dependendo do ambiente.

Aplicação

É uma conta com permissões importantíssimas. O primeiro ponto a ser observado é que um dbcreator possui permissão para criar, alterar e dropar qualquer banco, até os que não é de sua criação (sentiu o perigo?) assim como pode utilizar o comando RESTORE tanto pra banco quanto pra LOG (este porém restrito às suas bases e/ou com as permissões adequadas. Tal assunto será abordado futuramente com maiores detalhes).

Testes

Primeiramente vamos verificar as permissões que a role possui:

Listando (os riscados não serão abordados neste post.):

– Add member to dbcreator (também conhecido como milagre da multiplicação)
– ALTER DATABASE
– CREATE DATABASE
– DROP DATABASE
– Extend database (Alterar o tamanho de um arquivo da base)
– RESTORE DATABASE
– RESTORE LOG
– sp_renamedb  (Procedure que renomeia o banco)

Bem, vamos começar oficialmente com os testes….

1) Criação do login

Agora logue como DbaCriador no Management Studio (ou da forma que preferir, contanto que consiga se passar pelo login).

2) Rename e Drop

Perceba agora o quanto a role é potente no sentido de permissões:

Consegue observar o tamanho da possível encrenca? É sempre bom reforçar que, dentro de uma instância, o maior bem é o banco de dados, e sua destruição e criação são sem dúvida uma das permissões mais sagradas que um principal pode ter.

Não precisamos comentar também a habilidade de repassar a Role para outros membros, e com o poder “milagre da multiplicação” temos mais um problema: um dbcreator criando outro dbcreator!

Veja ainda logado como dbcreator:

Considerações finais

Considere essa role uma das mais próximas do sa propriamente dito (assim como a security admin). Ultimamente caiu um pouco em desuso, pois, geralmente quem tem permissão de criar bases, pelo menos nos ambientes que observei, já possuem permissão de sysadmin, logo, não possuem restrição alguma. Se realmente for necessário que um principal crie bases, existe uma abordagem muito mais esperta:

Privilégio mínimo na prática.

 

Impressões sobre o exame 70-463: Implementing a Data Warehouse with Microsoft SQL Server 2012

Nova seção de scripts!

Boa noite,

Fechando a trilogia MCSA, posto aqui minhas impressões sobre o assunto:

Opinião geral

Consegui aprovação no último exame da trilogia MCSA SQL Server 2012, que é a prova de “BI” , onde seus conhecimentos sobre ETL (principalmente) e Data Quality serão avaliados. A impressão que tive do exame, é que a MS testou um profissional que trabalha ostensivamente com SSIS, usando boa parte dos recursos disponíveis na ferramenta Data Tools. Um pouco de MDS  e DQS também, mas SSIS principalmente.

Sinceramente… Eu já li em vários lugares sobre a decisão da MS de incluir um exame de BI pra MCSA e na teoria é interessante, o profissional fica mais generalista no sentido de lidar com quase toda a plataforma SQL Server principalmente o BI da Microsoft que sofre um pouco de preconceito, mas….na prática, eu atualmente não mexo com SSIS e foi legal aprender uns truques novos (e reforçar uns velhos) mas, na boa, achei bola fora por parte da MS tirar o foco dos tios que trabalham com DEV e ADM, pra estudar como se depura um pacote, loga execuções ou configurar o DQS. O assunto é legal, mas definitivamente não devia ser obrigatório.

Opinião sobre o exame

Foram 79 questões, muitas delas cansativas pois falar de SSIS de modo textual. Teve uma quantidade boa de questões de clicar em interface, de arrastar a task correta pra criar um ETL, tais questões foram bem legais, e acredito que poderiam ter sido aplicado em maior quantidade.

Passei dificuldades por não fazer deploy de pacotes e nem logging ao longo da vida de ETL e sofri bastante com várias destas questões textuais.

Achei a prova difícil, pois o que sei de BI/ETL foi algum tempo trabalhando com o BIDS e um pouco de estudo. Inclusive passei por pouco =p

Pra material de estudo, usei o Training Kit (70-463) cobre muito bem a prova e o Introducing SQL Server 2012, a parte que fala  de DQS e de SSIS é sensacional. Esse livro me ajudou mais que o próprio Training, já que DQS é uma novidade do 2012  e tem um capítulo só pra isso e a parte de deploy de SSIS é bem explicada neste livro. Sem contar que o livro é Free, você pode conferi-lo aqui. Aliás, recomendo esse livro também pra 70-462 (cobre muito bem as novidades).

Sobre o exame

Falar um pouco sobre o que lembro (e posso passar por aqui):

Design and implement a data warehouse

As questões mais legais da prova e a única parte que fui bem, hehe:

A visão que a MS tem sobre BI é importante em várias questões de design;

Columnstore Index: Saber quantos você pode criar por tabela, suas restrições (no 2012!!!) e como criar da melhor forma (ocupando menos espaço…);

– Conceitos de Slow Changing Dimension voltando ao banco (estrutura) com SSIS (Tipos 1, 2 e 3)

– Conceito de FK na tabela Fato é cobrada em algumas questões;

Extract and transform data +  (Load Data)

Tasks que caem na prova (control e data flow): Fuzzy Lookup, Derived Column, Merge, Merge Join, Union All, Sort (atenção), Script Tasks e Expressions Tasks. Dê uma olhada que cai na certa.

– Paralelismo ao rodar pacote de carga se baseando em um modelo Snow Flake (essa questão é bem legal);

– Fluxos de erro e event handler são de importância extrema;

– Task de Container aqui vale ouro. Dê uma olhada no que ela realmente pode fazer em critérios de organização e seu uso + EventHandler;

– Surpresinha: Cai uma questão de MERGE no T-SQL. Cai também de tasks Merge, Merge ALL e Union ALL. Mas eu tô dizendo é sobre o MERGE em T-SQL mesmo.

Configure and deploy SSIS Solutions

A maioria das questões é drag in drop ou de múltipla resposta:

– Estude logging, com carinho. Todas as configurações, todas as formas possíveis de log. Inclusive usando SSIS catalog;

– O conceito de SSIS Catalog, variáveis e parâmetros é fundamental e isso é essencial pra passar na prova;

– Falando em SSIS Catalog, dê uma olhada nas views mais importantes;

– Saiba onde os pacotes .dtsx podem ser implantados (TODOS os meios de armazenamento, desde file system até SSISDB);

Build Data Quality Solutions

Parte surpresa da prova! Caiu muito sobre MDS, inclusive plugins de Excel, assim como caiu algumas questões sobre como configura-se o Data Quality Server e Client (saber os pré-requisitos é fundamental em várias questões). Saber sobre as roles do DQS é importante também.

—-

Conclusão + Offtopic

É isso. Feliz por ter passado no exame porque queria estudar ADM de novo e o ETL não tava deixando. Pensa na felicidade!  Agora, vou estudar o que gosto (e quero) e blogar um pouco mais que o normal (pois, finalmente, não estou focado em um exame em específico). Uma felicidade, também particular, foi de saber que o tempo dedicado aos estudos (e uns finais de semana com ssms) deu certo! Aprendi muita coisa desde que comecei a estudar pra certificações, e, de novo, recomendo que seu principal foco seja para aprendizado.

Next Step: MCSE, os dois exames (Design e Developing). Mas até lá, tenho outros objetivos. Tem uns livros de SQL Server aí no meio, além de muito estudo e laboratório (fora uns projetos meio doidos que eu tô tendo, talvez dê certo, só o futuro dirá). Enfim, me preparar por mais tempo o/

Roles do SQL Server – Bulkadmin

Cavaleiros

Bom dia. Continuando a série sobre Roles, atualmente falando sobre as Fixed Server Roles, vamos falar um pouco sobre o Bulk Admin. O artigo ficou um pouco extenso devido aos exemplos, que achei interessante aplicar pra fixar a informação passada.

O que é  o Bulkadmin?

O que o BOL (Books Online) diz sobre a role:

Members of the bulkadmin fixed server role can run the BULK INSERT statement.

Em português simples traduzido no popular:

Membros da função fixa bulkadmin podem executar comandos BULK INSERT

Sem muito segredo. Significa que ele pode rodar comandos BULK INSERT.

Por definição, BULK INSERT permite a inserção de arquivos que contenham dados externos ao SQL Server. Com o intuito de reforçar a segurança, o SQL Server insiste que não basta apenas ter insert na tabela, para inserir arquivos externos, é necessário ter permissão exclusiva pra tal. Aqui entra uma observação importante: ter permissão de BULK INSERT não significa que o login ciclano pode realizar inserção de arquivos externos onde quiser: ele ainda precisa da permissão de INSERT nas tabelas normalmente. No final das contas, figurativamente falando, o usuário precisa de Permissão pra Inserir + Permissão pra Inserir arquivos externos.

Aplicação

É uma permissão interessante e necessária apenas para o uso do comando BULK INSERT e mais nada. Para cargas de ETL que usam arquivos externo, por exemplo, é uma situação recorrente e que demanda o uso da permissão, geralmente para uma conta de aplicação. Fora o Bulkadmin, a única permissão que pode realizar este tipo de inserção externa é o sysadmin (que tem permissão total na instância).

Testes

Vamos ver na prática como funciona?

Primeiramente, vamos ver o que a role pode fazer:

Retorna: “O bulkadmin pode fazer BULK INSERT e  Conceder privilégio de BulkAdmin”

OBS: Os testes foram feitos em uma instância local.

1) Crie um arquivo de texto com o seguinte conteúdo:

1,BULKADMIN,Pode realizar comandos BULK INSERT
2,BULKADMIN,Pode propagar a role de BULK INSERT para outros logins

2) Salve o arquivo em C:tempcarga.txt. Esse é o tal do arquivo externo que vamos usar nos nossos testes.

3) Logue em uma instância na qual você possa testar. Use um login com permissão sysadmin para tal.

4) Vamos criar a estrutura para testes

5) Agora vamos criar os logins/usuários para as bases. Atenção aos comentários dos scripts abaixo:

Pronto! Chegamos onde queríamos chegar. Agora, vamos testar os logins! Se você tiver experiência para usar impersonação, fique a vontade para usar EXECUTE AS LOGIN. Porém, em nosso teste, vamos logar com o usuário via ssms mesmo. Alguns detalhes pra evitar ter que fazer troubleshooting:

a) Verifique se o modo de autenticação está como misto (mixed mode)

b) Verifique se o caminho do arquivo está no mesmo servidor  que a instância.

Simbora 🙂

6) Logue com o login CarinhaDoInsert via Management Studio. Execute o seguinte comando:

Primeiro insert funciona, pois ele tem permissão para tal. Mas e o bulk insert?

Uma mensagem vermelha vai emergir sobre as profundezas da engine do SQL Server, direto da sua máquina.

Msg 4834, Level 16, State 4, Line 7

You do not have permission to use the bulk load statement.

Erro extremamente óbvio. “Você não tem permissão pra usar comandos de carregamento BULK.

Agora vamos ver o outro lado da moeda… Quem realmente tem permissão.

7) Logue com o login CarinhaBulkAdmin via Management Studio. Execute o seguinte comando:

Sinta a surpresa (só que não):

Msg 229, Level 14, State 5, Line 1
The INSERT permission was denied on the object ‘Roles’, database ‘RoleTest’, schema ‘dbo’.

Ok. Mas ele tem permissão de realizar um BULK INSERT, então, se ele não tem permissão de INSERT, ah, de BULK tem que ter…certo? Certo? Are you sure?

Adivinha qual mensagem aparece?

Msg 229, Level 14, State 5, Line 6

The INSERT permission was denied on the object ‘Roles’, database ‘RoleTest’, schema ‘dbo’.

Note que independente do comando, ele acusou falta de permissão de INSERT. Simples assim…

Logue como sysadmin novamente e conceda a seguinte permissão:

Agora sim, o BulkAdmin vai conseguir realizar tanto o BulkInsert como o Insert normal.  O exemplo ficou longo (e óbvio pra muitas pessoas) mas agora creio que deu como comprovar de fato pra o BULK INSERT e permissionamento na prática. Ainda logado como CarinhaBulkAdmin, vamos fazer o último teste

8) Lembram lá no começo que qualquer membro de uma server role pode passar permissões (da mesma role) para outro login? Então, vamos ver isso na prática:

Pronto. Agora o CarinhaDoInsert também é bulkadmin. Outro exemplo do porquê se deve ter bastante cuidado ao concender roles de servidor… Não vou entrar em detalhes aqui, mas imagine no milagre da multiplicação…

Bônus/curiosidade:  Não falei ainda sobre o DbOwner, que é uma role de banco, mas aqui vai uma curiosidade interessante: o dbOwner ele tem privilégios extremos no banco de dados na qual ele é dono. Ele pode fazer qualquer coisa praticamente em sua base. Note que eu disse “praticamente”. O BULK LOAD é considerado algo tão importante na parte de segurança que ainda assim, o dbowner precisaria ter explicitamente bulkadmin pra poder usar o bulk insert, pois caso tente uma operação deste tipo sem devida permissão, ocorrerá um erro (e olha que ele é dono da base).

Considerações finais

Pra reforçar o entendimento, sugiro ler novamente [Aplicação], tópico escrito acima. Finish!

É isso. Estou estudando para exames (70-463) então pode demorar um pouco para os post sairem. Mas saem. Dbcreator ficaria pra esse post mas infelizmente não deu tempo. Prometo. Em paralelo, posso prometer que vem um pouco de BI e SSIS por aí (assunto que estou estudando).

Qualquer dúvida, sugestão, etc, entre em contato.

[]’s

Script – Informações do Tamanho das Bases

Espaço em Disco Olá, O codigo a seguir tem a finalidade de capturar o tamanho atual das bases (levando em conta apenas os arquivos de dado). Uma ótima utilidade para o script é persistir essas informações em um repositório pra depois fazer outras análises (Capacity Plan, por exemplo), por isso adicionalmente, existe um campo de data na saída da variável. Segue script:

Exemplo de saída

: espacoBranco

Roles do SQL Server – Vida e Obra

s12

(Esse artigo faz parte da série Roles do SQL Server – Vida e Obra)

Bom dia!

Este post inicia o começo de uma série sobre as Server-roles:  Roles no SQL Server.

Entendo que é um assunto importante tanto pra DBA’s (essencial aqui) quanto pra Desenvolvedores, que por vezes que precisam gerenciar o SQL Server por motivo ou outro.

1 – Básico sobre Segurança

Tem um artigo legal do Laurentiu que trata dos aspectos básicos de segurança no SQL Server. Em resumo:

  • Existem dois escopos principais no SQL Server quando o assunto é segurança: Server (Instância) e Databases (Bancos de Dados);
  • Logins são relacionados à Instância (Server) e Usuários, aos bancos de dados;
  • Cada login é um principal. Principal é tudo aquilo que pode sofrer uma ação chamada permissionamento;
  • Existem “principals” que possuem permissões já pré-definidas, embora você também possa criá-los. Tais principals são chamados de Role (Papel, função)

Mas…o que é uma role?

2- Roles: Analogia 

Maria Queren é uma analista de sistemas pela manhã, trabalhando em uma multinacional. De tarde, ela vai para sua empresa, onde é dona, a fim de tomar decisões gerenciais. No final da tarde, vai para o curso de inglês, onde é aluna. De noite, vai pra casa, onde é esposa e mãe. Nos finais de semana, passa o tempo na casa dos pais.

Notou o que seriam “roles”? Observe a variedade de papéis que a Maria possui. Analistas de Sistema, proprietária de negócio, estudante, mãe, esposa, filha… Cada papel deste traz uma série de poderes e possui uma determinada atuação em determinado contexto (ambiente). Maria pode dar gerenciar pessoas em sua empresa, mas não na instituição onde tem curso de inglês.

3 – Voltando ao SQL Server

Então, o SQL Server possui também alguns papéis de servidor, tanto em contexto de servidor como em contexto de banco de dados. É importante associar o contexto de servidor aos logins (autenticação) do que usuários (estes estão no escopo de banco de dados).  Cada papel possui uma série de privilégios, e garante ao principal associado X permissões. No caso em específico do assunto atual, que são roles de servidor, garante algumas permissões à nível de instância.

4-   Mas o que são mesmo Server Roles?

Se dividem em duas categorias: Fixed Server Roles (Leia-se Funções fixas, pré-definidas) e as Custom Server Roles (referenciadas oficialmente como User Defined Server Roles, que é uma novidade trazida pelo SQL Server 2012). Vamos começar da raíz, conhecendo cada uma das roles fixas.

As nove Roles Fixas de Servidor, linkadas neste tópico, são:

5 – Mas porque falar sobre Server Roles em outros posts? “Faz um resumão aê”

Pode parecer simples resumir poucas linhas sobre cada role acima (como é comumente visto pela internet). Porém, algumas roles são  extremamente peculiares, pois, possuem mais privilégios do que se comumente acredita que tenham e é difícil fixar isso sem teste. Algumas são irrelevantes no dia de hoje (em linhas gerais), outras fáceis de entender e outras bastante delicadas e que escondem um canhão (por exemplo, dbcreator) se mal utilizados.

Nas próximas postagens, vou seguir a ordem da lista acima e conversamos sobre as roles bulkadmin e dbcreator.
De antemão, caso tenha alguma pergunta ou queira dar uma sugestão sobre o assunto (e quiser fazer perguntas sobre as roles), não hesite em comentar ou entrar em contato. Todo e qualquer feedback é bem vindo, ok?

[]’s

SQL Saturday #253 – Sessões publicadas, ajude o planejamento

Chamado No.2 do Sat

Bom dia pessoal,

Recentemente fiz um post sobre o SQL Saturday #253, e hoje recebi um e-mail sobre o evento.

Replicando o comunicado adicionando imagens de guia:

—————————————————————————————————–

Em poucos dias teremos o SQL Saturday #253 em Brasília! Dia 28/09/2013 estaremos juntos para um grande evento de SQL Server, grande mesmo, no momento temos mais de 560 pessoas entre confirmados e lista de espera.

Abaixo mais informações sobre o evento:

  • A programação completa do SQLSat #253 está no ar: http://sqlsaturday.com/253/schedule.aspx

Imagem

Imagem

  • Esta informação é importante, pois nos ajuda a entender a distribuição entre as sessões.
  • Se sua empresa tem interesse em patrocinar o evento, ainda há tempo, entre em contato com luciano.moreira@srnimbus.com.br

IMPORTANTE: Se por algum motivo você não vai poder participar do evento, faça o cancelamento da sua inscrição (http://sqlsaturday.com/253/changestatusrequest.aspx). Isso vai possibilitar que outros participem do evento.

Atenciosamente,
Luciano Moreira – SQLSat #253
———————————————————————————————————————-
É isso. Maiores novidades serão postadas aqui quando sair.
[]’s

Vigilância nos estudos: validar informação é fundamental

Web

Boa tarde.
Queria ter postado isso antes (na época que estava estudando pra 70-461) mas acabei esquecendo, hehe.

Bem, a lição de hoje é:

Preste bem atenção na sua fonte de estudo e não confie sem validar.

Sendo óbvio e redundante, convenhamos  que o ser humano erra, pois não é perfeito. Quem nunca errou que atire a primeira transação.

Mas enfim, o que ia postar na época era esta questão que veio junto com o prep-kit do Training Kit 70-461 (Microsoft SQL Server 2012 Querying).

Clique na imagem para melhor visualização, por gentileza:

Observe

Resumindo…

SCRIPT de CREATE de duas tabelas.

Uma procedure.

A procedure supostamente tem como objetivo inserir os dados de uma tabela em outra.

Sabe qual é a opção correta para fazer o script inserir sem nenhum problema os dados da Tabela A pra B?

Nenhuma

A resposta

Explicando melhor, é possível ver qual seria a resposta do simulado detalhando em um botão.

Não vamos entrar no mérito do assunto IDENTITY (porque o assunto merecia mais algum texto) , então decidi deixar aqui a resposta oficial do Prep-kit (destacada de amarelo) e um questionamento destacado de vermelho.

ping

A resposta proposta parece estar correta, se levarmos em conta a ordem das colunas e apenas isso. Mas, vale lembrar que ambas as tabelas possuem o campo orderid como identity…  Tentar inserir valores explicitamente sem o uso de um SET apropriado para isso (como por exemplo, o SET IDENTITY_INSERT ) dará erro, e infelizmente tal configuração sequer foi mencionada na questão, então podemos desconsiderá-la. Portanto, no mundo sem treino, da teoria, a alternativa C estaria correta. No mundo real, não, inclusive é um erro bem recorrente em projetos de ETL inserções invalidas deste tipo.

Mas o que você quer dizer com isso tudo?

Que não importa a fonte, valide informações técnicas, testando e lendo de outras fontes.

E por mais que a fonte possa parecer impecável, erros podem acontecer. Note que a questão veio do Training Kit. É o material oficial de preparatório para o exame. E deixando claro aqui, é um bom material em linhas gerais, não venho aqui no artigo reclamar do mesmo. A minha intenção foi outra (de alertar sobre a validação de informação) e transmitir uma informação incorreta (ou questionável) é um ato passível pra qualquer ser humano (inclusive, se eu tiver passado algo assim, me alertem sem dó).

Resumindo, não confie em ninguém (recomendação de leitura fortíssima).

Teste. Valide SEMPRE.  Seja curioso. Repita alguns testes pra aumentar a certeza.

Pode parecer besteira, mas este tipo de cilada em exames de certificação significa alguns pontos perdidos, e na vida real, pode significar alguns minutos perdidos enfrentando troubleshootings de qualquer tipo pra depois falar “pô mas eu não tinha entendido assim”.  E isso é uma realidade bem palpável.

Fique à vontade para comentar, dar sua impressão sobre o assunto.

[]’s