<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Posts on Brain (Hugo + Obsidian)</title><link>https://blog.merazzi.com.br/posts/</link><description>Recent content in Posts on Brain (Hugo + Obsidian)</description><generator>Hugo -- 0.147.1</generator><language>pt-br</language><lastBuildDate>Mon, 27 Apr 2026 22:57:55 -0300</lastBuildDate><atom:link href="https://blog.merazzi.com.br/posts/index.xml" rel="self" type="application/rss+xml"/><item><title>Porque comecei um novo blog</title><link>https://blog.merazzi.com.br/posts/2026/04/porque-comecei-um-novo-blog/</link><pubDate>Mon, 27 Apr 2026 22:57:55 -0300</pubDate><guid>https://blog.merazzi.com.br/posts/2026/04/porque-comecei-um-novo-blog/</guid><description>A motivação por trás de criar um novo blog e um novo método de publicação de ideias.</description></item><item><title>Teste da TOC Lateral</title><link>https://blog.merazzi.com.br/posts/2025/07/teste-da-toc-lateral/</link><pubDate>Thu, 24 Jul 2025 11:57:00 -0300</pubDate><guid>https://blog.merazzi.com.br/posts/2025/07/teste-da-toc-lateral/</guid><description>&lt;p>Este é (mais) um post de teste para verificar como a TOC (Table of Contents) está sendo exibida ao lado do conteúdo em vez de abaixo da imagem.
Para usar a ToC, use &lt;code>ShowToc: true&lt;/code> no cabeçalho do post.&lt;/p>
&lt;h2 id="primeira-seção">Primeira Seção&lt;/h2>
&lt;p>Esta é a primeira seção do post. Aqui temos algum conteúdo para demonstrar como a TOC funciona.&lt;/p>
&lt;h3 id="subseção-11">Subseção 1.1&lt;/h3>
&lt;p>Conteúdo da primeira subseção.&lt;/p>
&lt;h3 id="subseção-12">Subseção 1.2&lt;/h3>
&lt;p>Conteúdo da segunda subseção.&lt;/p></description></item><item><title>Exemplo de Post com Imagem de Título</title><link>https://blog.merazzi.com.br/posts/2025/07/exemplo-de-post-com-imagem-de-t%C3%ADtulo/</link><pubDate>Thu, 24 Jul 2025 11:33:00 -0300</pubDate><guid>https://blog.merazzi.com.br/posts/2025/07/exemplo-de-post-com-imagem-de-t%C3%ADtulo/</guid><description>&lt;h2 id="conteúdo-do-post">Conteúdo do Post&lt;/h2>
&lt;p>Só testando o Hugo e o Papermod&amp;hellip;
Como configurar uma imagem de título (cover) em um post do Hugo com tema PaperMod.&lt;/p>
&lt;pre tabindex="0">&lt;code>cover:
image: &amp;#34;images/2025/04/image-1.png&amp;#34; # Caminho para a imagem
alt: &amp;#34;Descrição alternativa da imagem&amp;#34; # Texto alternativo
caption: &amp;#34;Legenda opcional da imagem&amp;#34; # Legenda que aparece abaixo
relative: false # true se a imagem estiver na pasta do post, false se estiver em static/
hidden: false # true para ocultar a imagem na página individual do post
hiddenInList: false # true para ocultar a imagem na listagem de posts
&lt;/code>&lt;/pre>&lt;p>A imagem será exibida:&lt;/p></description></item><item><title>Personalizando a Homepage do Hugo com Tema PaperMod</title><link>https://blog.merazzi.com.br/posts/2025/07/personalizando-a-homepage-do-hugo-com-tema-papermod/</link><pubDate>Thu, 24 Jul 2025 10:39:00 -0300</pubDate><guid>https://blog.merazzi.com.br/posts/2025/07/personalizando-a-homepage-do-hugo-com-tema-papermod/</guid><description> Como criar uma homepage personalizada no Hugo usando o tema PaperMod, superando as limitações do profileMode e homeInfoParams</description></item><item><title>Configuração de Variáveis por Ambiente no Hugo</title><link>https://blog.merazzi.com.br/posts/2025/07/configura%C3%A7%C3%A3o-de-vari%C3%A1veis-por-ambiente-no-hugo/</link><pubDate>Fri, 18 Jul 2025 00:00:00 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2025/07/configura%C3%A7%C3%A3o-de-vari%C3%A1veis-por-ambiente-no-hugo/</guid><description>&lt;h1 id="configuração-de-variáveis-por-ambiente-no-hugo">Configuração de Variáveis por Ambiente no Hugo&lt;/h1>
&lt;p>Uma das necessidades comuns em projetos web é ter configurações diferentes dependendo do ambiente em que o site está sendo executado (desenvolvimento, produção, local, etc.). No Hugo, podemos implementar essa funcionalidade de uma forma bem interessante, usando variáveis condicionais e templates personalizados.&lt;/p>
&lt;p>Este guia explica como configurar URLs dinâmicas que mudam com base no ambiente, como por exemplo, fazer com que um link aponte para &lt;code>/posts&lt;/code> em ambiente local e para &lt;code>https://blog.merazzi.com.br&lt;/code> em produção.&lt;/p></description></item><item><title>Terraform do Zero na GCP – Parte 3: Criando o Primeiro Projeto</title><link>https://blog.merazzi.com.br/posts/2025/04/terraform-do-zero-na-gcp-parte-3-criando-o-primeiro-projeto/</link><pubDate>Wed, 23 Apr 2025 17:00:00 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2025/04/terraform-do-zero-na-gcp-parte-3-criando-o-primeiro-projeto/</guid><description>&lt;p>Se você caiu aqui de pára-quedas e quer ver o que rolou antes, veja o seguinte post:&lt;/p>
&lt;p>&lt;a href="https://blog.merazzi.com.br/?p=1242" target="_blank" rel="noopener">Terraform do Zero na GCP – Parte 2: Preparando o Ambiente&lt;/a>&lt;/p>
&lt;p>Agora que já preparamos o terreno, é hora de criar o primeiro projeto. Nesse post, vamos:&lt;/p>
&lt;ul class="wp-block-list">
&lt;li>
Criar a estrutura básica de um projeto Terraform
&lt;/li>
&lt;li>
Inicializar o Terraform (&lt;code>terraform init&lt;/code>)
&lt;/li>
&lt;li>
Criar e aplicar um recurso real na GCP (um **bucket no Cloud Storage**)
&lt;/li>
&lt;/ul>
&lt;h2 class="wp-block-heading" id="estrutura-de-arquivos">Estrutura de Arquivos&lt;/h2>
&lt;p>Crie uma pasta para seu projeto e adicione os seguintes arquivos:&lt;/p></description></item><item><title>Terraform do Zero na GCP – Parte 2: Preparando o Ambiente</title><link>https://blog.merazzi.com.br/posts/2025/04/terraform-do-zero-na-gcp-parte-2-preparando-o-ambiente/</link><pubDate>Tue, 22 Apr 2025 13:00:00 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2025/04/terraform-do-zero-na-gcp-parte-2-preparando-o-ambiente/</guid><description>&lt;p>E vamos ao segundo post da série!&lt;/p>
&lt;p>Se quiser ver o que falamos no primeiro post da série onde eu falo o objetivo e como configurar o ambiente local, recomendo começar daqui:&lt;/p>
&lt;p>&lt;a href="https://blog.merazzi.com.br/terraform-dando-o-proximo-passo-criando-uma-infraestrutura-do-zero-na-gcp/" target="_blank" rel="noopener">Terraform: Dando o próximo passo – Criando uma infraestrutura do zero na GCP&lt;/a>&lt;/p>
&lt;h2 class="wp-block-heading" id="o-que-vamos-fazer-hoje">O que vamos fazer hoje:&lt;/h2>
&lt;ul class="wp-block-list">
&lt;li>
Criar um projeto na GCP
&lt;/li>
&lt;/ul>
&lt;blockquote class="wp-block-quote has-dark-gray-color has-light-gray-background-color has-text-color has-background has-link-color wp-elements-29d286aec91aa60145db4c998820ea82 is-layout-flow wp-block-quote-is-layout-flow">
&lt;pre>&lt;code>Eu não vou criar aqui toda uma organização, vou criar projetos simples em uma conta pessoal, mas não vamos considerar isso como boas práticas em um ambiente corporativo, ok?
&lt;/code>&lt;/pre>
&lt;/blockquote>
&lt;ul class="wp-block-list">
&lt;li>
Criar um Service Account com permissões específicas
&lt;/li>
&lt;li>
Gerar a chave de autenticação (JSON)
&lt;/li>
&lt;li>
Configurar a variável de ambiente para o Terraform acessar a GCP
&lt;/li>
&lt;/ul>
&lt;h2 class="wp-block-heading" id="1-criando-o-projeto-na-gcp">1. Criando o projeto na GCP&lt;/h2>
&lt;ul class="wp-block-list">
&lt;li>
Acesse o [Console da GCP](https://console.cloud.google.com/)
&lt;/li>
&lt;li>
Clique no seletor de projetos (canto superior esquerdo) > **Novo Projeto**
&lt;/li>
&lt;/ul>&lt;figure class="wp-block-image size-full">
&lt;p>&lt;img loading="lazy" src="https://blog.merazzi.com.br/images/2025/04/image.png"> &lt;/figure> &lt;img loading="lazy" src="https://blog.merazzi.com.br/images/2025/04/image-1.png">&lt;/p></description></item><item><title>Terraform: Dando o próximo passo – Criando uma infraestrutura do zero na GCP</title><link>https://blog.merazzi.com.br/posts/2025/04/terraform-dando-o-pr%C3%B3ximo-passo-criando-uma-infraestrutura-do-zero-na-gcp/</link><pubDate>Mon, 21 Apr 2025 13:51:08 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2025/04/terraform-dando-o-pr%C3%B3ximo-passo-criando-uma-infraestrutura-do-zero-na-gcp/</guid><description>&lt;h2 class="wp-block-heading" id="disclaimer">Disclaimer&lt;/h2>
&lt;p>Como se trata de uma séria de posts, vou deixar aqui os links conforme formos avançando em cada tópico discutido.&lt;/p>
&lt;ol class="wp-block-list">
&lt;li>
Introdução (Este post)
&lt;/li>
&lt;li>
[Preparando o Ambiente](https://blog.merazzi.com.br/terraform-do-zero-na-gcp-parte-2-preparando-o-ambiente/)
&lt;/li>
&lt;/ol>
&lt;h2 id="introducao.wp-block-heading">Introdução&lt;/h2>
&lt;p>Este é o segundo post onde falo sobre o uso do Terraform para criação de uma infraestrutura usando código (o famoso &lt;em>IaC&lt;/em>). Se você não viu o primeiro post (feito em 2022!!), recomendo a leitura para instalar e preparar o ambiente local (calma… Chegaremos na nuvem – espero):&lt;/p></description></item><item><title>Implementação do MinIO com Buckets Separados</title><link>https://blog.merazzi.com.br/posts/2025/04/implementa%C3%A7%C3%A3o-do-minio-com-buckets-separados/</link><pubDate>Wed, 16 Apr 2025 23:53:01 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2025/04/implementa%C3%A7%C3%A3o-do-minio-com-buckets-separados/</guid><description>&lt;hr>
&lt;p>Tenho brincado consideravelmente com o MinIO nesses últimos tempos – afinal, né… Pra que usar cloud onde está tudo na mão se eu posso complicar um pouco fazendo tudo no braço?&lt;/p>
&lt;p>Enfim… Me deparei com uma situação aqui e tinha guardado anotado no meu Obsdian, mas achei interessante para colocar aqui no blog (que eu não sei se ainda faz algum sentido manter, para falar bem a verdade).&lt;/p>
&lt;p>Qual a ideia:&lt;/p></description></item><item><title>Recomeçando? De novo?</title><link>https://blog.merazzi.com.br/posts/2024/10/recome%C3%A7ando-de-novo/</link><pubDate>Fri, 04 Oct 2024 03:53:18 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2024/10/recome%C3%A7ando-de-novo/</guid><description>&lt;p>&lt;img loading="lazy" src="https://blog.merazzi.com.br/images/2024/10/image.png">&lt;/p>
&lt;p>Tentativa número 9.763.028 de recomeçar com o blog…&lt;/p>
&lt;p>É como dizem por aí:&lt;/p>
&lt;blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
&lt;pre>&lt;code>Até um pé na bunda te leva para frente!
&lt;/code>&lt;/pre>
&lt;/blockquote>
&lt;p>Depois da minha saída da Dataside (mais sobre isso, algum dia – ou não), com tempo para refletir sobre algumas coisas, está na hora de retomar as rédeas…&lt;br>
E vamos começar por aqui, porque não? Há mais de 1 ano sem publicar nada, mas com mais de 45 posts no rascunho ou simplesmente arquivados, seja porque não achei que o texto estava bom o suficiente, ou que o assunto não era tão necessário e relevante (afinal, porque postar algo que você encontra em menos de 5 minutos pesquisando no Google?) ou porque simplesmente não tive paciência para terminar – Tava ficando massa a série de estudos sobre a GCP Data Engineer Professional, sério – está na hora de tirar a poeira e as teias de aranha daqui e voltar a escrever.&lt;/p></description></item><item><title>Usando CTE’s recursivas para retornar ‘ranges’ distintos por registro</title><link>https://blog.merazzi.com.br/posts/2023/08/usando-ctes-recursivas-para-retornar-ranges-distintos-por-registro/</link><pubDate>Sun, 27 Aug 2023 00:00:00 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2023/08/usando-ctes-recursivas-para-retornar-ranges-distintos-por-registro/</guid><description>&lt;p>99,99999% das pessoas que trabalham com banco de dados tem ao menos uma tabela que tem duas colunas: Data de ínicio e data de fim (estatística baseada em mero chute, sem embasamento algum).&lt;br>
A questão é:&lt;/p>
&lt;blockquote>
&lt;p>Eu tenho essa data de início e data de fim, como eu faço para retornar, em linhas distintas, o range que compreende essas datas?&lt;/p>&lt;/blockquote>
&lt;p>Seria algo como:&lt;br>
&lt;img loading="lazy" src="https://blog.merazzi.com.br/images/2018/02/Range01.png"> O que eu preciso: retornar, &lt;strong>em uma coluna&lt;/strong>, o período (dias, semanas, meses, anos) que compreende as datas iniciais e finais.&lt;br>
Para isso, vamos usar o conceito de CTE’s (Common Table Expressions) recursivas.&lt;/p></description></item><item><title>ForbiddenByRbac: Acessando as secrets do Azure Key Vault no Databricks, via RBAC</title><link>https://blog.merazzi.com.br/posts/2023/06/forbiddenbyrbac-acessando-as-secrets-do-azure-key-vault-no-databricks-via-rbac/</link><pubDate>Sun, 04 Jun 2023 03:15:58 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2023/06/forbiddenbyrbac-acessando-as-secrets-do-azure-key-vault-no-databricks-via-rbac/</guid><description>&lt;p>Ao integrar o Databricks com o Azure Key Vault (Vou chamar apenas de AKV, ok?) via secret scopes, estava passando por uma situação curiosa:&lt;figure class="wp-block-image size-full">&lt;/p>
&lt;p>&lt;img loading="lazy" src="https://blog.merazzi.com.br/images/2023/06/image-1.png"> &lt;/figure>&lt;/p>
&lt;p>(se achar que vale um post sobre como configurar o Databricks para acessar as secrets do AKV, só falar… Eu providencio 😉 )&lt;/p>
&lt;p>Eu conseguia listar os escopos, mas não conseguia listar as secrets. Durante o debug via CLI, me dava erro informando que a permissão não tinha sido dada adequadamente. &lt;figure class="wp-block-image size-large">&lt;/p></description></item><item><title>Integration Runtime: Access to [IR self-hosted Local Path] is not allowed.</title><link>https://blog.merazzi.com.br/posts/2023/05/integration-runtime-access-to-ir-self-hosted-local-path-is-not-allowed./</link><pubDate>Thu, 18 May 2023 00:48:33 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2023/05/integration-runtime-access-to-ir-self-hosted-local-path-is-not-allowed./</guid><description>&lt;p>E aí pessoal!&lt;/p>
&lt;p>Vamos de Integration Runtime novamente? 🙂&lt;/p>
&lt;p>De uns tempos para cá, o Data Factory e o Synapse começaram a gerar alguns erros ao criar um &lt;em>Integration Runtime Self-Hosted&lt;/em>, quando criamos um Linked Service do tipo File System, apontado para um pasta local no sistema de arquivos:&lt;figure class="wp-block-image aligncenter size-large is-resized is-style-default">&lt;/p>
&lt;p>&lt;img loading="lazy" src="https://blog.merazzi.com.br/images/2023/05/IR_v_5.28.8488.1-1024x231.png"> &lt;figcaption class="wp-element-caption">IR Self-hosted devidamente configurado…&lt;/figcaption>&lt;/figure> &lt;img loading="lazy" src="https://blog.merazzi.com.br/images/2023/05/01_Linked_Service-1.png">&lt;figcaption class="wp-element-caption">Configuração do Linked Service&lt;/figcaption> &lt;img loading="lazy" src="https://blog.merazzi.com.br/images/2023/05/02_Linked_Service_error-1.png">&lt;figcaption class="wp-element-caption">Erro ao testar a conexão&lt;/figcaption>&lt;/p>
&lt;p>Anteriormente, esse era um processo que funcionava normalmente… Para resolver, temos duas opções.&lt;/p></description></item><item><title>GCP Data Engineer Certification: A série</title><link>https://blog.merazzi.com.br/posts/2023/05/gcp-data-engineer-certification-a-s%C3%A9rie/</link><pubDate>Mon, 01 May 2023 19:32:20 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2023/05/gcp-data-engineer-certification-a-s%C3%A9rie/</guid><description>&lt;p>Fala pessoal, belezinha?&lt;/p>
&lt;p>A ideia aqui é indexar os posts relacionados aos estudos para a certificação de Data Engineer Professional, da Google.&lt;/p>
&lt;p>Vamos a algumas observações:&lt;/p>
&lt;ol class="wp-block-list">
&lt;li>
Não esperem nada muito detalhado aqui. Para isso, **RTFM** (tá aí uma ideia de adesivo para fazer e colocar no laptop).
&lt;/li>
&lt;li>
**Não me perguntem sobre atalhos ou dumps**. Quem me conhece, sabe a minha opinião a respeito. Façam suas mutretas para isso e se virem, beleza?
&lt;/li>
&lt;li>
Ainda estou pensando no melhor formato. Fazer como fiz no Obsidian, criando um mapa mental, ou manter uma lista e linkar o que for necessário no github. Nesse primeiro momento, vou no mais fácil. A lista. Mas sim, isso pode (e deve) mudar a qualquer momento.
&lt;/li>
&lt;li>
Eu pretendo deixar essa página bem concisa. Só com os links. Espero que dê certo.
&lt;/li>
&lt;li>
Em cada um dos posts, eu **pretendo** colocar os links de referências.
&lt;/li>
&lt;/ol>
&lt;ol class="wp-block-list" start="0">
&lt;li>
Preparação
&lt;/li>
&lt;li>
Fundamentos
&lt;/li>
&lt;li>
IAM
&lt;/li>
&lt;li>
Storage
&lt;/li>
&lt;li>
Database
&lt;/li>
&lt;li>
Produtos &lt;ul class="wp-block-list">
&lt;li>
Cloud SQL
&lt;/li>
&lt;li>
Cloud Spanner
&lt;/li>
&lt;li>
Firestore
&lt;/li>
&lt;li>
BigTable
&lt;/li>
&lt;li>
Dataflow
&lt;/li>
&lt;li>
BigQuery
&lt;/li>
&lt;li>
Dataproc
&lt;/li>
&lt;li>
Composer
&lt;/li>
&lt;li>
Data Fusion
&lt;/li>
&lt;li>
Cloud Data Loss Prevention
&lt;/li>
&lt;li>
Data Catalog
&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
Machine Learning &lt;ul class="wp-block-list">
&lt;li>
&amp;#8230;.
&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ol></description></item><item><title>Reconfigurando o Integration Runtime Self-hosted, para usar em outro Data Factory (ou no Synapse Pipelines)</title><link>https://blog.merazzi.com.br/posts/2023/03/reconfigurando-o-integration-runtime-self-hosted-para-usar-em-outro-data-factory-ou-no-synapse-pipelines/</link><pubDate>Fri, 31 Mar 2023 22:34:01 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2023/03/reconfigurando-o-integration-runtime-self-hosted-para-usar-em-outro-data-factory-ou-no-synapse-pipelines/</guid><description>&lt;p>Como sabemos (sabemos, né?), para você acessar recursos do seu ambiente on-premise, é necessário instalar e configurar o &lt;em>Integration Runtime self-hosted&lt;/em> em uma máquina com acesso à rede, para que ele sirva de gateway para a Azure e, assim, seja possível buscar os dados necessários.&lt;/p>
&lt;p>Após realizar a instalação do aplicativo, é necessário fornecer a chave de acesso do Data Factory, para que seja estabelecida a conexão entre os ambientes:&lt;figure class="wp-block-image aligncenter size-full is-resized">&lt;/p></description></item><item><title>Instalando o Terraform e criando seu primeiro objeto no Azure</title><link>https://blog.merazzi.com.br/posts/2022/08/instalando-o-terraform-e-criando-seu-primeiro-objeto-no-azure/</link><pubDate>Tue, 02 Aug 2022 08:00:00 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2022/08/instalando-o-terraform-e-criando-seu-primeiro-objeto-no-azure/</guid><description>&lt;p>Hoje vamos dar os primeiros passos no mundo da &lt;em>Infraestrutura como um Código&lt;/em>, a.k.a. &lt;em>IaC&lt;/em>, fazendo a instalação local do &lt;a href="https://www.terraform.io/" target="_blank" rel="noopener">Terraform&lt;/a>, autenticando no Azure via cli e criando o primeiro objeto no Azure.&lt;/p>
&lt;p>O Terraform faz uso do HCL (&lt;em>Hashicorp Configuration Language&lt;/em>) e a sua sintaxe foi muito baseada na &lt;em>&lt;a rel="noreferrer noopener" href="https://github.com/vstakhov/libucl" target="_blank">libucl&lt;/a>&lt;/em>.&lt;/p>
&lt;p>Para falar sobre o Terraform (como funciona, detalhes, componentes, divisões, etc), eu poderia criar uma série apenas para isso, mas não é a ideia aqui. Vamos colocar a mão na massa direto.&lt;/p></description></item><item><title>Databricks Certified Data Analyst Associate</title><link>https://blog.merazzi.com.br/posts/2022/07/databricks-certified-data-analyst-associate/</link><pubDate>Sun, 10 Jul 2022 13:45:34 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2022/07/databricks-certified-data-analyst-associate/</guid><description>&lt;p>&lt;img loading="lazy" src="https://blog.merazzi.com.br/images/2022/07/Associate-badge-analyst-1-1-216x300.png">&lt;/p>
&lt;p>Ontem resolvi fazer a primeira prova “de verdade” da Databricks (entre aspas, pois essa é uma prova monitorada, nos mesmos moldes de uma prova da Microsoft por exemplo – a Databricks Accreditation não é monitorada).&lt;/p>
&lt;p>Para essa prova, segui unicamente a trilha de estudos existentes na plataforma deles. Consegui o acesso há algum tempo, quando eles estavam distribuindo os cursos, mas a prova foi liberada há pouco tempo.&lt;/p>
&lt;p>E_dit:_ Seguem os cursos e o link para o learning plan:&lt;/p></description></item><item><title>Github dos meus estudos para a prova Astronomer: Apache Airflow Fundamentals</title><link>https://blog.merazzi.com.br/posts/2022/05/github-dos-meus-estudos-para-a-prova-astronomer-apache-airflow-fundamentals/</link><pubDate>Sun, 01 May 2022 05:13:37 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2022/05/github-dos-meus-estudos-para-a-prova-astronomer-apache-airflow-fundamentals/</guid><description>&lt;p>E hoje, primeiro de maio, &lt;a rel="noopener" href="https://pt.wikipedia.org/wiki/Dia_do_Trabalhador" target="_blank">dia do trabalho&lt;/a> (ou do trabalhador?), madrugada de sábado para domingo, eu resolvi finalmente fazer a prova de &lt;a href="https://academy.astronomer.io/astronomer-certification-apache-airflow-fundamentals-preparation" target="_blank" rel="noopener">Fundamentals &lt;/a>de &lt;a href="http://airflow.apache.org" target="_blank" rel="noopener">Airflow&lt;/a>, aplicado pela &lt;a rel="noopener" href="http://astronomer.io" target="_blank">Astronomer&lt;/a>.&lt;/p>
&lt;p>Já faz algum tempo que eu tenho usado/praticado a ferramenta e vou dizer que foi o Airflow que me fez aumentar o meu interesse por Python cada vez mais. Acho que das ferramentas de orquestração, depois do Data Factory, foi a ferramenta que eu mais me envolvi.&lt;/p></description></item><item><title>Um novo recomeço…</title><link>https://blog.merazzi.com.br/posts/2022/04/um-novo-recome%C3%A7o/</link><pubDate>Wed, 27 Apr 2022 02:51:26 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2022/04/um-novo-recome%C3%A7o/</guid><description>&lt;p>Falaí pessoal, tudo belezinha?&lt;br>
Faz tempo, né?&lt;/p>
&lt;p>Bom, estou voltando a escrever aqui, depois de mais de 2 anos de hiato.&lt;br>
Nesse meio tempo, eu comecei a escrever pelo menos uns 15 ou 20 posts, que foram arquivados por vários motivos e que, sinceramente, não sei se um dia verão a luz da internet.&lt;br>
De qualquer forma, a ideia aqui vai ser voltar a escrever de tudo um pouco relacionado sobre o que tenho feito… Daquelas dicas super simples (para eu consultar quando me esquecer), até aquelas que são só simples mesmo, pois as intermediárias e avançadas a gente não sabe se vai conseguir escrever (esse foi um dos motivos que me fez não publicar mais nada, &lt;em>tbh&lt;/em>), hehehe.&lt;/p></description></item><item><title>Separar texto com ‘;’ em ‘n’ colunas</title><link>https://blog.merazzi.com.br/posts/2019/11/separar-texto-com-em-n-colunas/</link><pubDate>Tue, 12 Nov 2019 04:47:51 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2019/11/separar-texto-com-em-n-colunas/</guid><description>&lt;p>E aí pessoal, tudo belezinha com vocês? Segue um post rápido, só para registrar um assunto que rolou em um grupo de discussão do Telegram há algum tempo atrás e só agora eu resolvi parar para escrever a respeito…&lt;/p>
&lt;p>Pense no seguinte cenário:&lt;/p>
&lt;p>Eu tenho uma tabela onde uma das colunas é um campo texto (varchar(XXX)), separado por ‘;’ (ou qualquer outro caractere de sua preferência).&lt;/p>
&lt;p>Mas porque eu teria isso? Bom, imagine que você crie uma trigger para a fazer sua auditoria e, ao invés de guardar em colunas, você guarda em um varchar as alterações…&lt;/p></description></item><item><title>SQL Saturday Caxias do Sul 2019 #SQLSat834</title><link>https://blog.merazzi.com.br/posts/2019/06/sql-saturday-caxias-do-sul-2019-%23sqlsat834/</link><pubDate>Wed, 26 Jun 2019 04:53:51 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2019/06/sql-saturday-caxias-do-sul-2019-%23sqlsat834/</guid><description>&lt;p>Antes tarde do que mais tarde, né…&lt;/p>
&lt;p>E já adianto, esse vai ser um post bem no &lt;em>hype&lt;/em> do evento ainda, então vai ter elogios para todos os lados… 🙂&lt;/p>
&lt;p>No dia 22/06 foi realizada mais uma edição do &lt;a href="https://www.sqlsaturday.com/834/EventHome.aspx" target="_blank" rel="noopener">SQL Saturday, em Caxias do Sul&lt;/a>. Fui em todas as edições realizadas e essa foi a minha segunda vez como palestrante.&lt;br>
A primeira palavra que eu usaria para descrever o evento é impublicável, então vamos com a segunda: **Fantástico!&lt;br>
** Cheguei na sexta-feira, onde, pela primeira vez, participei de um &lt;em>speakers dinner&lt;/em>. Sentar à mesa com alguns dos profissionais mais relevantes da comunidade, trocar ideias, dar umas boas risadas é algo indescritível. De verdade.&lt;br>
Agora, sobre o evento…&lt;br>
A atenção dos organizadores e das pessoas que apoiaram durante todo o dia – incansavelmente – é um caso à parte. Todo o esforço e o cuidado para que todos nós nos sentíssemos realmente em casa (palestrantes e quem estava assistindo), e pudéssemos aproveitar ao máximo o dia, foi realmente admirável.&lt;/p></description></item><item><title>Power BI: Como ordenar uma coluna, que não seja por ordem alfabética</title><link>https://blog.merazzi.com.br/posts/2019/03/power-bi-como-ordenar-uma-coluna-que-n%C3%A3o-seja-por-ordem-alfab%C3%A9tica/</link><pubDate>Sun, 24 Mar 2019 11:05:10 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2019/03/power-bi-como-ordenar-uma-coluna-que-n%C3%A3o-seja-por-ordem-alfab%C3%A9tica/</guid><description>&lt;p>Lá em 2014, eu escrevi esse post: &lt;a href="https://blog.merazzi.com.brpowerview-como-ordenar-uma-coluna-que-nao-seja-por-ordem-alfabetica/" target="_blank" rel="noopener">https://blog.merazzi.com.brpowerview-como-ordenar-uma-coluna-que-nao-seja-por-ordem-alfabetica/&lt;/a>, usando o Power View.&lt;/p>
&lt;p style="text-align: left;">
Normalmente a dúvida vem com a imagem de um gráfico de barras e a pergunta: &amp;#8220;Como eu faço para que os meses fiquem ordenados &amp;#8216;direito&amp;#8217;?&amp;#8221;
&lt;figure id="attachment_864" aria-describedby="caption-attachment-864" style="width: 351px" class="wp-caption aligncenter">![](/images/2019/03/grafico01.png)&lt;figcaption id="caption-attachment-864" class="wp-caption-text">Reparem na ordem dos meses&lt;/figcaption>&lt;/figure>
&lt;p>Com o uso cada vez maior do Power BI, eu notei que essa é uma dúvida meio que recorrente no grupos que eu participo e o principal motivo é: &lt;em>a ausência de uma tabela de calendário.&lt;/em> Se você não cria essa tabela em seus projetos, faça.&lt;/p>
&lt;p>Existem várias formas de configurar a ordenação… Aqui eu pretendo abordar algumas formas e problemas que podem ocorrer durante o processo.&lt;/p></description></item><item><title>SSIS: Script task para envio de e-mail</title><link>https://blog.merazzi.com.br/posts/2019/01/ssis-script-task-para-envio-de-e-mail/</link><pubDate>Thu, 03 Jan 2019 16:52:19 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2019/01/ssis-script-task-para-envio-de-e-mail/</guid><description>&lt;p>Primeiro post de 2019 e, surpreendentemente, não são as minhas metas para 2019, nem é sobre SQL Server…&lt;/p>
&lt;p>Esse post surgiu motivado por uma pergunta que apareceu no dia 27/12, num dos grupos de WhatsApp que participo.&lt;/p>
&lt;p>&lt;img loading="lazy" src="https://blog.merazzi.com.br/images/2019/01/ScriptTask_Duvida.png">&lt;/p>
&lt;p>A moral da história é que eu tenho, mas achei tão trivial a solução, que não achei que seria interessante um post sobre isso (lição aprendida). E como estava fora do PC, não tinha nem como ajudar o colega direito. Mas, agora, fica o registro.&lt;/p></description></item><item><title>Gap (pulo) no Identity, como evitar?</title><link>https://blog.merazzi.com.br/posts/2018/04/gap-pulo-no-identity-como-evitar/</link><pubDate>Fri, 27 Apr 2018 01:01:32 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2018/04/gap-pulo-no-identity-como-evitar/</guid><description>&lt;p>Desde o SQL Server 2012, o produto sofreu uma alteração no controle dos campos IDENTITY onde, logo na inicialização da instância, ele coloca em cache aproximadamente 1000 registros para agilizar o processo. Ao fazer isso, o identity é “pré-usado” internamente e o SQL se encarrega de entregar os próximos valores.&lt;/p>
&lt;p>O ‘problema’ é que, ao reinicializar a instância, o cache é perdido e ele cria um gap desses registros não utilizados.&lt;/p></description></item><item><title>‘Tail’ no Powershell, é possível?</title><link>https://blog.merazzi.com.br/posts/2018/04/tail-no-powershell-%C3%A9-poss%C3%ADvel/</link><pubDate>Sun, 15 Apr 2018 02:33:43 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2018/04/tail-no-powershell-%C3%A9-poss%C3%ADvel/</guid><description>&lt;p>Hoje participei do SQL Saturday 718, em Joinville – SC (BTW, mais um p… evento – que merece um post à parte).&lt;/p>
&lt;p>Durante a palestra do Rodrigo Crespi, sobre “Linux para DBA SQL Server”, surgiu a seguinte pergunta: Como fazer, via Powershell, para acompanhar o andamento de um log, algo como o “&lt;em>tail -f”&lt;/em> no Linux faz?&lt;/p>
&lt;p>Depois de algumas discussões, o consenso ficou no: “Faz um ‘while true’ e fica dando um Get-Content no arquivo.” A solução me doeu no ouvido, mas foi aceito e segue o baile.&lt;/p></description></item><item><title>Como inserir um relatório do Power BI no seu blog ou site</title><link>https://blog.merazzi.com.br/posts/2018/01/como-inserir-um-relat%C3%B3rio-do-power-bi-no-seu-blog-ou-site/</link><pubDate>Sun, 28 Jan 2018 19:05:09 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2018/01/como-inserir-um-relat%C3%B3rio-do-power-bi-no-seu-blog-ou-site/</guid><description>&lt;p>Um assunto recorrente nos grupos que eu participo é:&lt;/p>
&lt;blockquote>
&lt;p>Como inserir a minha dash do Power BI no meu site / blog?&lt;/p>&lt;/blockquote>
&lt;p>O processo é bem simples (tanto que pensei muito se valeria um post ou não), mas requer algumas atenções que podem dificultar a inserção.&lt;/p>
&lt;p>Para essa dash, eu usei os dados do senso escolar das instituições de ensino, divulgados pelo INEP (&lt;a href="http://portal.inep.gov.br/web/guest/dados%29" target="_blank" rel="noopener">http://portal.inep.gov.br/web/guest/dados)&lt;/a>, fiz algumas transformações no Excel e importei no Power BI Desktop.&lt;/p></description></item><item><title>Pré-post de uma dash embedded</title><link>https://blog.merazzi.com.br/posts/2018/01/pr%C3%A9-post-de-uma-dash-embedded/</link><pubDate>Sun, 28 Jan 2018 01:10:02 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2018/01/pr%C3%A9-post-de-uma-dash-embedded/</guid><description>&lt;p>Teste de uma dash do Power BI no WordPress&lt;/p>
&lt;p> &lt;/p>
&lt;p>Tks!&lt;/p></description></item><item><title>Quebrando o seu backup em ‘n’ arquivos</title><link>https://blog.merazzi.com.br/posts/2018/01/quebrando-o-seu-backup-em-n-arquivos/</link><pubDate>Sat, 20 Jan 2018 23:46:11 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2018/01/quebrando-o-seu-backup-em-n-arquivos/</guid><description>&lt;p>Participar dos grupos do Whatsapp tem muita coisa ruim (haja treta, gifs, imagens, piadas e etc para suportar), mas tem várias coisas bem boas também. E uma delas diz respeito ao aprendizado diário que a comunidade te proporciona, se você estiver inserido no grupo certo.&lt;/p>
&lt;p>Em um dos grupos do WhatsApp que eu participo, surgiu a seguinte pergunta (há um bom tempo, mas só agora resolvi escrever a respeito):&lt;/p>
&lt;blockquote>
&lt;p>“Alguém poderia me ajudar com script para compactar o backup assim que concluir o bak, usando o 7zip, winrar ou zip?”&lt;/p></description></item><item><title>70-778: Minha primeira prova de certificação Beta (e seu resultado, finalmente)</title><link>https://blog.merazzi.com.br/posts/2018/01/70-778-minha-primeira-prova-de-certifica%C3%A7%C3%A3o-beta-e-seu-resultado-finalmente/</link><pubDate>Wed, 17 Jan 2018 02:09:01 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2018/01/70-778-minha-primeira-prova-de-certifica%C3%A7%C3%A3o-beta-e-seu-resultado-finalmente/</guid><description>&lt;p>2018 começou com tudo!&lt;/p>
&lt;p>Em setembro do ano passado, divulgaram que a Microsoft estava com vouchers para a realização das provas de Power BI (e outros produtos), ainda em versão Beta.&lt;br>
As provas Beta, são provas que ainda estão passando por uma avaliação da Microsoft no que tange a qualidade das questões (descrições, opções, métodos de escolha, etc), mas que é a base para a prova oficial, quando ela for lançada para o público geral.&lt;br>
Quando eles divulgam as provas, apenas 300 vagas são disponibilizadas **no mundo todo **(essa parte é muito importante frisar, heheeh) e quem conseguir reservar primeiro, será beneficiado.&lt;br>
No final da prova, você precisa deixar os teus comentários sobre as questões, para que eles possam fazer a triagem e ver o que precisa ser refeito. Dizem que o processo todo pode levar até 8 semanas, até que se tenha o resultado da prova. Todo o processo é bem explicado nesse post, sugiro a leitura para maiores informações: &lt;a href="https://borntolearn.mslearn.net/b/weblog/posts/the-path-from-beta-exam-to-live-exam" target="_blank" rel="noopener">https://borntolearn.mslearn.net/b/weblog/posts/the-path-from-beta-exam-to-live-exam&lt;/a>&lt;br>
Enfim, a minha prova foi no dia 15/09 (&lt;em>70-778: Analyzing and Visualizing Data with Power BI (beta)&lt;/em>) e devo confessar que saí de lá com esperança de ter passado, mas não com “aquela” convicção.&lt;br>
A prova em si, foi uma prova como as outras (eu estava esperando uma prova bem diferente, não sei pq)… Mas ela estava bem detalhada em alguns pontos e mais aberta em outros. Eu curti bastante fazer. E pensar que os comentários feitos nas questões podem ajudar no rumo da prova oficial, me deixou bem animado.&lt;br>
O problema todo foram essas 8 semanas, que, pra quem fez a prova comigo, acabou em uma espera de exatos &lt;strong>4 meses&lt;/strong>!!!&lt;br>
Ah, o resultado? **APROVADO!!!! 😀&lt;br>
** Acho que de todo o processo… A reserva, a prova e toda a espera… O mais legal com esse resultado é pensar que eu sou uma das &lt;strong>primeiras 300 pessoas certificadas em Power BI no mundo!&lt;/strong>&lt;br>
Para esse ano, eu quero fazer pelo menos duas provas de SQL 2016 e uma de Azure, vamos ver como as coisas vão se encaminhar.&lt;/p></description></item><item><title>Identificando o uso de objetos ‘deprecated’ na sua instância.</title><link>https://blog.merazzi.com.br/posts/2017/08/identificando-o-uso-de-objetos-deprecated-na-sua-inst%C3%A2ncia./</link><pubDate>Thu, 31 Aug 2017 17:08:59 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2017/08/identificando-o-uso-de-objetos-deprecated-na-sua-inst%C3%A2ncia./</guid><description>&lt;p>Quick tip!&lt;/p>
&lt;p>A cada nova versão do SQL Server, novos recursos são adicionados e, claro, alguns são removidos ou marcados para futura exclusão (&lt;em>deprecated&lt;/em>). O último caso ocorre para que todos tenham tempo para validar e ajustar suas aplicações, afinal, ninguém aqui é doido de aplicar uma nova versão do SQL Server em produção sem validar se a aplicação está rodando adequadamente, né!? &lt;strong>NÉ!?!?&lt;/strong> 🙂&lt;/p>
&lt;p>Ok, mas como saber se você está usando um recurso na sua instância que está marcado como &lt;em>deprecated&lt;/em>?&lt;/p></description></item><item><title>Evitando a execução de uma trigger sem precisar desabilitá-la</title><link>https://blog.merazzi.com.br/posts/2017/08/evitando-a-execu%C3%A7%C3%A3o-de-uma-trigger-sem-precisar-desabilit%C3%A1-la/</link><pubDate>Wed, 30 Aug 2017 19:38:56 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2017/08/evitando-a-execu%C3%A7%C3%A3o-de-uma-trigger-sem-precisar-desabilit%C3%A1-la/</guid><description>&lt;p>Olá pessoal!&lt;/p>
&lt;p>Gostaria hoje de dar uma dica para quem precisa executar aquele INSERT / UPDATE / DELETE sem disparar a trigger para a tabela… &lt;strong>E sem precisar desabilitá-la!&lt;/strong>&lt;/p>
&lt;p>Observação: Você vai precisar alterar a trigger para que funcione, disso você não ter como escapar.&lt;/p></description></item><item><title>Divisão de decimal com inteiro, como ficam as casas decimais?</title><link>https://blog.merazzi.com.br/posts/2017/08/divis%C3%A3o-de-decimal-com-inteiro-como-ficam-as-casas-decimais/</link><pubDate>Thu, 03 Aug 2017 20:12:40 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2017/08/divis%C3%A3o-de-decimal-com-inteiro-como-ficam-as-casas-decimais/</guid><description>&lt;p>Surgiu a seguinte dúvida no trabalho esse dias que foi mais ou menos assim:&lt;/p>
&lt;blockquote>
&lt;p>Tenho duas colunas e estou realizando uma divisão entre elas. Qual vai ser o tipo retornado? O SQL Server segue a ordem de precedência do tipo do dado?&lt;/p>&lt;/blockquote>
&lt;p>De bate pronto, a resposta é um “Sim, ele sempre vai seguir a ordem de precedência e vai retornar o tipo de dado que você está usando que possui maior precedência.”&lt;br>
Porém (sempre tem um porém), isso não é valido para os tipos decimais.&lt;/p></description></item><item><title>Trigger: Update() no campo com o mesmo valor, é validado?</title><link>https://blog.merazzi.com.br/posts/2017/05/trigger-update-no-campo-com-o-mesmo-valor-%C3%A9-validado/</link><pubDate>Tue, 23 May 2017 15:05:16 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2017/05/trigger-update-no-campo-com-o-mesmo-valor-%C3%A9-validado/</guid><description>&lt;p>Post rápido depois de meses de inércia e blog fora do ar, agora sob novo domínio!&lt;/p>
&lt;p>Surgiu uma dúvida onde eu trabalho e eu achei interessante postar aqui um caso de exemplo para futura referência.&lt;/p>
&lt;p>A questão: “Se eu fizer um update em uma coluna, mas usando o mesmo valor, o SQL executa a trigger, ok. Mas a função UPDATE(coluna) é validada? O SQL não é inteligente o suficiente para ignorar o update, uma vez que o campo é o mesmo?”&lt;/p>
&lt;p>Se quiser parar por aqui, a resposta é um singelo e simples: &lt;strong>Não&lt;/strong>.&lt;/p>
&lt;p>Agora, se quiser ver o caso funcionando… &lt;/p></description></item><item><title>#WTF: “The UserLog directory in the registry is not valid.”</title><link>https://blog.merazzi.com.br/posts/2016/08/%23wtf-the-userlog-directory-in-the-registry-is-not-valid./</link><pubDate>Tue, 09 Aug 2016 15:26:16 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2016/08/%23wtf-the-userlog-directory-in-the-registry-is-not-valid./</guid><description>&lt;p>Essa entra pra série #WTF (Vivendo e aprendendo).&lt;/p>
&lt;p>Ao instalar o Full Text Search em um dos nossos servidores, me deparei com o warning a seguir:&lt;/p>
&lt;figure id="attachment_470" aria-describedby="caption-attachment-470" style="width: 619px" class="wp-caption aligncenter">![](/images/2016/08/ERRO1.png)&lt;figcaption id="caption-attachment-470" class="wp-caption-text">What!?&lt;/figcaption>&lt;/figure>
&lt;blockquote>
&lt;p>The User Log directory in the registry is not valid. Verify DefaultLog Key under the instance hive points to a valid directory&lt;/p>&lt;/blockquote></description></item><item><title>Valide seus backups com a prRestore</title><link>https://blog.merazzi.com.br/posts/2016/07/valide-seus-backups-com-a-prrestore/</link><pubDate>Wed, 06 Jul 2016 18:52:51 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2016/07/valide-seus-backups-com-a-prrestore/</guid><description>&lt;p>EDIT&lt;/p>
&lt;p>O script foi atualizado! Versão 2.0 saindo do forno!!&lt;/p>
&lt;p>Agora é possível usar o script para restaurar o último diferencial criado também… E os logs, obviamente, respeitarão a opção. &lt;a href="https://github.com/LoganMerazzi/SQLServerScripts/blob/master/prRestore_2_0.sql" target="_blank" rel="noopener">Baixe aqui&lt;/a>!&lt;/p>
&lt;p>FIM DO EDIT&lt;/p>
&lt;p>Se você perguntar para “N” profissionais qual o principal bem das empresas, a resposta será praticamente a mesma: Os dados que ela possui (e se você achava que era o próprio funcionário, sinto te desiludir).&lt;br>
E para garantir que os seus dados estejam sempre prontos para serem recuperados em caso de desastre, basta você fazer o backup dela periodicamente, seguindo uma politica que te permita recuperá-la em um ponto no tempo (eu recomendo ler sobre a &lt;a href="https://edvaldocastro.com/free-script-sp_backup-gerencie-suas-rotinas-de-modo-facil-e-objetivo/" target="_blank" rel="noopener">procedure criada pelo Edvaldo Cast&lt;/a>ro sobre o assunto), correto??&lt;/p></description></item><item><title>Restaurando um banco apenas com o .mdf</title><link>https://blog.merazzi.com.br/posts/2016/05/restaurando-um-banco-apenas-com-o-.mdf/</link><pubDate>Tue, 24 May 2016 19:30:24 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2016/05/restaurando-um-banco-apenas-com-o-.mdf/</guid><description>&lt;p>Surgiu uma solicitação para eu restaurar um banco. Até aí, tudo ok, é um processo normal. RESTORE DATABASE Blábláblá, permissões dadas e assunto encerrado.&lt;br>
Ao ver o arquivo, havia apenas um .mdf. Ou seja, não é mais um restore, é um ATTACH. Seria outro processo normal também… Se existissem os arquivos de log (.ldf).&lt;/p>
&lt;p>Ao tentar restaurar, o seguinte erro surgiu:&lt;/p>
&lt;blockquote>
&lt;p>File activation failure. The physical file name “C:\Caminho\Original\do\banco\arquivo_log.LDF” may be incorrect.&lt;/p>
&lt;p>The log cannot be rebuilt because there were open transactions/users when the database was shutdown, no checkpoint occurred to the database, or the database was read-only. This error could occur if the transaction log file was manually deleted or lost due to a hardware or environment failure.&lt;/p>&lt;/blockquote>
&lt;p>Mas vamos lá, passo a passo, para vermos os problemas que podem aparecer e como resolver.&lt;/p></description></item><item><title>Acessando um banco MySQL pelo SQL Server via Linked Server</title><link>https://blog.merazzi.com.br/posts/2015/11/acessando-um-banco-mysql-pelo-sql-server-via-linked-server/</link><pubDate>Mon, 16 Nov 2015 15:06:51 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2015/11/acessando-um-banco-mysql-pelo-sql-server-via-linked-server/</guid><description>&lt;p>Surgiu uma demanda onde era necessário migrar algumas tabelas de alguns bancos em MySQL para dentro do SQL Server e tínhamos disponível apenas o backup (a.k.a. &lt;em>dump&lt;/em>) dos bancos de origem.&lt;/p>
&lt;p>Realizar o tratamento do arquivo (manualmente) para que fosse possível criar os bancos e inserir os dados estava fora de cogitação. Como temos uma VM com o Linux (Ubuntu) e com o MySQL instalado, optei por realizar a criação de um Linked Server entre os dois servidores.&lt;/p></description></item><item><title>Tratamento de Exceções. Parte 2</title><link>https://blog.merazzi.com.br/posts/2015/11/tratamento-de-exce%C3%A7%C3%B5es.-parte-2/</link><pubDate>Tue, 10 Nov 2015 14:05:12 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2015/11/tratamento-de-exce%C3%A7%C3%B5es.-parte-2/</guid><description>&lt;p>Essa é a parte 2 de uma série de 3 posts (ou 4, quem sabe), onde eu quero falar sobre as formas de realizar o tratamento de exceções no SQL Server.&lt;/p>
&lt;p>Se você caiu aqui por acaso, sugiro antes dar uma olhada na &lt;a href="http://blog.merazzi.eti.br/?p=390" target="_blank" rel="noopener">parte 1 da série&lt;/a>, onde eu trato de alguns detalhes no que diz respeito à forma que o SQL Server realiza o encerramento de processos, nos casos de erro.&lt;/p>
&lt;p>Hoje irei falar sobre como realizar o tratamento de exceções, via &lt;em>TRY / CATCH&lt;/em>.&lt;/p></description></item><item><title>Introdução ao tratamento de Exceções</title><link>https://blog.merazzi.com.br/posts/2015/11/introdu%C3%A7%C3%A3o-ao-tratamento-de-exce%C3%A7%C3%B5es/</link><pubDate>Tue, 03 Nov 2015 14:00:18 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2015/11/introdu%C3%A7%C3%A3o-ao-tratamento-de-exce%C3%A7%C3%B5es/</guid><description>&lt;p>O seu código vai dar erro. Isso é um fato. Mesmo que seja a pessoa mais cuidadosa do mundo, você tem que preparar o seu código para o pior: O bug! Até porque no momento que os erros aparecerem, você vai precisar verificar o que está ocorrendo e ajustar da forma mais rápida possível.&lt;br>
E tem outra: Ninguém gosta de rodar uma aplicação e dar de cara com uma tela exibindo o &lt;em>stack&lt;/em> do erro.&lt;br>
E para isso, você deve tratar as exceções que o teu código pode gerar.&lt;/p>
&lt;p>Mas antes de entrar no assunto de tratamento de erros, primeiramente, gostaria de alinhar algumas ideias…&lt;/p>
&lt;p>Esse será o primeiro de uma série de 2 ou 3 posts, veremos como ficará o próximo, pois este já ficou consideravelmente grande.&lt;/p></description></item><item><title>Alterando o schema de objetos em lote</title><link>https://blog.merazzi.com.br/posts/2015/10/alterando-o-schema-de-objetos-em-lote/</link><pubDate>Wed, 28 Oct 2015 03:00:34 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2015/10/alterando-o-schema-de-objetos-em-lote/</guid><description>&lt;p>Não vou entrar aqui no mérito do que são os &lt;em>schemas&lt;/em> e como especificamos (deixemos isso para um outro momento).&lt;br>
Quero apenas deixar o seguinte cenário:&lt;br>
Um usuário criou uma série de scripts e, ao aplicá-lo no banco, todos os objetos ficaram com o nome do usuário no &lt;em>schema&lt;/em>: &lt;em>usuário.procedure, usuario.function, usuario.table&lt;/em>&lt;/p>
&lt;blockquote>
&lt;p>&lt;em>Como ajustar isso, sem que seja necessário abrir cada objeto individualmente e colocar no&lt;/em> schema &lt;em>correto (vamos usar o&lt;/em> schema &lt;em>dbo aqui, para simplificar as coisas)?&lt;/em>&lt;/p>&lt;/blockquote></description></item><item><title>Renomeando um Profile ou Account Name (Database Mail)</title><link>https://blog.merazzi.com.br/posts/2015/10/renomeando-um-profile-ou-account-name-database-mail/</link><pubDate>Thu, 01 Oct 2015 18:35:19 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2015/10/renomeando-um-profile-ou-account-name-database-mail/</guid><description>&lt;p>Muito provavelmente, para utilizar o Database Mail dentro do SQL Server você utilizou a interface gráfica…&lt;/p>
&lt;p>Criou o profile, a conta, ativou como público (né, fala a verdade…) e manteve as opções padrão.&lt;/p>
&lt;p>Os e-mails estão sendo enviados normalmente, até que surge a necessidade de criar um outro profile. Como o nome ficou parecido, você resolve ir nas configurações do database mail e mudar o nome do profile anterior:&lt;br>
Botão direito em &lt;em>Database Mail&lt;/em> -&amp;gt; &lt;em>Configure Database Mail&lt;/em> -&amp;gt; &lt;em>View, Change, or delete an existing Profile&lt;/em>, seleciona o profile desejado e… &lt;a href="http://sadtrombone.com/" target="_blank" rel="noopener">fuéfuéfué&lt;/a>… Como altera o nome?&lt;/p></description></item><item><title>“Login failed for user ‘NT Authority\ANONYMOUS LOGON’ ” ao criar um Linked Server</title><link>https://blog.merazzi.com.br/posts/2015/07/login-failed-for-user-nt-authority%5Canonymous-logon-ao-criar-um-linked-server/</link><pubDate>Fri, 31 Jul 2015 20:02:05 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2015/07/login-failed-for-user-nt-authority%5Canonymous-logon-ao-criar-um-linked-server/</guid><description>&lt;p>Ao criar um &lt;em>Linked Server&lt;/em> entre dois servidores com SQL Server 2008, via &lt;em>Windows Authentication,&lt;/em> me deparei com o erro abaixo:&lt;/p>
&lt;p>&lt;img loading="lazy" src="https://blog.merazzi.com.br/images/2015/07/Post_LnkSrvr1.png">&lt;/p>
&lt;p>Dando uma &lt;del>Googleada&lt;/del> investigada, li que poderia ser por causa da delegação via Kerberos não estar funcionando. O nome do “cara”: &lt;strong>Kerberos constrained delegation.&lt;/strong>&lt;/p></description></item><item><title>Usando o Some | Any | All</title><link>https://blog.merazzi.com.br/posts/2015/07/usando-o-some-any-all/</link><pubDate>Fri, 10 Jul 2015 14:02:49 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2015/07/usando-o-some-any-all/</guid><description>&lt;p>Olhando os operadores lógicos do SQL Server (&lt;a href="https://msdn.microsoft.com/pt-br/library/ms189773%28v=sql.120%29.aspx" target="_blank" rel="noopener">link&lt;/a>), me deparei com algo curioso, que até então não tinha visto: os operadores Some, Any e All que, vejam só, está disponível desde do SQL Server 2008. #facepalm&lt;/p>
&lt;p>O objetivo deles: Comparar um valor escalar (lembrem-se disso) com os valores de um dataset (a.k.a. subquery). O ALL validará se TODOS os valores do dataset correspondem ao valor comparado. O SOME e o ANY são equivalentes, eles retornaram TRUE se algum dos valores do dataset corresponder à comparação.&lt;br>
Se você ouviu um IN na explicação, pense nele como um IN com esteroides para um valor escalar, uma vez que você pode validar com os operadores =, &amp;lt;, &amp;gt;, &amp;lt;&amp;gt;, etc.&lt;/p></description></item><item><title>Escapando caracteres usando o ESCAPE</title><link>https://blog.merazzi.com.br/posts/2015/07/escapando-caracteres-usando-o-escape/</link><pubDate>Tue, 07 Jul 2015 16:11:59 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2015/07/escapando-caracteres-usando-o-escape/</guid><description>&lt;p>Pessoal, aproveitando para tirar um pouco a poeira, uma dica rápida que surgiu no trabalho hoje…&lt;/p>
&lt;p>Como sabemos (sabemos, né?), temos alguns caracteres que são chamados de coringas, para facilitar a busca por um padrão.&lt;br>
Não vou explicar aqui o que cada um faz, mas eles são: %, _ , [], [^]&lt;/p>
&lt;p>&lt;strong>O problema&lt;/strong>: Quero pesquisar na minha tabela por todas as linhas que comecem com [OK]. Porém, se eu fizer um simples &lt;em>WHERE Coluna like ‘[OK]%’&lt;/em> (um exemplo esdrúxulo, mas que mantém o fluxo do raciocínio), a consulta vai me retornar todas as linhas que comecem com O ou com K e o que houver mais nesse registro, o que não é bem o que queremos.&lt;/p></description></item><item><title>Gerando scripts DDL no Visual Studio 2013</title><link>https://blog.merazzi.com.br/posts/2015/04/gerando-scripts-ddl-no-visual-studio-2013/</link><pubDate>Wed, 15 Apr 2015 13:14:05 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2015/04/gerando-scripts-ddl-no-visual-studio-2013/</guid><description>&lt;p>_Eu ainda sou adepto da criação dos scripts pelo editor, principalmente pelo fato que “de vez em quando” o SSMS resolve dropar toda a tabela e criar uma nova estrutura, só porque você resolveu mudar uma coluna que é not null para null (por exemplo). _&lt;/p>
&lt;p>Mas segue uma dica para quem curte usar o modo design no SSMS e, por algum motivo qualquer, precisou usar o Visual Studio para realizar alguma manutenção no banco e não achou como gerar os scripts de forma fácil…&lt;/p></description></item><item><title>Dicionário de Dados – A Exclusão.</title><link>https://blog.merazzi.com.br/posts/2015/03/dicion%C3%A1rio-de-dados-a-exclus%C3%A3o./</link><pubDate>Thu, 19 Mar 2015 17:30:58 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2015/03/dicion%C3%A1rio-de-dados-a-exclus%C3%A3o./</guid><description>&lt;p>Um dos meus papéis dentro da empresa onde trabalho é o de &lt;del>ser chato e&lt;/del> verificar os scripts que são enviados antes de entrar em produção.&lt;/p>
&lt;p>Uma parte das verificações é garantir que o dicionário de dados esteja o mais atualizado possível para que consigamos entender o objetivos das tabelas, colunas, constraints, etc.&lt;/p>
&lt;p>Para inserir uma propriedade em um objeto, deve ser utilizada a procedure &lt;a href="http://msdn.microsoft.com/pt-br/library/ms180047.aspx" target="_blank" rel="noopener">sp_addextendedproperty&lt;/a>. Para remover: &lt;a href="http://msdn.microsoft.com/en-us/library/ms178595.aspx" target="_blank" rel="noopener">sp_dropextendedproperty&lt;/a>. E para atualizar: &lt;a href="http://msdn.microsoft.com/pt-br/library/ms186885.aspx" target="_blank" rel="noopener">sp_updateextendedproperty&lt;/a>. Não vou entrar no mérito de como usar, pois o BOL (Books On Line – RTFM!) explica bem como usar e os parâmetros necessários.&lt;/p></description></item><item><title>Powerview: Como ordenar uma coluna, que não seja por ordem alfabética.</title><link>https://blog.merazzi.com.br/posts/2014/11/powerview-como-ordenar-uma-coluna-que-n%C3%A3o-seja-por-ordem-alfab%C3%A9tica./</link><pubDate>Wed, 05 Nov 2014 11:45:09 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2014/11/powerview-como-ordenar-uma-coluna-que-n%C3%A3o-seja-por-ordem-alfab%C3%A9tica./</guid><description>&lt;p>Um dos desafios que tive recentemente (e bem básico, diga-se de passagem, para uma pessoa mais experiente), foi a necessidade de ordenar uma tabela, mas que não poderia seguir a ordem alfabética padrão do PowerView.&lt;/p>
&lt;p>Um exemplo clássico: Uma tabela  onde eu tenho os meses de um ano e eu preciso ordenar pelo nome do mês, mas seguindo a sequência dos meses (Jan, Fev, Mar, etc.).&lt;/p>
&lt;p>A questão: Se eu simplesmente ordenar pelo nome do mês, o resultado que eu vou obter será: Abril, Agosto, Dezembro, Fevereiro, Janeiro, Julho, Junho, Maio, Março, Novembro, Outubro, Setembro.&lt;/p></description></item><item><title>Qual o percentual de andamento do meu Backup / Restore?</title><link>https://blog.merazzi.com.br/posts/2014/06/qual-o-percentual-de-andamento-do-meu-backup-/-restore/</link><pubDate>Tue, 10 Jun 2014 13:01:59 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2014/06/qual-o-percentual-de-andamento-do-meu-backup-/-restore/</guid><description>&lt;p>Quando você executa um Backup / Restore pelo SSMS, você tem facilmente o percentual de andamento indo na aba “Messages”.&lt;br>
E quando você executa, por exemplo, via powershell e ele fica lá travado no processo e não te informa nada?&lt;br>
Nesses casos, você pode rodar a consulta abaixo:&lt;/p>
&lt;pre class="lang:tsql decode:true ">SELECT start_time, percent_complete, session_id, status, command
FROM sys.dm_exec_requests
WHERE command In ( 'RESTORE DATABASE', 'BACKUP DATABASE' )&lt;/pre>
&lt;p>Com isso, você saberá o percentual de execução do teu backup:&lt;br>
&lt;img loading="lazy" src="https://blog.merazzi.com.br/images/2014/06/tempo_backup-1.png">&lt;/p></description></item><item><title>Erro ao instalar o SQL Server Data Tools no Visual Studio 2012</title><link>https://blog.merazzi.com.br/posts/2014/03/erro-ao-instalar-o-sql-server-data-tools-no-visual-studio-2012/</link><pubDate>Sun, 23 Mar 2014 18:27:51 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2014/03/erro-ao-instalar-o-sql-server-data-tools-no-visual-studio-2012/</guid><description>&lt;p>Dica rápida: Ao instalar os &lt;a href="http://www.microsoft.com/pt-br/download/details.aspx?id=36843" target="_blank" rel="noopener">projetos de BI do SQL Server Data Tools no Visual Studio 2012&lt;/a>, apareceu o seguinte erro:&lt;/p>
&lt;blockquote>
&lt;pre>Rule "Same architecture installation" failed.&lt;/blockquote>
&lt;p>The CPU architecture of installing feature(s) is different than the instance specified. To continue, add features to this instance with the same architecture.&lt;/pre>&lt;/p>
&lt;p>O executável tem no nome o ‘x86’ então achei que eu tinha baixado o arquivo errado, mas na página diz que ele suporta a versão ‘x64’.&lt;/p></description></item><item><title>CROSS APPLY com FOR XML, dentro de um FOR XML</title><link>https://blog.merazzi.com.br/posts/2014/03/cross-apply-com-for-xml-dentro-de-um-for-xml/</link><pubDate>Wed, 19 Mar 2014 20:13:33 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2014/03/cross-apply-com-for-xml-dentro-de-um-for-xml/</guid><description>&lt;p>Esses dias surgiu uma questão aqui no trabalho que acho que vale o registro…&lt;/p>
&lt;p>Me questionaram sobre a possibilidade de concatenar o resultado de diversas linhas em uma única e, imediatamente, me veio o bom e velho FOR XML PATH(”) em mente.&lt;/p>
&lt;p>O problema é que o resultado deveria ser concatenado de acordo com o resultado proveniente de uma outra tabela, algo como:&lt;/p>
&lt;pre>Status1 (Codigo1, Codigo2, Codigo3) Status 2 (Codigo4) Status 3 (Codigo5)&lt;/pre>
&lt;p>A criação da estrutura seria algo assim:&lt;/p></description></item><item><title>Feliz Ano Novo em T-SQL!?!?</title><link>https://blog.merazzi.com.br/posts/2013/12/feliz-ano-novo-em-t-sql/</link><pubDate>Tue, 31 Dec 2013 03:06:36 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2013/12/feliz-ano-novo-em-t-sql/</guid><description>&lt;p>Bom, hoje dando uma brincada com dados geoespaciais (férias tem disso… hehehe), resolvi fazer uma “brincadeira” e desejar um Feliz Ano Novo de um jeito diferente…&lt;/p>
&lt;p>&lt;img loading="lazy" src="https://blog.merazzi.com.br/images/2013/12/AnoNovoSQL-1.png">&lt;/p>
&lt;p>Claro, nada se compara ao Feliz Natal do &lt;a title="Merry Christmas" href="http://sqlblog.com/blogs/michael_coles/archive/2010/12/24/this-year-s-sql-christmas-card.aspx" target="_blank" rel="noopener">Michael Coles&lt;/a>, mas é como dizem: O que vale é a intenção… heheheh&lt;/p>
&lt;p>Espero que em 2014 todas as metas estipuladas sejam alcançadas, que seja um ano de renovação ou, pelo menos, de ação.&lt;/p>
&lt;p>Ah, claro… Para quem quiser ver o script, acesse o meu github: &lt;a href="https://github.com/LoganMerazzi/SQLServerScripts/blob/master/Happy%20new%20year" target="_blank" rel="noopener">https://github.com/LoganMerazzi/SQLServerScripts/blob/master/Happy%20new%20year&lt;/a>&lt;/p></description></item><item><title>Descobrindo quais tabelas estão em quais filegroups</title><link>https://blog.merazzi.com.br/posts/2013/10/descobrindo-quais-tabelas-est%C3%A3o-em-quais-filegroups/</link><pubDate>Wed, 23 Oct 2013 21:48:53 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2013/10/descobrindo-quais-tabelas-est%C3%A3o-em-quais-filegroups/</guid><description>&lt;p>Alguma vez você deve ter se perguntado: “Como eu sei em qual filegroup está essa tabela?”&lt;/p>
&lt;p>Existe uma ideia de que a hierarquia se dá da seguinte forma:&lt;/p>
&lt;blockquote>
&lt;p>Instância -&amp;gt; Database -&amp;gt; Filegroup -&amp;gt; Tabela -&amp;gt; Dados&lt;/p>&lt;/blockquote>
&lt;p>Porém está faltando um item aí que acaba passando despercebido muitas vezes… &lt;strong>Os índices!&lt;/strong> Ele é quem define onde os dados de uma tabela serão armazenados.&lt;/p>
&lt;p>O índice cluster é o responsável por organizar a tabela fisicamente. Seria conveniente dizer que ele “&lt;strong>&lt;em>É&lt;/em>&lt;/strong>” os dados da sua tabela (falar que os dados estão dentro do índice cluster me soa errado, então deixemos a frase estranha mesmo 🙂 ). Então, na prática, ao criar o seu índice cluster, você estará especificando o filegroup onde os dados serão armazenados.&lt;/p></description></item><item><title>PowerShell 3.0 Fundamentals</title><link>https://blog.merazzi.com.br/posts/2013/09/powershell-3.0-fundamentals/</link><pubDate>Mon, 30 Sep 2013 12:17:01 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2013/09/powershell-3.0-fundamentals/</guid><description>&lt;p>Você, quando chega no trabalho, precisa ficar se conectando em vários servidores para ver o status de determinados processos, manualmente?&lt;br>
Você já precisou gerar um inventário de ‘n’ servidores em caráter de urgência?&lt;br>
Você já pensou em automatizar aquele processo que hoje te consome algumas horas do dia para finalizar?&lt;br>
Você já precisou ficar monitorando um servidor durante o final de semana para que, caso determinada situação acontecesse, um e-mail seja enviado para os responsáveis?&lt;/p></description></item><item><title>Compatibility Views &amp; Catalog Views</title><link>https://blog.merazzi.com.br/posts/2013/07/compatibility-views-catalog-views/</link><pubDate>Thu, 18 Jul 2013 15:03:44 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2013/07/compatibility-views-catalog-views/</guid><description>&lt;p>Alguma vez você já parou para pensar em como as &lt;em style="line-height: 1.714285714; font-size: 1rem;">functions,&lt;/em> &lt;em style="line-height: 1.714285714; font-size: 1rem;">procedures, constraints, etc &lt;/em>ficam armazenadas no banco? Onde fica a definição dos objetos?&lt;/p>
&lt;p>No SQL Server 2000 existia uma tabela de sistema chamada &lt;em>syscomments.&lt;/em> Essa tabela retornava 1 linha a cada 4000 caracteres que tivesse a definição do objeto.&lt;/p></description></item><item><title>Função Escalar x Table Valued Function</title><link>https://blog.merazzi.com.br/posts/2013/07/fun%C3%A7%C3%A3o-escalar-x-table-valued-function/</link><pubDate>Mon, 01 Jul 2013 15:59:18 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2013/07/fun%C3%A7%C3%A3o-escalar-x-table-valued-function/</guid><description>&lt;p>Muito se fala na internet sobre como as funções escalares são terríveis e que devemos evitar o uso a todo o custo… Eu gostaria de mostrar o porquê:&lt;/p>
&lt;p>Vejam o seguinte script abaixo (um procedimento muito utilizado por aí: a utilização de uma função escalar que trata “N” casos e retorna o valor desejado). Primeiro, a criação da tabela e inserção dos dados:&lt;/p>
&lt;pre class="lang:tsql decode:true">CREATE TABLE NotaFiscal (Cod int identity primary key, Pessoa varchar(20), Valor decimal (15,2), Data date)
CREATE INDEX Ncl_NotaFiscal ON NotaFiscal (Data) INCLUDE (Pessoa, Valor)
GO
-- Inserindo 10 notas no período de 500 dias (5000 notas).
INSERT INTO NotaFiscal
SELECT 'Logan', 100, DATEADD(DD, Number, '2012-12-31')
from Numbers
WHERE Number &amp;lt; 500
GO 10
GO
CREATE FUNCTION CalculaTributos (@Codigo int, @Tipo char(1))
Returns decimal(15,2)
AS
BEGIN
DECLARE @valor decimal(15,2)
SELECT @Valor =
CASE @tipo
WHEN 'a' then valor * 0.1
WHEN 'b' then valor * 0.3
WHEN 'c' then valor * 0.5
END
FROM NotaFiscal
RETURN @valor
END;&lt;/pre>
&lt;p> &lt;/p></description></item><item><title>3º Encontro do grupo SQLServerRS de 2013 – Scripts</title><link>https://blog.merazzi.com.br/posts/2013/05/3%C2%BA-encontro-do-grupo-sqlserverrs-de-2013-scripts/</link><pubDate>Thu, 09 May 2013 16:39:01 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2013/05/3%C2%BA-encontro-do-grupo-sqlserverrs-de-2013-scripts/</guid><description>&lt;p>Pessoal,&lt;/p>
&lt;p>Antes de qualquer coisa, gostaria de agradecer ao grupo (pela enésima vez) a oportunidade de me permitir palestrar neste 3º encontro.&lt;/p>
&lt;p>O encontro na Ftec foi muito bom, primeiramente com o Marcus Vinícius falando sobre a comunidade SQL Server e o PASS. Após, eu assumi o projetor e falei sobre Snapshot no SQL Server.&lt;/p></description></item><item><title>SSH no VMWare ESXi 5.1</title><link>https://blog.merazzi.com.br/posts/2013/05/ssh-no-vmware-esxi-5.1/</link><pubDate>Thu, 02 May 2013 11:42:38 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2013/05/ssh-no-vmware-esxi-5.1/</guid><description>&lt;p>Links sobre como habilitar SSH e se conectar no ESXi 5.1 existem aos montes (para mim, a melhor referência é &lt;a style="line-height: 1.714285714; font-size: 1rem;" title="Utilizando ESXi Shell no ESXi 5.1" href="http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&amp;cmd=displayKC&amp;externalId=2004746" target="_blank">esta&lt;/a>), porém na terça passei por uma situação onde, mesmo estando tudo habilitado, após migrarmos o nosso servidor do ESXi 4.0 para o 5.1, a conexão via SSH simplesmente deixou de funcionar, apresentando o erro: &lt;/p>
&lt;blockquote>
&lt;p> Server unexpectedly closed network connection&lt;/p>&lt;/blockquote></description></item><item><title>3º Encontro de 2013 do Grupo SQL Server RS – Comigo!</title><link>https://blog.merazzi.com.br/posts/2013/04/3%C2%BA-encontro-de-2013-do-grupo-sql-server-rs-comigo/</link><pubDate>Mon, 29 Apr 2013 19:16:50 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2013/04/3%C2%BA-encontro-de-2013-do-grupo-sql-server-rs-comigo/</guid><description>&lt;p>Pessoal, com muita honra e orgulho foi convidado pelo Chapter Leader do grupo SQL Server RS, Marcus Vinícius Bittencourt para palestrar no próximo encontro do grupo.&lt;/p>
&lt;p>Pois bem, o encontro será realizado na &lt;a href="http://www.ftec.com.br" target="_blank" rel="noopener">FTEC&lt;/a> (Caxias do Sul – RS), no dia 04/05/2013 às 14 horas e o assunto será:&lt;/p>
&lt;p>&lt;strong>Snapshot Database: o que é, pra que serve e como usar&lt;/strong>.&lt;/p>
&lt;p>Fica aberto o convite à todos!&lt;/p>
&lt;p>Até!&lt;/p></description></item><item><title>SQL Server + Volume Shadow Copy = Sem backup diferencial.</title><link>https://blog.merazzi.com.br/posts/2013/04/sql-server--volume-shadow-copy-sem-backup-diferencial./</link><pubDate>Wed, 24 Apr 2013 19:27:46 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2013/04/sql-server--volume-shadow-copy-sem-backup-diferencial./</guid><description>&lt;p>Após implementar o recurso de envio de e-mails com os erros de backup do SQL Server, notei que o backup diferencial não estava sendo executado, apresentando o seguinte erro:&lt;/p>
&lt;blockquote>
&lt;p>Cannot perform a differential backup for database “MyDatabase”, because a current database backup does not exist. Perform a full database backup by reissuing BACKUP DATABASE, omitting the WITH DIFFERENTIAL option. [SQLSTATE 42000] (Error 3035)  BACKUP DATABASE is terminating abnormally. [SQLSTATE 42000] (Error 3013).  The step failed.&lt;/p>&lt;/blockquote></description></item><item><title>Detalhando erros no Powershell</title><link>https://blog.merazzi.com.br/posts/2013/04/detalhando-erros-no-powershell/</link><pubDate>Mon, 15 Apr 2013 21:00:36 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2013/04/detalhando-erros-no-powershell/</guid><description>&lt;p>Estou montando um script em Powershell para enviar um mail caso aconteça algumas situações e no momento do teste aparecia a seguinte mensagem de erro:&lt;/p>
&lt;blockquote>
&lt;p>Exception calling “Send” with “4” argument(s): “Failure sending mail.”&lt;br>
At line:1 char:11&lt;/p>
&lt;ul>
&lt;li>$smtp.Send &amp;laquo;&amp;laquo; (“teste@merazzi.eti.br”,”teste@merazzi.eti.br”,”teste de e-mail”,”Teste de mail”)&lt;/li>
&lt;li>CategoryInfo          : NotSpecified: (:) [], MethodInvocationException&lt;/li>
&lt;li>FullyQualifiedErrorId : DotNetMethodException&lt;/li>
&lt;/ul>&lt;/blockquote>
&lt;p>Como esse erro não diz muita coisa, fui no pai dos burros (a.k.a Google) e achei o seguinte comando:&lt;/p>
&lt;blockquote>
&lt;pre class="lang:ps decode:true">$error[0] | format-list –force&lt;/pre>&lt;/blockquote></description></item><item><title>SQL Server Database Snapshot</title><link>https://blog.merazzi.com.br/posts/2013/04/sql-server-database-snapshot/</link><pubDate>Fri, 12 Apr 2013 19:45:29 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2013/04/sql-server-database-snapshot/</guid><description>&lt;p>O Database Snaphot (ou “instantâneo de Banco de Dados”, se você estiver no SQL Server em português – Que nome terrível, hehehe) é um banco de dados _&lt;strong>somente leitura,&lt;/strong> _onde o SQL Server guarda os dados originais de tudo o que está sendo alterado pelos usuários, para que seja possível realizar verificações (dentre outras coisas) de como estava o banco antes destas ocorrerem.&lt;/p>
&lt;p>Ao contrário do que muita gente pensa, as alterações ocorrem nas páginas de dados e não no objeto que está sofrendo alteração. O SQL Server utiliza um recurso chamado “Copy-on-write” onde, antes da página ser alterada, os dados originais são armazenados no snapshot.&lt;/p></description></item><item><title>Erro ao criar plano de backup no TFS</title><link>https://blog.merazzi.com.br/posts/2013/03/erro-ao-criar-plano-de-backup-no-tfs/</link><pubDate>Wed, 27 Mar 2013 20:02:38 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2013/03/erro-ao-criar-plano-de-backup-no-tfs/</guid><description>&lt;p>Após a migração do Team Foudation Server 2010 de servidor, fui realizar a configuração dos backups através do TFS Powertools (disponibilizado pela Microsoft no link: &lt;a href="http://visualstudiogallery.msdn.microsoft.com/c255a1e4-04ba-4f68-8f4e-cd473d6b971f" title="http://visualstudiogallery.msdn.microsoft.com/c255a1e4-04ba-4f68-8f4e-cd473d6b971f" target="_blank" rel="noopener">http://visualstudiogallery.msdn.microsoft.com/c255a1e4-04ba-4f68-8f4e-cd473d6b971f&lt;/a>) e me deparei com o seguinte erro:&lt;/p>
&lt;p>&lt;img loading="lazy" src="https://blog.merazzi.com.br/images/2013/03/TFSBackup.png">&lt;/p></description></item><item><title>SQL Server Internal Ops. Eu fui!</title><link>https://blog.merazzi.com.br/posts/2012/12/sql-server-internal-ops.-eu-fui/</link><pubDate>Sun, 09 Dec 2012 23:35:15 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2012/12/sql-server-internal-ops.-eu-fui/</guid><description>&lt;p>No dia 07/12, foi realizado na PUC o SQL Server Internal Ops, um evento idealizado pelas comunidades &lt;a href="http://www.sqlserverrs.com.br/" target="_blank" rel="noopener">SQL Server RS&lt;/a> e &lt;a href="http://mcitpsc.com.br" target="_blank" rel="noopener">MSITPSC&lt;/a>, com o apoio da Microsoft e da Dell.&lt;/p>
&lt;p>Há muito tempo que eu ansiava por um evento do gênero aqui em Porto Alegre, com foco 100% em SQL Server, uma vez que já houveram eventos semelhantes em São Paulo, Rio de Janeiro (Que eu felizmente consegui ir), Recife (com o SQL Saturday) enquanto nós, que moramos aqui no RS, não tínhamos nada.&lt;/p></description></item><item><title>“No such interface supported” ao criar / abrir um projeto no SSMS 2012</title><link>https://blog.merazzi.com.br/posts/2012/09/no-such-interface-supported-ao-criar-/-abrir-um-projeto-no-ssms-2012/</link><pubDate>Wed, 05 Sep 2012 12:46:05 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2012/09/no-such-interface-supported-ao-criar-/-abrir-um-projeto-no-ssms-2012/</guid><description>&lt;p>Onde trabalhamos, utilizamos o Source Safe para realizar o controle de alterações nas functions e procedures de Banco de Dados. Foi criado um projeto que contém os objetos e, dentro do SSMS, fazemos o checkout / checkin deles, já integrado com o Source Safe.&lt;/p>
&lt;p>Acontece que hoje, ao tentar migrar o projeto para abrirmos no SQL Server Management Studio 2012, apareceu o erro:&lt;/p>
&lt;blockquote>
&lt;p>Error: No such interface supported&lt;br>
File: vsee\internal\inc\vscomptr.inl&lt;br>
Line number: 259&lt;/p></description></item><item><title>Cuidados ao usar Exists</title><link>https://blog.merazzi.com.br/posts/2012/07/cuidados-ao-usar-exists/</link><pubDate>Tue, 03 Jul 2012 23:26:35 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2012/07/cuidados-ao-usar-exists/</guid><description>&lt;p>6 meses depois do último post (e com o planejamento de ano novo completamente furado – o de postar pelo menos 1 vez a cada 15 dias… 🙁 )…&lt;br>
Dica rápida para quem usar &lt;strong>&lt;em>EXISTS&lt;/em>&lt;/strong> :&lt;br>
Nunca utilize uma função de agregação quando utilizar o EXISTS. Por quê?&lt;br>
Segue um script rápido que insere alguns poucos registros em uma tabela para testarmos…&lt;/p>
&lt;pre lang="sql" class="">CREATE DATABASE TesteExists --Super original, não? :-)
GO
USE TesteExists
GO
CREATE TABLE Pessoa (Nome varchar(20), Nascimento datetime, Sexo char(1), CPF varchar(11), EstadoCivil char(1))
GO
INSERT INTO Pessoa Values ('Logan', '19810101', 'M', '11111111111','C')
INSERT INTO Pessoa Values ('Denise','19800101', 'F', '22222222222','C')
INSERT INTO Pessoa Values ('Sophia', '20120101', 'F', NULL,'S')
GO
IF EXISTS (SELECT MAX(Nascimento) FROM Pessoa WHERE nome = 'xxxxx')
SELECT 'OK'
ELSE SELECT 'NOK'&lt;/pre>
&lt;p>&lt;img loading="lazy" src="https://blog.merazzi.com.br/images/2012/07/Post_Exists1.png">&lt;/p></description></item><item><title>Colunas Default (e Como Mantê-las)</title><link>https://blog.merazzi.com.br/posts/2011/12/colunas-default-e-como-mant%C3%AA-las/</link><pubDate>Tue, 13 Dec 2011 21:43:55 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2011/12/colunas-default-e-como-mant%C3%AA-las/</guid><description>&lt;p>Muitas vezes precisamos que uma determinada coluna receba um valor padrão, por exemplo, uma tabela de pedidos que, ao inserir um registro novo, coloca por padrão a data atual no campo que referencia a data do pedido.&lt;/p>
&lt;blockquote>
&lt;p>Ok, mas como é que eu faço isso?&lt;/p>&lt;/blockquote>
&lt;p>Muito simples, pequeno gafanhoto, ao criar uma tabela:&lt;/p>
&lt;pre lang="sql" class="">CREATE TABLE MinhaTabela
(
Codigo int identity,
Nome varchar(100) NOT NULL,
Valor int NOT NULL,
Data datetime not null CONSTRAINT DF_MinhaTabela_Data default getdate()
)
&lt;/pre>
&lt;blockquote>
&lt;p>Putz! Mas o campo Valor também tinha que ter um valor Default… Será que eu consigo colocar sem ter que refazer a criação ou dropar a coluna?&lt;/p></description></item><item><title>Entendendo e usando CTE (Common Table Expression)</title><link>https://blog.merazzi.com.br/posts/2011/08/entendendo-e-usando-cte-common-table-expression/</link><pubDate>Wed, 10 Aug 2011 04:42:27 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2011/08/entendendo-e-usando-cte-common-table-expression/</guid><description>&lt;p>As CTE’s são muito semelhantes às tabelas derivadas, mas com uma boa vantagem…&lt;/p>
&lt;p>De acordo com o &lt;a href="http://msdn.microsoft.com/en-us/library/ms190766.aspx" target="_blank" rel="noopener">BOL&lt;/a> a estrutura para uma CTE é:&lt;/p>
&lt;pre lang="sql" class="">WITH expression_name [ ( column_name [,...n] ) ]
AS
( CTE_query_definition )
SELECT
FROM expression_name;&lt;/pre>
&lt;p>Uma comparação de uso entre uma tabela derivada e uma CTE:&lt;/p>
&lt;p>&lt;strong>Tabela derivada:&lt;/strong>&lt;/p>
&lt;pre lang="sql">SELECT *
FROM
(SELECT Nome, Cidade
FROM CLIENTES
WHERE DataCadastro &amp;gt; '2011-01-01') AS CLI2011&lt;/pre>
&lt;p>&lt;strong>Usando CTE:&lt;/strong>&lt;/p>
&lt;pre lang="sql">;WITH CLI2011
AS
( SELECT Nome, Cidade
FROM CLIENTES
WHERE DataCadastro &amp;gt; '2011-01-01')
SELECT * FROM CLI2011;&lt;/pre>
&lt;p>Note o ‘;’ antes do WITH… Ele está lá por eu considerar uma boa prática, uma vez que sempre que você utilizar uma CTE, caso tenha alguma outra consulta antes, ela obrigatoriamente deve terminar com o ‘;’. Então, por via das dúvidas, sempre coloque ele antes do WITH, quando for usar uma CTE.&lt;/p></description></item><item><title>Problemas de conversão de arquivos php do Linux para o Windows</title><link>https://blog.merazzi.com.br/posts/2011/07/problemas-de-convers%C3%A3o-de-arquivos-php-do-linux-para-o-windows/</link><pubDate>Tue, 19 Jul 2011 04:15:58 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2011/07/problemas-de-convers%C3%A3o-de-arquivos-php-do-linux-para-o-windows/</guid><description>&lt;p>Passei os últimos dias migrando de servidores e um dos meus objetivos era pegar o nosso portal, que hoje está em um Ubuntu e passar para o novo server, Windows.&lt;/p>
&lt;p>Após fazer as configurações do php, mysql, iis, etc, notei que as páginas estavam sendo abertas com a acentuação totalmente errada, mesmo as informações no MySQL estando corretas.&lt;/p>
&lt;p>Fucei em tudo o que era lugar. Converti a codificação dos arquivos .php para UTF-8, para ANSI, para ISO-8859-1, mas nada adiantou.&lt;/p></description></item><item><title>Como visualizar as descrições das colunas de uma tabela</title><link>https://blog.merazzi.com.br/posts/2011/07/como-visualizar-as-descri%C3%A7%C3%B5es-das-colunas-de-uma-tabela/</link><pubDate>Mon, 11 Jul 2011 18:46:28 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2011/07/como-visualizar-as-descri%C3%A7%C3%B5es-das-colunas-de-uma-tabela/</guid><description>&lt;p>Post rápido…&lt;/p>
&lt;p>Estava cansado e ir no design do SSMS pra ver a descrição de algumas colunas e resolvi pegar as tabelas relacionadas e montar um script que fizesse isso. Segue:&lt;/p>
&lt;blockquote>
&lt;pre class="lang:default decode:true">SELECT&lt;/blockquote>
&lt;p>  OBJECT_NAME(c.object_id) Tabela,
  c.name Coluna,
  ex.value Descricao
FROM 
  sys.columns c 
LEFT OUTER JOIN 
  sys.extended_properties ex 
ON 
  ex.major_id = c.object_id
  AND ex.minor_id = c.column_id 
WHERE 
  OBJECT_NAME(c.object_id) = &amp;lsquo;Sua_Tabela&amp;rsquo;
ORDER 
  BY OBJECT_NAME(c.object_id), c.column_id&lt;/pre>&lt;/p>
&lt;p>Espero que ajude… 🙂&lt;/p>
&lt;p>[]’s&lt;/p></description></item><item><title>Funções de Ranqueamento</title><link>https://blog.merazzi.com.br/posts/2011/02/fun%C3%A7%C3%B5es-de-ranqueamento/</link><pubDate>Wed, 23 Feb 2011 03:30:41 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2011/02/fun%C3%A7%C3%B5es-de-ranqueamento/</guid><description>&lt;p>Existem 4 funções de ranqueamento que podem ser utilizados com a cláusula OVER:&lt;/p>
&lt;ul>
&lt;li>ROW_NUMBER&lt;/li>
&lt;li>RANK&lt;/li>
&lt;li>DENSE_RANK&lt;/li>
&lt;li>NTILE&lt;/li>
&lt;/ul>
&lt;p>Um exemplo de uso:&lt;/p>
&lt;pre>SELECT orderid, custid, val,
  ROW_NUMBER() OVER(ORDER BY val) AS rownum,
  RANK()       OVER(ORDER BY val) AS rank,
  DENSE_RANK() OVER(ORDER BY val) AS dense_rank,
  NTILE(10)   OVER(ORDER BY val) AS ntile
FROM Sales.OrderValues
ORDER BY val;&lt;/pre>
&lt;p>O retorno é:&lt;/p>
&lt;pre>orderid     custid      val       rownum  rank    dense_rank ntile
----------- ----------- --------- ------- ------- ---------- -----
10782       12          12.50     1       1       1          1
10807       27          18.40     2       2       2          1
10586       66          23.80     3       3       3          1
10767       76          28.00     4       4       4          1
10898       54          30.00     5       5       5          1
10900       88          33.75     6       6       6          1
10883       48          36.00     7       7       7          1
11051       41          36.00     8       7       7          1
10815       71          40.00     9       9       8          1
10674       38          45.00     10      10      9          1
...
10691       63          10164.80  821     821     786        10
10540       63          10191.70  822     822     787        10
10479       65          10495.60  823     823     788        10
10897       37          10835.24  824     824     789        10
10817       39          10952.85  825     825     790        10
10417       73          11188.40  826     826     791        10
10889       65          11380.00  827     827     792        10
11030       71          12615.05  828     828     793        10
10981       34          15810.00  829     829     794        10
10865       63          16387.50  830     830     795        10&lt;/pre>
&lt;pre>(830 row(s) affected)&lt;/pre>
&lt;p>A função ROW_NUMBER() retorna uma ordenação sequencial para o resultado da consulta, baseado no que foi especificado no ORDER BY da cláusula OVER. Note que eu poderia retornar a ordenação pela coluna custid, modificando apenas a coluna rownum e mantendo a mesma ordem no retorno da consulta.&lt;/p></description></item><item><title>A cláusula OVER</title><link>https://blog.merazzi.com.br/posts/2011/02/a-cl%C3%A1usula-over/</link><pubDate>Tue, 22 Feb 2011 16:26:14 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2011/02/a-cl%C3%A1usula-over/</guid><description>&lt;p>Com a cláusula OVER você faz com que uma &lt;strong>janela de registros&lt;/strong> passe por alguns cálculos.&lt;/p>
&lt;p>Entenda por janela de registros como sendo uma quantidade de registros no qual o cálculo será realizado.&lt;/p>
&lt;p>Ao contrário do GROUP BY, onde o retorno é de apenas uma linha para cada agrupamento realizado, com a cláusula OVER você consegue trabalhar no contexto do SELECT, ou seja, para cada registro da sua lista. Desta forma, você não precisa trabalhar com o GROUP BY e ainda tem como retorno o cálculo desejado.&lt;/p></description></item><item><title>Em busca de mais uma certificação…</title><link>https://blog.merazzi.com.br/posts/2011/02/em-busca-de-mais-uma-certifica%C3%A7%C3%A3o/</link><pubDate>Tue, 22 Feb 2011 16:20:17 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2011/02/em-busca-de-mais-uma-certifica%C3%A7%C3%A3o/</guid><description>&lt;p>Estou estudando para mais uma certificação (70-433 – TS: Microsoft SQL Server 2008, Database Development) e, com o intuito de fixar o conteúdo, vou colocar aqui uma série de posts que eu acho interessante divulgar.&lt;/p>
&lt;p>Para a prova, estou me baseando nos seguintes livros:&lt;/p>
&lt;ul type="circle">
&lt;li>
Microsoft® SQL Server® 2008 T-SQL Fundamentals
&lt;/li>
&lt;li>
Inside Microsoft SQL Server 2008: T-SQL Querying
&lt;/li>
&lt;li>
Inside Microsoft SQL Server 2008: T-SQL Programming (Pro-Developer)
&lt;/li>
&lt;li>
MCTS Self-Paced Training Kit (Exam 70-433): Microsoft® SQL Server® 2008 &amp;#8211; Database Development
&lt;/li>
&lt;/ul>
&lt;p>A minha idéia é conseguir fazer a prova em abril e então, no meio do ano, fazer a 70-451 (PRO: Designing Database Solutions and Data Access Using Microsoft SQL Server 2008), concluindo a trilha de Desenvolvedor. Depois é partir pra parte de BI.&lt;/p></description></item><item><title>Erro no Visual Studio 2008: “make sure the application for the file type (.aspx) is installed”</title><link>https://blog.merazzi.com.br/posts/2010/07/erro-no-visual-studio-2008-make-sure-the-application-for-the-file-type-.aspx-is-installed/</link><pubDate>Thu, 29 Jul 2010 11:20:50 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2010/07/erro-no-visual-studio-2008-make-sure-the-application-for-the-file-type-.aspx-is-installed/</guid><description>&lt;p>Vinha há algum tempo enfrentando um problema no meu Visual Studio 2008 e não tinha tido paciência para reinstalar ele. Ontem eu aproveitei algumas manutenções nos servidores que eu estava fazendo para reinstalar o meu VS2008.&lt;br>
O problema era: Eu simplesmente não conseguia mexer nos meu arquivos aspx em modo visual, o editor não usava o Intellisense, não marcava os textos, nada… só para editar os arquivos .cs o VS funcionava normalmente.&lt;br>
Quando eu tentava entrar no modo &lt;em>design&lt;/em> o seguinte erro ocorria para mim:&lt;/p></description></item><item><title>Erro no FTP: 530 User cannot log in</title><link>https://blog.merazzi.com.br/posts/2010/07/erro-no-ftp-530-user-cannot-log-in/</link><pubDate>Sun, 04 Jul 2010 16:13:27 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2010/07/erro-no-ftp-530-user-cannot-log-in/</guid><description>&lt;p>Após realizar a troca do nosso servidor de domínio, o nosso FTP deixou de funcionar, negando o acesso dos nossos usuários, dando o seguinte erro:&lt;br>
&lt;code>&amp;lt;br /&amp;gt; C:\Documents and Settings\usuário&amp;gt;ftp 192.168.0.2&amp;lt;br /&amp;gt; Conectado a 192.168.0.2.&amp;lt;br /&amp;gt; 220 Microsoft FTP Service&amp;lt;br /&amp;gt; Usuário (192.168.0.2:(none)): [usuário]&amp;lt;br /&amp;gt; 331 Password required for [usuário].&amp;lt;br /&amp;gt; Senha:&amp;lt;br /&amp;gt; 530 User [usuário] cannot log in.&amp;lt;br /&amp;gt; Falha de logon.&amp;lt;br /&amp;gt; &lt;/code>&lt;/p>
&lt;p>O problema ocorria pois o servidor passou a obrigar ao usuário entrar com o domínio seguido do nome, no caso, deveria ser feito na forma &lt;strong>DOMINIO\USUARIO&lt;/strong>&lt;br>
Para evitar que o usuário precise entrar sempre com o domínio, deve ser informado o seguinte comando:&lt;/p></description></item><item><title>Recuperando arquivos apagados</title><link>https://blog.merazzi.com.br/posts/2010/05/recuperando-arquivos-apagados/</link><pubDate>Mon, 24 May 2010 02:49:52 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2010/05/recuperando-arquivos-apagados/</guid><description>&lt;p>Bom, como diz o velho ditado:&lt;/p>
&lt;blockquote>
&lt;p>“Em casa de ferreiro o espeto é de pau”&lt;/p>&lt;/blockquote>
&lt;p>Acontece que dias atrás eu resolvi tirar o XP da máquina da minha esposa e instalar o Ubuntu pra ela ganhar um pouco de velocidade no trabalho dela, uma vez que o note já está bem velho e não está rendendo muito e eu não queria formatar tudo pra ter que instalar o XP novamente.&lt;br>
Enfim, fiz salvei as pastas que ela me pediu e fiz a instalação… Tudo rodando bonito, até o dia que ela pediu pra eu pegar uns arquivos do backup que eu tinha feito.&lt;br>
Fui no HD externo, entrei na pasta e…. cadê os arquivos? O cabeção aqui fez a proeza de copiar 2 vezes a mesma pasta em locais diferentes. O bom e velho &lt;em>Control+C &amp;amp; Control+V&lt;/em> me deixou na mão.&lt;br>
Certa vez eu já havia restaurado pra ela uns arquivos que ela tinha apagado acidentalmente de uma pen drive e pensei na mesma hora… “vamos achar o programa, instalar e &lt;em>voi lá&lt;/em>!!”.&lt;br>
Mas como eu disse anteriormente, tinha instalado o Ubuntu. A partição não era mais NTFS, era ext3, ou seja, eu tinha que conseguir um software para Windows que reconhecesse uma partição ext3 e de lá procurasse pelas referencias à arquivos que estavam em uma partição NTFS.&lt;br>
Já estava achando que tinha perdido os dados dela quando me deparei com os softwares da “Disk Internals”. Baixei o &lt;strong>Linux recovery&lt;/strong> e ele deu conta do recado tranquilo… obviamente que os nomes dos arquivos e a estrutura foi pro espaço, mas ele organizou tudo por tipo de arquivo e então consegui restaurar quase todo os dados (os que já haviam sido sobrescritos obviamente se foram, mas a grande maioria estava intacto ainda).&lt;br>
Mais um software para entrar na coleção dos favoritos e indispensáveis!!! 😀&lt;/p></description></item><item><title>Migrando o Joomla de servidor</title><link>https://blog.merazzi.com.br/posts/2010/03/migrando-o-joomla-de-servidor/</link><pubDate>Fri, 12 Mar 2010 16:30:00 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2010/03/migrando-o-joomla-de-servidor/</guid><description>&lt;p>Está insatisfeito com o seu provedor de hospedagem? Terminou de desenvolver o site e quer colocar em produção agora? Seguem os passos que vão fazer o teu site entrar no ar facilmente&lt;/p>
&lt;ol>
&lt;li>Passe todo o conteúdo da pasta onde você instalou o Joomla! do servidor antigo (ou da sua máquina) para o novo servidor. Pode ser via FTP, SCP…&lt;/li>
&lt;li>Faça um backup do teu banco de dados. Eu costumo fazer via &lt;em>mysqldump&lt;/em>, mas pode fazer via MySQLAdmin ou SQLYog, a preferência é tua.&lt;/li>
&lt;li>Restaure o dump do banco backupeado anteriormente no novo servidor.&lt;/li>
&lt;li>Agora vem o importante… muito provavelmente a máquina do banco seja outra, portanto as referências do servidor novo devem ser criadas. Para isso, edite no arquivo &lt;em>configuration.php&lt;/em>, as seguintes linhas:&lt;/li>
&lt;/ol>
&lt;blockquote>
&lt;p>var $host = ‘endereço do teu banco de dados’;&lt;br>
var $db = ‘nome do banco de dados’&lt;br>
var $user = ‘usuário de conexão com o banco’;&lt;br>
var $password = ‘senha do banco’;&lt;/p></description></item><item><title>Resoluções de ano novo…</title><link>https://blog.merazzi.com.br/posts/2009/12/resolu%C3%A7%C3%B5es-de-ano-novo/</link><pubDate>Thu, 17 Dec 2009 10:52:28 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2009/12/resolu%C3%A7%C3%B5es-de-ano-novo/</guid><description>&lt;p>Tenho o hábito de todo o final de ano estipular algumas metas para o ano, com o objetivo de nortear o caminho a ser seguido.&lt;br>
Como em todo projeto, mudanças no escopo são realizadas durante o ano, mas sempre com o intuito de mudar o mínimo possível no prazo de entrega. 🙂&lt;br>
Esse ano foi muito bom, digamos que 90% das metas foram cumpridas, faltando apenas o término da graduação (tive que adiar em um semestre, novamente) e a segunda certificação em SQL, que não tive como fazer, mas que será esse ano.&lt;br>
Vou então colocar aqui as metas que desejo cumprir até o final do ano de 2010. Veja bem, aqui estão as metas. Os prazos (ainda) não foram traçados.&lt;br>
Quando o final do ano chegar, veremos o que foi cumprido ou não… 🙂&lt;/p></description></item><item><title>Instalação do Apache, PHP &amp; MySQL no Ubuntu 9.10 ou no 10.4</title><link>https://blog.merazzi.com.br/posts/2009/11/instala%C3%A7%C3%A3o-do-apache-php-mysql-no-ubuntu-9.10-ou-no-10.4/</link><pubDate>Thu, 05 Nov 2009 22:22:52 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2009/11/instala%C3%A7%C3%A3o-do-apache-php-mysql-no-ubuntu-9.10-ou-no-10.4/</guid><description>&lt;p>Pra quem está querendo instalar o “LAMP” no Ubuntu Karmic Koala (9.10) ou no Lucid Lynx (10.4) , segue a receita de bolo:&lt;/p>
&lt;ol>
&lt;li>Instalar o Apache e o suporte a PHP:&lt;br>
&lt;code>$ sudo apt-get install apache2 php5&lt;/code>&lt;/li>
&lt;li>Instalar o MySQL:&lt;br>
&lt;code>$ sudo apt-get install mysql-server-5.0 php5-mysql&lt;/code>&lt;br>
Obs: Nesta etapa será solicitado que se informe a senha de root do MySQL. &lt;strong>FAÇA!!!!&lt;/strong>&lt;/li>
&lt;li>Instalar uma interface para adminsitrar o MySQL&lt;br>
&lt;code>$ sudo apt-get install mysql-query-browser mysql-admin&lt;/code>&lt;/li>
&lt;/ol>
&lt;p>E era isso… Agora, para editar os arquivos .php, eu uso ou o VI ou o gPHPEdit. Pegue o seu de preferência e divirta-se!! 😀&lt;/p></description></item><item><title>Questão sobre SQL Server…</title><link>https://blog.merazzi.com.br/posts/2009/05/quest%C3%A3o-sobre-sql-server/</link><pubDate>Tue, 12 May 2009 11:33:15 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2009/05/quest%C3%A3o-sobre-sql-server/</guid><description>&lt;p>Ontem me deparei com uma questão um tanto quanto interessante…&lt;br>
Qual o resultado das queries abaixo? Elas são equivalentes???&lt;/p>
&lt;p>Query 1:&lt;/p>
&lt;div id="highlighter_545266" class="syntaxhighlighter">
&lt;div class="lines">
&lt;div class="line alt1">
&lt;pre class="lang:default decode:true ">SELECT *
FROM (
  SELECT 1 col1 UNION
  SELECT 2 UNION
  SELECT 3
) T1
LEFT JOIN (
  SELECT 1 col1 UNION
  SELECT 3
) T2
 ON t1.col1 = t2.col1
WHERE t2.col1 IS NULL&lt;/pre>
&lt;p>Query 2:&lt;/p>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="line alt1">
&lt;pre class="lang:default decode:true ">SELECT *
FROM (
  SELECT 1 col1 UNION
  SELECT 2 UNION
  SELECT 3
) T1
LEFT JOIN (
  SELECT 1 col1 UNION
  SELECT 3
) T2
 ON t1.col1 = t2.col1
  AND t2.col1 IS NULL&lt;/pre>
&lt;p>Passando o olho rapidamente, parece ser a mesma coisa, mas reparem na última linha, a única diferença entre elas é o uso do where e o outro existe somente o join.&lt;/p></description></item><item><title>Instalando o Ubuntu 8.10 em dual boot com o Windows Vista instalado.</title><link>https://blog.merazzi.com.br/posts/2009/04/instalando-o-ubuntu-8.10-em-dual-boot-com-o-windows-vista-instalado./</link><pubDate>Mon, 27 Apr 2009 11:34:56 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2009/04/instalando-o-ubuntu-8.10-em-dual-boot-com-o-windows-vista-instalado./</guid><description>&lt;p>Vou colocar aqui uma dica para quem já tem o windows vista instalado e não quer instalar uma máquina virtual para usar o Ubuntu, preferindo o dual boot.&lt;br>
No meu caso, o particionador do Vista (gerenciamento de dico -&amp;gt; Diminuir Volume (shrink volume)) não funcionou, acredito que tinha algum bloco fixo que impedia o particionamento de todo o espaço disponível.&lt;br>
Solução para esse caso: use o &lt;strong>GParted&lt;/strong>.&lt;br>
Baixe, grave em um CD, dê boot por ele e faça a mágica… Simples rápido e indolor.&lt;br>
Ouvi algumas pessoas falarem de problemas para iniciar o vista após usar esse particionador, que ele deixava de inicializar.&lt;br>
Algumas pessoas falaram que precisaram rodar um chkdsk para verificação do disco e após ele iniciou normalmente.&lt;br>
Outras falaram em usar o disco do Vista e fazer a reparação (mantendo o particionamento realizado).&lt;br>
Bom, fica a dica… se tiverem alguma dúvida a respeito sobre como fazer o particionamento, tamos aí!! ;o)&lt;/p></description></item><item><title>MCTS SQL Server 2005!!! :-D</title><link>https://blog.merazzi.com.br/posts/2009/03/mcts-sql-server-2005-d/</link><pubDate>Tue, 17 Mar 2009 16:41:39 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2009/03/mcts-sql-server-2005-d/</guid><description>&lt;div align="center">
![](/images/2009/03/mcts.gif)
&lt;/div>
&lt;p>Só pra dizer que acabei de passar na prova 70-431 da Microsoft: &lt;strong>“SQL Server 2005 – Implementing and Maintenance”&lt;/strong>&lt;br>
Que baita alívio, estava achando que não passaria nessa prova mas para a minha surpresa, passei com 880 no simulado e 947 na teórica (valendo 1000).&lt;br>
Essa é a segunda prova da MS que eu faço (e passo). Há 9 anos atrás eu fiz a de &lt;em>Windows NT Server 4.0.&lt;/em>&lt;br>
Agora é manter o ritmo, focar no TCC da faculdade e fazer as provas 70-441 e 70-442 (Database Developer), 70-443 e 70-444 (Database Administrator)!!&lt;br>
O negócio é não deixar a peteca cair!!! 😀&lt;/p></description></item><item><title>Certificações Microsoft para SQL Server 2005</title><link>https://blog.merazzi.com.br/posts/2009/02/certifica%C3%A7%C3%B5es-microsoft-para-sql-server-2005/</link><pubDate>Wed, 04 Feb 2009 10:27:06 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2009/02/certifica%C3%A7%C3%B5es-microsoft-para-sql-server-2005/</guid><description>&lt;p>Para conhecimento de todos, estou estudando (nem tanto quanto eu gostaria/deveria, mas enfim) para as provas de certificação da Microsoft em SQL Server 2005.&lt;/p>
&lt;p>Como existem muitas dúvidas a respeito, vou colocar aqui as provas que você deve fazer para atingir a titulação desejada.&lt;/p>
&lt;p>&lt;strong>MCTS – MICROSOFT CERTIFIED TECHNOLOGY SPECIALIST&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>exame obrigatório&lt;/strong>
&lt;ul>
&lt;li>&lt;a href="http://www.microsoft.com/learning/exams/70-431.asp" target="_blank" rel="noopener">70-431&lt;/a> – Microsoft SQL Server 2005 – Implementation and Maintenance&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>MCITP: DATABASE DEVELOPER – MICROSOFT CERTIFIED IT PROFESSIONAL – DATABASE DEVELOPER&lt;/strong>&lt;/p></description></item><item><title>MSDN Experience: SQL Server</title><link>https://blog.merazzi.com.br/posts/2008/11/msdn-experience-sql-server/</link><pubDate>Mon, 10 Nov 2008 15:19:06 +0000</pubDate><guid>https://blog.merazzi.com.br/posts/2008/11/msdn-experience-sql-server/</guid><description>&lt;p>Pra quem não conhece, o MSDN Brasil oferece um programa de treinamento completo sobre o SQL Server e outras tecnologias, chamado MSDN Experience (&lt;a href="http://www.microsoft.com/brasil/msdn/experience/default.mspx" target="_blank" rel="noopener">http://www.microsoft.com/brasil/msdn/experience/default.mspx&lt;/a>).&lt;br>
Como estou trabalhando direamente com SQL Server, entrei para dar uma olhada nos vídeos que tem lá e reparei que já estão disponíveis os testes do primeiro e do segundo módulo.&lt;br>
Para quem quer se aprofundar sobre o assunto e ver o seu nível de conhecimento, recomendo entrar e dar uma olhada.&lt;br>
Se você ainda não conhece o programa e quer aprender sobre o SQL Server, acesse: &lt;a href="http://www.msdnbrasil.com.br/experience/sqlserver/Home.aspx" target="_blank" rel="noopener">http://www.msdnbrasil.com.br/experience/sqlserver/Home.aspx&lt;/a>.&lt;/p></description></item></channel></rss>