HomeLab – Porque mudei para o Hyper-V

Há muito tempo atrás, numa galáxia distante, comecei uma pós-graduação em perícia digital. O curso era uma avalanche de informação técnica sobre redes e segurança e estava tão relacionado ao meu trabalho do dia a dia quanto um curso de barista: Ambos são muito bacanas e podiam me trazer benefícios no ambiente de trabalho – quem não gosta de café na TI –, mas eu os faria apenas por interesse pessoal. No entanto, pouco antes de me matricular, descobri que o curso seria 90% em Linux e eu nunca havia mexido com esse pinguim.

Então, surgiu a necessidade de criar máquinas virtuais e a turma de perícia optou pelo Virtual Box. Confesso que me apeguei rapidamente ao VBox e, logo, estava usando ele em casa, no notebook e no trabalho. Pela linha de comando, ele é uma ferramenta flexível que atende muito bem às necessidades de um HomeLab. Através da interface gráfica, nem tanto.

Apesar disso, quando comecei a utilizar VMs para instalação de Failover Clustered Instances, me deparei com um bug da ferramenta. Sempre que as ferramentas de integração com o host (VirtualBox Guest Tools) estavam instaladas na VM, a instalação da FCI falhava. E é claro que muita gente deu de cara com esse bug [1]. Logo, como o meu foco era exatamente FCIs, resolvi tentar outra plataforma de virtualização.

O fato é que a maior ferramenta do mercado é a VMware. Porque não ir diretamente para ela? Depois do lançamento do PowerCLI [2], a integração entre host e guest era quase perfeita. Sem falar que ela sempre esteve no topo do mercado… Mas qual outra opção está próxima à VMware? O Gartner responde [3].

gartner_virtualization_2016

Hyper-V… Really?!

Fiquei tão surpreso de ver o Hyper-V em segundo lugar que fui pesquisar mais e descobri que ele tem crescido bastante nos últimos anos. E agora, Hyper-V ou VMware?

Em questão de compatibilidade, não tem o que comentar sobre o virtualizador da Microsoft. Com o crescimento dessa ferramenta nos últimos anos, fica difícil dizer que não vale investir o seu tempo nela. Apenas se ela tivesse algo como o PowerCLI…

HAIL POWERSHELL DIRECT!

Foi então que descobri a nova funcionalidade do powershell nos Windows 10 e Windows Server 2016: Powershell Direct [4]. Com ele, você é capaz de executar comandos diretamente nas VMs sem precisar de configuração de remote desktop, firewall ou rede… Não sei como demonstrar o quão simples e conveniente é este recurso senão através de um exemplo!

#Nome da VM
$VmName = "WS2016-DC"

#Credencial para logar na VM
$VmCredential = Get-Credential -Credential "$VmName\administrator"

#Executar comandos dentro da VM
Invoke-Command -VMName $VmName -Credential $VmCredential -ScriptBlock {
    #Capturar o adaptador de rede
    $NetAdapter = Get-NetAdapter

    #Renomear para facilitar identificação
    $NetAdapter | Rename-NetAdapter -NewName "LAN_NIC"

    #Atribuir novo IP ao adaptador de rede
    New-NetIPAddress -InterfaceIndex $NetAdapter.ifIndex `
        -AddressFamily "IPv4" `
        -IPAddress "11.1.1.1" `
        -PrefixLength "24" `
        -DefaultGateway "11.1.1.1"

    #Configurar o endereço do DNS
    Set-DnsClientServerAddress -InterfaceIndex $NetAdapter.ifIndex -ServerAddresses "127.0.0.1"

    #Renomear a máquina
    Rename-Computer -NewName "WS2016-DC" -Restart
}

Nesse script, estou entrando com as credenciais de administrador da minha VM – um prompt será exibido para que digite a senha – e usando o cmdlet “Invoke-Command” para rodar comandos diretamente na “WS2016-DC”. Tudo que está dentro de “ScriptBlock”, da linha 8 até a linha 27, será executado como se estivesse dentro do console do powershell da VM. Se você tem acompanhado a série de publicações do HomeLab, perceberá que o script executado é parte da configuração da minha domain controller [5]. Em outras palavras, preciso apenas criar a VM e posso realizar toda a configuração através do próprio host!

Depois de descobrir o Powershell Direct, as possibilidades são diversas! Hoje, tenho labs com diversas configurações de AlwaysOn (FCIs e AGs) completamente automatizadas, basta executar um script! Difícil é não se acostumar com as facilidades providas por este recurso… E é por isso que utilizo o Hyper-V hoje. E você, qual virtualizador usa?

LINKS

[1] https://www.sqlskills.com/blogs/jonathan/building-a-completely-free-playground-for-sql-server-4-creating-the-cluster/

[2] https://blogs.vmware.com/PowerCLI/

[3] https://www.gartner.com/doc/reprints?ct=160707&id=1-3B9FAM0&st=sb

[4] https://blogs.technet.microsoft.com/virtualization/2015/05/14/powershell-direct-running-powershell-inside-a-virtual-machine-from-the-hyper-v-host/

[5] https://comunidadesqlserver.wordpress.com/2017/01/02/homelab-crie-e-configure-um-dominio/

HomeLab – Crie um Storage Server com iSCSI Target usando Powershell

Quando começamos a testar soluções de alta disponibilidade em nosso home lab, logo damos de cara com uma realidade cruel: nem todos têm acesso à uma storage. Eu nunca tive… (Insira cara triste aqui).

Uma solução prática para esse problema é utilizar um iSCSI Target para entregar discos como um Storage Server faria. Desde o Windows Server 2012, esta tecnologia vem disponível como uma built-in feature. No entanto, antes de começarmos a codificar algo, vejamos o basicão sobre este recurso.

Nota: Estes scripts foram desenvolvidos e testados num ambiente Windows 10\Windows Server 2016 com Powershell 5.0. O funcionamento de cada cmdlet pode variar de acordo com a versão.

HTH DOES THIS WORK?

Um iSCSI Target Server é um servidor que irá compartilhar discos virtuais através do iSCSI Target para outros servidores, chamados de iSCSI Initiators. Para um initiator se conectar a um target server, ele realiza uma iSCSI Connection sobre TCP/IP até o Target. O target é um objeto que possui registros de quais initiators podem se conectar a ele e também de todos iSCSI Virtual Disks associados. Estes discos virtuais são criados no target server e, depois, serão montados em um ou mais initiators. Acho que com um desenho fica um pouco mais fácil de entender.

iscsi-target

Neste caso, temos o initiator com dois discos virtuais montados como suas unidades F e G. Como boa prática – e para facilitar um bocado o gerenciamento –, é indicado nomear os discos virtuais de forma a identificar prontamente a quais estes estão associados. Os discos virtuais foram criados em cima da unidade Z do Target Server, mas poderiam ter sido criados em unidades diferentes.

Como a minha ideia é apenas te familiarizar com alguns termos e com o funcionamento desse recurso, vamos seguir em frente. No entanto, caso tenha interesse em começar a estudar sobre este assunto, sugiro começar por aqui [1].

READY TO WORK!

Agora que já entendemos um pouquinho sobre iSCSI Target, vamos à prática. Vou utilizar uma VM que sempre estará ligada para servir como iSCSI Target Server e, pra mim, esta VM é minha Domain Controller [2]. Ela servirá os discos para uma máquina chamada SQLNODE01 – é, bem original, eu sei… A configuração deste ambiente é a seguinte:

tabela

Na VM “WS2016-DC” temos a unidade Z que será usada para criar um disco virtual. Este disco será entregue ao “SQLNODE01” e montado localmente.

Incialmente, iremos até nosso iSCSI Target Server e instalaremos a feature de mesmo nome. Depois, criaremos o target que irá possibilitar a conexão dos discos com os initiators. Note que já iremos associar o endereço IP do SQLNODE01 ao target, mas este procedimento poderia ser realizado posteriormente. Em seguida, criaremos o disco virtual e vamos mapeá-lo ao target que criamos.

#Instalar a feature iSCSI Target Server
Install-WindowsFeature FS-iSCSITarget-Server

#Criar o Target e definir o Initiator que poderá conectar
$TargetName = "Sqlnode01-Target"
New-IscsiServerTarget -TargetName $TargetName `
-InitiatorIds "IPAddress:11.1.1.2"

#Adicionar descrição do Target
Set-IscsiServerTarget -TargetName $TargetName `
-Description "Target para servidor SQLNODE01"

#Criar disco virtual
$VhdPath = "Z:\iSCSIVirualDisks\SQLNODE01-F-SQLDATA.vhdx"
New-IscsiVirtualDisk -Path $VhdPath `
-Description "Disco usado para instância de SQLNODE01" `
-SizeBytes 100GB

#Mapear disco ao Target
Add-IscsiVirtualDiskTargetMapping -TargetName $TargetName -Path $VhdPath

Adicionei algumas descrições do target e do disco virtual para facilitar a administração desses objetos futuramente. Esses detalhes são opcionais, mas recomendados.

Agora, no SQLNODE01, precisamos configurar o serviço “Microsoft iSCSI Initiator” (MSiSCSI) para iniciar automaticamente com a VM e iniciá-lo para que possamos nos conectar ao target. Para isso, criaremos um portal apontando para o nosso target. Ao criar o portal, o target ficará visível e com isso conseguiremos nos conectar. É através desta conexão que teremos acesso ao disco virtual. Finalmente, basta inicializar o disco, criar uma partição e formatar.

#Configurar serviço para iniciar automaticamente
Set-Service -Name MSiSCSI -StartupType Automatic

#Iniciar o serviço
Start-Service MSiSCSI

#Criar portal para o Target
New-IscsiTargetPortal –TargetPortalAddress 11.1.1.1

#Recuperar e conectar-se ao Target
Get-IscsiTarget | Connect-IscsiTarget -IsPersistent $true

#Recuperar discos disponíveis através da conexão
$iSCSIVirtualDisk = Get-iSCSIConnection | Get-Disk

#Inicializar o disco e criar a partição F
$iSCSIVirtualDisk | Initialize-Disk -Passthru | `
New-Partition -DriveLetter F -UseMaximumSize

#Formatar o volume
Format-Volume -DriveLetter F -FileSystem NTFS `
-NewFileSystemLabel "SQLDATA" -AllocationUnitSize 64KB

Um detalhe que vale ser ressaltado: A flag “IsPersistent” foi marcada como “True” para que a conexão com o Target seja reestabelecida sempre que a VM for iniciada.

Pronto! Agora temos um Storage Server entregando um disco para a VM SQLNODE01 e que  também poderá entregar discos para todas as VMs em nosso Home Lab. Aproveito para deixar uma pergunta para você: Qual seria o procedimento se quiséssemos compartilhar um mesmo disco para mais de uma VM?

LINKS

[1] https://blogs.technet.microsoft.com/filecab/2012/05/21/introduction-of-iscsi-target-in-windows-server-2012/

[2] https://comunidadesqlserver.wordpress.com/2017/01/02/homelab-crie-e-configure-um-dominio

Retrospectiva 2016

Esta publicação é uma forma de agradecermos você, leitor. Mais um ano terminado e nossa Comunidade SQL Server continua crescendo! Neste ano que passou, tivemos mais visualizações e visitantes em relação aos anos anteriores. Números, estes, que trazem satisfação de publicar e compartilhar conteúdo e experiências com vocês.

img01

De todo o conteúdo que vocês tiveram acesso, as cinco publicações mais visualizadas em 2016 foram:

  1. Atachar/Recuperar arquivos MDF sem o LDF
  2. Tabelas Temporárias X Variáveis de Tabela
  3. Como verificar o HASH de um arquivo?
  4. Tabelas Temporais – Parte 1: Criação de tabelas
  5. Trabalhando com dados hierárquicos – Parte III

O ano de 2016 também foi recheado de eventos da comunidade técnica e estivemos presentes em vários deles como:

Sem falar em tantos outros eventos que gostaríamos de ter participado! Neste ano, a ideia é aumentar este número, incluindo eventos que ainda não participamos!

Tive a oportunidade de palestrar três vezes neste ano que passou e pretendo palestrar mais vezes. Palestrei junto com a Nane também que foi uma experiência muito divertida e gratificante.

Pude começar a aprender Powershell. Algo que sempre achei interessante, mas que nunca esteve no topo da lista. Hoje, vejo o quanto esta ferramenta é útil. Portanto, pretendo escrever mais sobre ela.

Consegui sair um pouco da minha linha “dev” e estudar um pouco mais sobre tecnologias de alta disponibilidade no SQL Server. É empolgante e, ao mesmo tempo, um pouco assustador ver o quanto você tem a aprender sobre outras áreas dessa plataforma de dados – vou nem mencionar a área de BI…

Pude gravar um mini curso online sobre Always Encrypted para um site de tecnologia que deverá ficar disponível em breve – se tudo der certo. Uma experiência bem enriquecedora no aspecto didático. Quem sabe no futuro eu gravo mais alguns.

E assim foi 2016… Espero que continue conosco no ano de 2017 e, mais uma vez, obrigado pela companhia!

[]’s

HomeLab – Crie e Configure um Domínio

Uma das necessidades mais comuns, quando se está criando ou testando algo no seu Home Lab, é a existência de um domínio. Para isso, precisamos de uma máquina que servirá de Domain Controller (DC).

Vou supor que você possui uma VM zerada. Assim, você pode pular quaisquer etapas que quiser. Vou supor também que utilizará essa mesma máquina como DNS Server, já que o nosso foco (na maioria das vezes) é o SQL. Um último detalhe: como executaremos tudo via powershell, você poderá utilizar este procedimento tanto para a versão “Desktop Experience” como para a versão “Core” do Windows Server.

Nota: Estes scripts foram desenvolvidos e testados num ambiente Windows 10\Windows Server 2016 com Powershell 5.0. O funcionamento de cada cmdlet pode variar de acordo com a versão.

MÃOS À OBRA

Uma das primeiras coisas que costumo fazer ao configurar um novo Domain Controller é determinar qual será seu endereço IP. O procedimento abaixo pode ser ajustado e repetido caso você esteja utilizando mais de um adaptador de rede.

#Capturar o adaptador de rede
$NetAdapter = Get-NetAdapter

#Renomear para facilitar identificação
$NetAdapter | Rename-NetAdapter -NewName "LAN_NIC"

#Atribuir novo IP ao adaptador de rede
New-NetIPAddress -InterfaceIndex $NetAdapter.ifIndex `
   -AddressFamily "IPv4" `
   -IPAddress "11.1.1.1" `
   -PrefixLength "24" `
   -DefaultGateway "11.1.1.1"

Como esta máquina será também o DNS Server, podemos configurar o endereço do DNS como um loopback para própria máquina.

#Configurar o endereço do DNS
Set-DnsClientServerAddress -InterfaceIndex $NetAdapter.ifIndex -ServerAddresses "127.0.0.1"

Antes de começarmos a configurar nossa floresta, é interessante renomear esta máquina para algo mais amigável como “WS2016-DC”.

#Renomear a máquina
Rename-Computer -NewName "WS2016-DC" -Restart

Com a flag “Restart” habilitada, sua VM terá seu nome alterado e será reiniciada. Então, podemos partir para a instalação de algumas features.

#Importar módulo
Import-Module ServerManager

#Instalar o pacotão Domain Controller
Install-WindowsFeature AD-Domain-Services -IncludeAllSubFeature -IncludeManagementTools
Install-WindowsFeature DNS -IncludeAllSubFeature -IncludeManagementTools
Install-WindowsFeature GPMC -IncludeAllSubFeature -IncludeManagementTools

Com esses comandos, estamos instalando o “Active Directory Domain Services”, o “Domain Name System” e o “Group Policy Management Console”. Esse é o pacotão básico de um Domain Controller. As flags “IncludeAllSubFeature” e “IncludeManagementTools” são usadas para instalar o pacote completo com ferramentas de administração remota (RSAT), módulo de powershell específicos, etc.

Finalmente, iremos instalar nossa floresta. Neste momento, estamos criando o domínio “SQLNET.com”, configurando o DNS e promovendo esta VM à Domain Controller. Estou utilizando o “Read-Host” apenas para solicitar a senha previamente. Você também poderia digitá-la quando o cmdlet “Install-ADDSForest” solicitasse. Este último cmdlet possui diversas flags e nuances, por isso sugiro que em caso de dúvidas olhe na documentação oficial [1].

#Recuperar senha de Administrador de Domínio
$Password = Read-Host -AsSecureString -Prompt "Digite sua senha:"

#Importar módulo
Import-Module ADDSDeployment

#Instalar nova floresta
Install-ADDSForest  -DomainName "SQLNET.com" `
   -SafeModeAdministratorPassword $Password

Nota: Quando o nome NETBIOS não é fornecido, ele é determinado automaticamente como o primeiro nome do domínio. Ele também deve possuir 15 ou menos caracteres, se não a instalação falhará.

Executando esses comandos, sua VM será reiniciada mais uma vez. No entanto, a partir deste momento, você deverá utilizar o login do administrador de domínio para logar. No meu caso, o login é “SQLNET\Administrator”.

INDO UM PASSO ALÉM

Agora que já temos o DC pronto, podemos configurar o DNS reverso. Desta forma, podemos obter um nome quando perguntarmos através de um IP (i.e. “ping –a 11.1.1.1”). Iremos criar uma zona de lookup reverso para a rede “11.1.1.0/24”, ou seja, abordaremos todas as máquinas com endereço IP “11.1.1.x” no nosso domínio.

#Criar a zona de lookup reverso
Add-DnsServerPrimaryZone -NetworkID "11.1.1.0/24" `
-ReplicationScope "Domain" `
-DynamicUpdate "Secure"

Outra necessidade comum é a criação de um usuário de domínio. Como exemplo, vou criar um usuário para a conta de serviço do SQL Server chamada “svc_sqlservice”.

#Recuperar senha
$Password = Read-Host -AsSecureString -Prompt "Digite sua senha:"

#Cria novo usuário
New-ADUser -Name "svc_sqlservice" `
-Enabled $true `
-AccountPassword $Password 

Como todos os cmdlets que usei, este último possui diversas opções e flags que você encontra aqui [2]. Basta ajustar de acordo com as necessidades do seu lab.

LINKS

[1] https://technet.microsoft.com/en-us/library/hh974720.aspx

[2] https://technet.microsoft.com/en-us/library/ee617253.aspx

NoLock – Remote table-valued function calls

Olá pessoas. Estou participando de uma migração e achei interessante compartilhar um caso com vocês.

O Post é bem pequenino somente a título de curiosidade mesmo.

Nessa migração estamos retirando as bases de dados do ambiente de produção SQL Server 2008 R2 com modo de compatibilidade 80 para SQL Server 2014 com modo de compatibilidade 120.

A maior dificuldade dessa migração é sair do modo de compatibilidade 80, pois a partir dele muita sintaxe deixou de funcionar como o * = / = * substituído pelo Left join / Right Join e a sintaxe do Raiserror sendo exigido colocar os parâmetros entre parênteses, porém uma coisa que deixou a equipe mais “encucada”  foi o NoLock .

Sabemos que os desenvolvedores quase nunca usam o NoLock, né? (sarcasmo). Então tivemos uma amostra legal do erro.

Na documentação do SQL Server 2016 está dizendo que em versões futuras não será mais permitido a utilização de Hints sem a clausula “With”, porém EM VERSÕES FUTURAS, ou seja, ainda conseguimos usar o NoLock sem o With.

hintssqlserver

Porém quando executamos uma consulta via linked server sem a clausula with, é retornado o seguinte erro:

SELECT *
FROM [sqlh110].master.sys.databases (NOLOCK)

Msg 4122, Level 16, State 1, Line 2
Remote table-valued function calls are not allowed.

Obs.: A consulta foi realizada em um SQL Server 2014 (SP2).

Agora vocês pensam: “O quê é que tem a ver erro de Remote table-value function com o NoLock? “.

Tudo indica que o parse do SQL Server entende aqui que ao colocar o NoLock entre parênteses (NOLOCK) na verdade está chamando uma função remotamente e que não é uma Hint. Vi essa explicação no seguinte link:

(http://stackoverflow.com/questions/17242733/why-is-with-required-when-using-nolock-on-a-remote-table-call)

Podemos provar isso com a seguinte consulta:

SELECT *
FROM [sqlh110].master.sys.databases NOLOCK

resultadoselectnolock

Ao retirar o parênteses a consulta retorna o resultado normalmente, mesmo sem a clausula “With”.

Identificamos que para o código voltar a funcionar basta retirar os parênteses, porém já que o mesmo será editado para corrigir o erro recomendo que editem da forma “completa”, pois, como olhamos na documentação, isso será descontinuado, então não custa nada sempre que forem utilizar a Hint “NoLock”, que a mesma seja precedida pela clausula “With”, evitando assim, erros em versões futuras.

Editado em 28/12/2016

Conforme observado pelo Reginaldo Silva o nolock sem os parênteses funciona, pois na verdade o SQL Server entende que a palavra “NoLock” é um alias e não uma Hint para realizar a leitura suja, ou seja, para consertar de fato o erro citado no post é colocando o with antes do (nolock).

HomeLab – Crie um Template usando um Answer File

Quando estou montando um laboratório, um dos processos que considero mais demorados e repetitivos é a configuração inicial da máquina virtual. Aquele momento em que você bota a ISO [1] na VM e liga pela primeira vez…

001

Você sai clicando nas telas que já viu milhares de vezes até iniciar o processo de instalação do Windows e espera… Se estiver criando a VM em um SSD, este intervalo de tempo pode ser de alguns segundos até poucos minutos. No entanto, se estiver num HD tradicional, você pode abrir o Netflix e rever as 10 temporadas de Supernatural pela enésima vez até que a VM precise de mais interação.

002

Não sei você, mas eu não vou colocar uma senha diferente para cada VM nova que eu criar… Geralmente, vou usar a mesma senha para todas as VMs do meu Home Lab. E convenhamos, a vida é muito curta para ficar instalando Windows.

Após algumas várias instalações de Windows, resolvi pesquisar sobre formas de automatizar todo o processo de instalação, incluindo itens como:

  • Idioma dos aplicativos;
  • Formato de horas, datas, etc;
  • Configuração do teclado; e
  • Senha do administrador.

Além disso, depois de ligar a VM, queria interagir com ela apenas quando eu fosse executar os meus testes.

ENTER THE ANSWER FILE

O Answer File [2] é um documento XML usado para instalações automáticas (unattended). Nele, são determinadas inúmeras configurações para a criação de uma imagem, das quais utilizei apenas as que permitiam a geração de um template para as demais VMs com as configurações que queria.

Já aviso, esse processo parece longo, chato e que não vale o tempo. Mas o objetivo é exatamente economizar tempo para todas as próximas VMs… E ele parece mais difícil do que realmente é.

Dado o aviso, baixe o Windows Assessment and Development Kit (ADK) [3]. Dentro do ADK, está o Windows System Image Manager (SIM) [4] que é exatamente do que precisaremos. Depois de instalar o Gerenciador de Imagem de Sistema do Windows (caso esteja usando o Windows em português), precisaremos da ISO [1] que utilizaremos como base para o template. Na verdade, usaremos apenas o arquivo “install.wim” que geralmente está em “.\sources”. Copie este arquivo para um outro lugar onde possa trabalhar com ele (i.e. “C:\temp”).

Então, vamos ao Windows SIM criar nosso Answer File. Ao clicar em “Novo Arquivo de Respostas…”, é requisitada uma imagem do Windows. Clique em “Sim” e escolha o arquivo que copiou localmente.

003

Depois, escolhemos a edição que usaremos como template e seguimos em frente.

004

Em seguida, caso não possua um arquivo de catálogo, a mensagem abaixo será exibida. Basta clicar em “Sim” e aguardar até que o arquivo seja criado no local onde copiou a imagem.

005

Após a criação do catálogo, a imagem será carregada e aparecerá um Answer File em branco. No painel da imagem, temos os componentes que utilizaremos para customizar o Answer File. Expandindo essa pasta, precisaremos adicionar o “Microsoft-Windows-International-Core” (não confundir com a variação de final WinPE) para configuração de idioma, formatação de hora e teclado. Clicando com o botão direito sobre o componente, vamos adicioná-lo ao “Pass 7 oobeSystem”. Nesta sessão, estamos colocando configurações para a “Out Of the Box Experience” que ficarão no template após rodar o sysprep com o parâmetro “/oobe”.

Eu utilizo os seguintes valores para esse componente:

006

O que se traduz em formatos de hora, data e teclado no padrão brasileiro e o Windows instalado em Inglês. Se quiser entender melhor cada opção, veja aqui [5].

Para o resto das configurações pendentes, usaremos o componente “Microsoft-Windows-Shell-Setup” que também adicionaremos ao “Pass 7 oobeSystem”. Na raiz dele, iremos determinar o “TimeZone”. Para hora de Brasília, uso “E. South America Standard Time”, mas a lista completa está aqui [6].

007

Expandindo o componente, em OOBE, configuro “HideEULAPage” como “True” e “ProtectYourPC” para “1”. Assim, evitamos a página de EULA e definimos as configurações recomendadas de proteção do PC.

008

Finalmente, vamos em “UserAccounts” – no mesmo local onde está OOBE – e definimos a senha de administrador da máquina. Basta colocar a senha em “AdministratorPassword” no campo “Value”. Pronto! Aí, é só salvar o Answer File e partir para o sysprep.

BACK TO THE LAB AGAIN

Voltando para a VM que será o template, pegaremos o arquivo xml que geramos e salvaremos dentro da VM. Supondo que você salvou o xml em “C:\Template_AnswerFile.xml”, no momento em que for rodar o sysprep irá usar este arquivo como valor para o parâmetro “unattend”.

Sysprep.exe /oobe /generalize /shutdown /unattend:C:\Template_AnswerFile.xml

Desta forma, estamos gerando uma imagem com uma nova SID que utilizará o arquivo que criamos para definir as configurações pré-determinadas. Assim que o sysprep terminar a execução, a VM será desligada e estará pronta para ser clonada/gerar um template/etc.

Então, da próxima vez que criar uma máquina a partir deste template, você precisará apenas ligar a VM e ela será configurada automaticamente! Basta colocar a senha que definiu no Answer File e começar os testes!

LINKS

[1] https://www.microsoft.com/en-US/evalcenter/evaluate-windows-server-2016

[2] https://technet.microsoft.com/en-us/library/cc749113(v=ws.10).aspx

[3] https://developer.microsoft.com/en-us/windows/hardware/windows-assessment-deployment-kit

[4] https://technet.microsoft.com/en-us/library/hh824929.aspx

[5] https://technet.microsoft.com/en-us/library/cc766400(v=ws.10).aspx

[6] https://technet.microsoft.com/en-us/library/cc749073(v=ws.10).aspx

Minha primeira palestra

08f4ad19-7b49-4b0c-b4de-14722d6337d3

No dia 26/11/2016 aconteceu o SQL Saturday 573 aqui em Brasília conforme já havia falado no post de divulgação do evento , mas o quê eu não tinha falado é que eu ia palestrar. De fato, até a data que lancei o post, eu não havia decidido bem se ia palestrar ou não, mas com muito incentivo dos meus colegas/amigos de trabalho e SQL decidi palestrar juntamente com o Gustavo (também colaborador do blog) .

Então aproveitando a oportunidade que me foi concedida de palestrar no Sat de Brasília (que já me sentiria a vontade por ser a minha cidade), juntando em ter meu parceiro de algum tempo de SQL Server (Gustavo) palestrando do meu lado e um tema que gosto muito (índices) tive a coragem e encaminhei minha palestra.

A palestra foi voltada para os alunos da faculdade e para todos os DBA’s iniciantes que querem entender melhor para que serve um índice. Como o próprio tema deixa bem claro, “Indexação para iniciantes” foi bem básica mesmo, expliquei para que servia um índice, suas vantagens, melhores práticas e desvantagens seguidos de exemplos. Apesar da palestra ser bem básica, tive a presença de colegas DBA’s, que já entendem bastante do assunto, assistindo a nossa palestra. Todo esse apoio me deixou mais segura e confiante para passar um pouco do meu conhecimento.

Sou muito grata por ter essa oportunidade de poder contribuir um pouco com a comunidade. Essa gratidão é grande, pois a comunidade SQL Server é muito forte, cada um apoia o outro, passam o conhecimento sem nenhum interesse e sem nenhuma cobrança e posso dizer que minha carreira de DBA teve muita ajuda dela, então poder devolver um pouco do conhecimento adquirido é uma felicidade enorme. Agradecimento mais que especial para o Gustavo parceiro do blog e por ter palestrado comigo , Edvaldo pelo evento incrível e pela oportunidade de palestrar nele e Renato por ter assistido minha palestra e pelo feedback.

Espero que essa seja a primeira palestra de muitas que estão por vir (realmente espero não parar por aqui), aperfeiçoando cada vez mais a forma de passar o conhecimento.

Enfim, o material estará disponível no site do sql sat em alguns dias.

Seguem algumas fotos do evento para que quem não foi, não perder o próximo!