# Microsoft SQL Server

O Microsoft SQL Server é um sistema gerenciador de Banco de dados relacional (SGBD) desenvolvido pela Sybase em parceria com a Microsoft.
Esta parceria durou até 1994, com o lançamento da versão para Windows NT e desde então a Microsoft mantém a manutenção do produto.
Como um Banco de dados, é um produto de software cuja principal função é a de armazenar e recuperar dados solicitados por outras aplicações de software, seja aqueles no mesmo computador ou aqueles em execução em outro computador através de uma rede (incluindo a Internet).
Há várias diferentes edições do Microsoft SQL Server destinadas a públicos diferentes e para diferentes cargas de trabalho (variando de pequenas aplicações que armazenam e recuperam dados no mesmo computador, a milhões de usuários e computadores que acessam grandes quantidades de dados a partir da Internet ao mesmo tempo).
Suas linguagens de consulta primárias são Transact-SQL (T-SQL) e ANSI SQL.
Mantido pela Microsoft há anos, é um dos principais SGBDs relacionais do mercado. Distribuído em diferentes edições e com várias ferramentas integradas, esse banco é capaz de atender às demandas desde os mais simples negócios até os mais complexos cenários que lidam com grande volume de dados.
Antigamente o SQL Server era um banco de dados relacional. Essencialmente você armazenava nele dados estruturados no formato tabular (linhas e colunas).
Ele permite a criação de tabelas relacionadas, evitando a necessidade de armazenar dados redundantes em vários locais dentro de um banco de dados. O modelo relacional também fornece integridade referencial e outras restrições de integridade para manter a precisão dos dados. O SQL Server suporta transações, é aderente e suporta os princípios de atomicidade, consistência, isolamento e durabilidade.
| Serviço do SQL Server | Principal Função |
| Database Engine | Armazenamento de dados OLTP |
| Reporting Services | Relatório de dados |
| Analysis Services | Análise de dados OLAP |
| Integration Services | Fluxos de dados |
| Data Quality Services | Limpeza de dados |
| Master Data Services | Repositório único de dados |
| Replicação | Replicação de dados entre servidores |

## Arquitetura

A camada de protocolo implementa a interface externa para o SQL Server. Todas as operações que podem ser chamadas no SQL Server são comunicadas a ele por meio de um formato definido pela Microsoft, chamado TDS (Tabular Data Stream). TDS é um protocolo da camada de aplicação, usado para transferir dados entre um servidor de banco de dados e um cliente. Inicialmente projetados e desenvolvidos pela Sybase Inc. para seu mecanismo de banco de dados relacional Sybase SQL Server em 1984 e posteriormente pela Microsoft no Microsoft SQL Server, os pacotes TDS podem ser encapsulados em outros protocolos dependentes de transporte físico, incluindo TCP / IP, pipes nomeados e compartilhados memória. Conseqüentemente, o acesso ao SQL Server está disponível nesses protocolos. Além disso, a API do SQL Server também é exposta em serviços da web.

### Armazenamento de dados

O armazenamento de dados é um banco de dados, que é uma coleção de tabelas com colunas digitadas. O SQL Server suporta diferentes tipos de dados, incluindo tipos primitivos como Integer, Float, Decimal, Char (incluindo cadeias de caracteres), Varchar (cadeias de caracteres de comprimento variável), binário (para blobs de dados não estruturados), Text (para dados textuais) entre outros. . O arredondamento de floats para inteiros usa Rounding Aritmético Simétrico ou Round Redondo Simétrico (correção) dependendo dos argumentos:
Round SELECT (2.5, 0) dá 3.
O Microsoft SQL Server também permite que os tipos compostos definidos pelo usuário (UDTs) sejam definidos e usados. Ele também disponibiliza estatísticas do servidor como tabelas e exibições virtuais (chamadas DMVs ou Visualizações de Gerenciamento Dinâmico). Além das tabelas, um banco de dados também pode conter outros objetos, incluindo exibições, procedimentos armazenados, índices e restrições, juntamente com um log de transações. Um banco de dados do SQL Server pode conter no máximo 231 objetos e pode abranger vários arquivos no nível do SO com um tamanho máximo de arquivo de 2$^{60}$ bytes (1 exabyte). Os dados no banco de dados são armazenados em arquivos de dados primários com uma extensão .mdf. Os arquivos de dados secundários, identificados com uma extensão .ndf, são usados para permitir que os dados de um único banco de dados sejam distribuídos em mais de um arquivo e, opcionalmente, em mais de um sistema de arquivos. Os arquivos de log são identificados com a extensão .ldf.
O espaço de armazenamento alocado a um banco de dados é dividido em páginas numeradas sequencialmente, cada uma com 8 KB de tamanho. Uma página é a unidade básica de E / S para operações do SQL Server. Uma página é marcada com um cabeçalho de 96 bytes que armazena metadados sobre a página, incluindo o número da página, o tipo de página, o espaço livre na página e o ID do objeto que a possui. O tipo de página define os dados contidos na página: dados armazenados no banco de dados, índice, mapa de alocação que contém informações sobre como as páginas são alocadas a tabelas e índices, mapa de alterações que contém informações sobre as alterações feitas em outras páginas desde o último backup ou registro ou contém tipos de dados grandes, como imagem ou texto. Enquanto página é a unidade básica de uma operação de E / S, o espaço é realmente gerenciado em termos de uma extensão que consiste em 8 páginas. Um objeto de banco de dados pode abranger todas as 8 páginas em uma extensão ("extensão uniforme") ou compartilhar uma extensão com até mais 7 objetos ("extensão mista"). Uma linha em uma tabela de banco de dados não pode abranger mais de uma página, portanto, é limitada a 8 KB de tamanho. No entanto, se os dados excederem 8 KB e a linha contiver dados varchar ou varbinary, os dados nessas colunas serão movidos para uma nova página (ou possivelmente uma sequência de páginas, denominada unidade de alocação) e substituídos por um ponteiro para os dados.
Para o armazenamento físico de uma tabela, suas linhas são divididas em uma série de partições (numeradas de 1 a n). O tamanho da partição é definido pelo usuário; Por padrão, todas as linhas estão em uma única partição. Uma tabela é dividida em várias partições para distribuir um banco de dados por um cluster de computador. As linhas em cada partição são armazenadas na estrutura B-tree ou heap. Se a tabela tiver um índice clusterizado associado para permitir a rápida recuperação de linhas, as linhas serão armazenadas em ordem de acordo com seus valores de índice, com uma árvore B fornecendo o índice. Os dados estão no nó folha das folhas e outros nós armazenam os valores de índice para os dados foliares alcançáveis a partir dos respectivos nós. Se o índice não estiver em cluster, as linhas não serão classificadas de acordo com as chaves do índice. Uma exibição indexada tem a mesma estrutura de armazenamento que uma tabela indexada. Uma tabela sem um índice clusterizado é armazenada em uma estrutura de heap não-ordenada. No entanto, a tabela pode ter índices não agrupados para permitir a recuperação rápida de linhas. Em algumas situações, a estrutura de heap possui vantagens de desempenho em relação à estrutura em cluster. Ambas as pilhas e árvores B podem abranger várias unidades de alocação.

### Gerenciamento de buffers

O SQL Server armazena em buffer páginas na RAM para minimizar a E / S do disco. Qualquer página de 8 KB pode ser armazenada em buffer na memória, e o conjunto de todas as páginas atualmente armazenadas em buffer é chamado de cache de buffer. A quantidade de memória disponível para o SQL Server decide quantas páginas serão armazenadas em cache na memória. O cache de buffer é gerenciado pelo Gerenciador de Buffer. Ler ou gravar em qualquer página copia para o cache do buffer. Leituras subseqüentes ou gravações são redirecionadas para a cópia na memória, em vez da versão no disco. A página é atualizada no disco pelo Gerenciador de Buffer apenas se o cache na memória não for referenciado por algum tempo. Ao gravar as páginas no disco, a E / S assíncrona é usada, por meio da qual a operação de E / S é feita em um encadeamento secundário, para que outras operações não precisem aguardar a conclusão da operação de E / S. Cada página é escrita junto com sua soma de verificação quando está escrita. Ao ler a página de volta, sua soma de verificação é computada novamente e combinada com a versão armazenada para garantir que a página não tenha sido danificada ou adulterada nesse meio tempo.

### Concorrência e bloqueio

O SQL Server permite que vários clientes usem o mesmo banco de dados simultaneamente. Como tal, ele precisa controlar o acesso simultâneo aos dados compartilhados, para garantir a integridade dos dados - quando vários clientes atualizam os mesmos dados ou os clientes tentam ler dados que estão em processo de serem alterados por outro cliente. O SQL Server fornece dois modos de controle de simultaneidade: simultaneidade pessimista e simultaneidade otimista. Quando o controle de concorrência pessimista está sendo usado, o SQL Server controla o acesso simultâneo usando bloqueios. Os bloqueios podem ser compartilhados ou exclusivos. Bloqueio exclusivo concede ao usuário acesso exclusivo aos dados - nenhum outro usuário pode acessar os dados, desde que o bloqueio seja mantido. Os bloqueios compartilhados são usados quando alguns dados estão sendo lidos - vários usuários podem ler dados bloqueados com um bloqueio compartilhado, mas não adquirir um bloqueio exclusivo. O último teria que esperar que todos os bloqueios compartilhados fossem liberados.
Os bloqueios podem ser aplicados em diferentes níveis de granularidade - em tabelas inteiras, páginas ou até mesmo em linhas por linhas nas tabelas. Para índices, pode estar no índice inteiro ou nas folhas de índice. O nível de granularidade a ser utilizado é definido por banco de dados pelo administrador do banco de dados. Embora um sistema de bloqueio refinado permita que mais usuários usem a tabela ou o índice simultaneamente, ele requer mais recursos, portanto, não gera automaticamente um desempenho mais alto. O SQL Server também inclui mais duas soluções leves de exclusão mútua - travas e spinlocks - que são menos robustas que os bloqueios, mas consomem menos recursos. O SQL Server os usa para DMVs e outros recursos que geralmente não estão ocupados. O SQL Server também monitora todos os threads de trabalho que adquirem bloqueios para garantir que eles não acabem em deadlocks - caso isso aconteça, o SQL Server adota medidas corretivas, que em muitos casos matam um dos threads emaranhados em um deadlock e o rollback a transação começou. Para implementar o bloqueio, o SQL Server contém o Gerenciador de Bloqueio. O Gerenciador de Bloqueio mantém uma tabela na memória que gerencia os objetos e bloqueios do banco de dados, se houver, neles junto com outros metadados sobre o bloqueio. O acesso a qualquer objeto compartilhado é mediado pelo gerenciador de bloqueio, que concede acesso ao recurso ou o bloqueia.
O SQL Server também fornece o mecanismo de controle de simultaneidade otimista, que é semelhante ao controle de simultaneidade multiversão usado em outros bancos de dados. O mecanismo permite que uma nova versão de uma linha seja criada sempre que a linha é atualizada, em vez de sobrescrever a linha, ou seja, uma linha é identificada adicionalmente pelo ID da transação que criou a versão da linha. Tanto a versão antiga quanto a nova da linha são armazenadas e mantidas, embora as versões antigas sejam removidas do banco de dados para um banco de dados do sistema identificado como Tempdb. Quando uma linha está sendo atualizada, outras solicitações não são bloqueadas (diferentemente do bloqueio), mas são executadas na versão mais antiga da linha. Se a outra solicitação for uma instrução de atualização, resultará em duas versões diferentes das linhas - ambas serão armazenadas pelo banco de dados, identificadas por seus respectivos IDs de transação.

## Recuperação de dados e programação

O principal modo de recuperar dados de um banco de dados do SQL Server é consultá-los. A consulta é expressa usando uma variante do SQL chamada T-SQL, um dialeto do Microsoft SQL Server compartilha com o Sybase SQL Server devido ao seu legado. A consulta especifica declarativamente o que deve ser recuperado. Ele é processado pelo processador de consultas, que descobre a sequência de etapas que será necessária para recuperar os dados solicitados. A seqüência de ações necessárias para executar uma consulta é chamada de plano de consulta. Pode haver várias maneiras de processar a mesma consulta. Por exemplo, para uma consulta que contém uma instrução de junção e uma instrução select, executar junção nas duas tabelas e, em seguida, executar a seleção nos resultados forneceria o mesmo resultado da seleção de cada tabela e executaria a junção, mas resultaria em execução diferente planos. Nesse caso, o SQL Server escolhe o plano que deve gerar os resultados no menor tempo possível. Isso é chamado de otimização de consulta e é executado pelo próprio processador de consultas.
O SQL Server inclui um otimizador de consulta baseado em custo que tenta otimizar o custo, em termos dos recursos necessários para executar a consulta. Com uma consulta, o otimizador de consulta analisa o esquema do banco de dados, as estatísticas do banco de dados e o carregamento do sistema nesse momento. Em seguida, ele decide qual sequência acessar as tabelas referidas na consulta, qual sequência executar as operações e qual método de acesso a ser usado para acessar as tabelas. Por exemplo, se a tabela tiver um índice associado, se o índice deve ser usado ou não: se o índice estiver em uma coluna que não é exclusiva para a maioria das colunas (baixa "seletividade"), pode não valer a pena usar o índice para acessar os dados. Finalmente, decide se deve executar a consulta simultaneamente ou não. Embora uma execução simultânea seja mais dispendiosa em termos de tempo total do processador, como a execução é realmente dividida em processadores diferentes, isso pode significar que ela será executada mais rapidamente. Quando um plano de consulta é gerado para uma consulta, ele é temporariamente armazenado em cache. Para invocações adicionais da mesma consulta, o plano em cache é usado. Planos não utilizados são descartados após algum tempo.
O SQL Server também permite que procedimentos armazenados sejam definidos. Procedimentos armazenados são consultas T-SQL parametrizadas, que são armazenadas no próprio servidor (e não são emitidas pelo aplicativo cliente, como é o caso das consultas gerais). Os procedimentos armazenados podem aceitar valores enviados pelo cliente como parâmetros de entrada e enviar resultados como parâmetros de saída. Eles podem chamar funções definidas e outros procedimentos armazenados, incluindo o mesmo procedimento armazenado (até um determinado número de vezes). Eles podem receber acesso seletivamente. Ao contrário de outras consultas, os procedimentos armazenados têm um nome associado, que é usado no tempo de execução para resolver as consultas reais. Além disso, como o código não precisa ser enviado do cliente todas as vezes (como pode ser acessado pelo nome), ele reduz o tráfego da rede e melhora o desempenho. Planos de execução para procedimentos armazenados também são armazenados em cache conforme necessário.

### T-SQL

T-SQL (Transact-SQL) é o meio secundário de programação e gerenciamento do SQL Server. Ele expõe palavras-chave para as operações que podem ser executadas no SQL Server, incluindo criação e alteração de esquemas de banco de dados, entrada e edição de dados no banco de dados, bem como monitoramento e gerenciamento do próprio servidor. Os aplicativos cliente que consomem dados ou gerenciam o servidor aproveitam a funcionalidade do SQL Server enviando consultas e instruções T-SQL que são processadas pelo servidor e os resultados (ou erros) retornados ao aplicativo cliente. O SQL Server permite que ele seja gerenciado usando o T-SQL. Para isso, expõe as tabelas somente leitura das quais as estatísticas do servidor podem ser lidas. A funcionalidade de gerenciamento é exposta por meio de procedimentos armazenados definidos pelo sistema, que podem ser chamados a partir de consultas T-SQL para executar a operação de gerenciamento. Também é possível criar servidores vinculados usando o T-SQL. Servidores vinculados permitem que uma única consulta processe operações executadas em vários servidores.

## Serviços
### Service Broker

Usado dentro de uma instância, ambiente de programação. Para aplicativos de instância cruzada, o Service Broker se comunica por TCP / IP e permite que os diferentes componentes sejam sincronizados por meio da troca de mensagens. O Service Broker, que é executado como parte do mecanismo do banco de dados, fornece uma plataforma confiável de mensagens e enfileiramento de mensagens para aplicativos do SQL Server

### Serviços de Replicação

Os Serviços de Replicação do SQL Server são usados pelo SQL Server para replicar e sincronizar objetos de banco de dados, na íntegra ou em um subconjunto dos objetos presentes, nos agentes de replicação, que podem ser outros servidores de banco de dados na rede ou caches de banco de dados no lado do cliente. O Lulla segue um modelo de editor / assinante, isto é, as alterações são enviadas por um servidor de banco de dados ("editor") e são recebidas por outros ("assinantes"). O SQL Server oferece suporte a três tipos diferentes de replicação:
* Replicação de transação Cada transação feita no banco de dados do editor (banco de dados mestre) é sincronizada com os assinantes, que atualizam seus bancos de dados com a transação. A replicação transacional sincroniza os bancos de dados quase em tempo real.
* Mesclar replicação As alterações feitas nos bancos de dados do editor e do assinante são rastreadas e, periodicamente, as alterações são sincronizadas bidirecionalmente entre o editor e os assinantes. Se os mesmos dados tiverem sido modificados de maneira diferente nos bancos de dados do editor e do assinante, a sincronização resultará em um conflito que deve ser resolvido manualmente ou por meio de políticas predefinidas. O rowguid precisa ser configurado em uma coluna se a replicação de mesclagem estiver configurada.
* Replicação de instantâneo
* A replicação de instantâneo publica uma cópia do banco de dados inteiro (o instantâneo dos dados) e é replicado para os assinantes. Outras alterações no instantâneo não são rastreadas.

### Analysis Services

O SQL Server Analysis Services adiciona recursos de OLAP e mineração de dados para bancos de dados do SQL Server. O mecanismo OLAP suporta os modos de armazenamento MOLAP, ROLAP e HOLAP para dados. O Analysis Services suporta o padrão XML for Analysis como o protocolo de comunicação subjacente. Os dados do cubo podem ser acessados usando consultas MDX e LINQ. A funcionalidade específica de mineração de dados é exposta por meio da linguagem de consulta DMX. O Analysis Services inclui vários algoritmos - árvores de decisão, algoritmo de agrupamento, algoritmo Naive Bayes, análise de séries temporais, algoritmo de agrupamento de sequências, análise de regressão linear e logística e redes neurais - para uso em mineração de dados.

### Reporting Services

O SQL Server Reporting Services é um ambiente de geração de relatórios para dados coletados de bancos de dados do SQL Server. É administrado através de uma interface web. Os serviços de relatórios apresentam uma interface de serviços da Web para suportar o desenvolvimento de aplicativos de relatórios personalizados. Relatórios são criados como arquivos RDL. Os relatórios podem ser criados usando versões recentes do Microsoft Visual Studio (Visual Studio.NET 2003, 2005 e 2008) com o Business Intelligence Development Studio, instalado ou com o Report Builder incluído. Uma vez criados, os arquivos RDL podem ser renderizados em vários formatos, incluindo Excel, PDF, CSV, XML, BMP, EMF, GIF, JPEG, PNG e TIFF e HTML Web Archive.

### Serviços de Notificação

Originalmente apresentado como um complemento pós-lançamento para o SQL Server 2000, o Notification Services foi empacotado como parte da plataforma Microsoft SQL Server pela primeira e única vez com o SQL Server 2005. O SQL Server Notification Services é um mecanismo de geração de dados notificações, que são enviadas aos assinantes do Notification Services. Um assinante se registra para um evento ou transação específica (que é registrado no servidor de banco de dados como um acionador); Quando o evento ocorre, o Notification Services pode usar um dos três métodos para enviar uma mensagem ao assinante informando sobre a ocorrência do evento. Esses métodos incluem SMTP, SOAP ou gravando em um arquivo no sistema de arquivos. O Notification Services foi descontinuado pela Microsoft com o lançamento do SQL Server 2008 em agosto de 2008 e não é mais um componente oficialmente suportado da plataforma de banco de dados do SQL Server.

### Serviços de Integração

O SSIS (SQL Server Integration Services) fornece recursos de ETL para o SQL Server para importação de dados, integração de dados e necessidades de data warehousing. O Integration Services inclui ferramentas GUI para criar fluxos de trabalho, como extrair dados de várias origens, consultar dados, transformar dados - incluindo agregação, eliminação de duplicação, desnormalização e mesclagem de dados - e exportar os dados transformados em bancos de dados ou arquivos de destino.

### SQL Server Management Studio

O SQL Server Management Studio é uma ferramenta de GUI incluída no SQL Server 2005 e posterior para configurar, gerenciar e administrar todos os componentes no Microsoft SQL Server. A ferramenta inclui editores de scripts e ferramentas gráficas que trabalham com objetos e recursos do servidor. O SQL Server Management Studio substitui o Enterprise Manager como a principal interface de gerenciamento do Microsoft SQL Server desde o SQL Server 2005. Uma versão do SQL Server Management Studio também está disponível para o SQL Server Express Edition, que é conhecida como SQL Server Management Studio Express (SSMSE ). Um recurso central do SQL Server Management Studio é o Pesquisador de Objetos, que permite ao usuário navegar, selecionar e atuar sobre qualquer um dos objetos dentro do servidor. Ele pode ser usado para observar visualmente e analisar planos de consulta e otimizar o desempenho do banco de dados, entre outros. O SQL Server Management Studio também pode ser usado para criar um novo banco de dados, alterar qualquer esquema de banco de dados existente, adicionando ou modificando tabelas e índices ou analisando o desempenho. Inclui as janelas de consulta que fornecem uma interface baseada em GUI para escrever e executar consultas.

### Visual Studio

O Microsoft Visual Studio inclui suporte nativo para programação de dados com o Microsoft SQL Server. Pode ser usado para escrever e depurar código para ser executado pelo SQL CLR. Também inclui um designer de dados que pode ser usado para criar, visualizar ou editar graficamente esquemas de bancos de dados. As consultas podem ser criadas visualmente ou usando código. SSMS 2008 em diante, fornece intellisense para consultas SQL também.

### SQL Server Operations Studio

O SQL Server Operations Studio (Preview) é um editor de consultas de plataforma cruzada disponível como um download opcional. A ferramenta permite aos usuários escrever consultas; resultados da consulta de exportação; envie scripts SQL para repositórios GIT e execute diagnósticos básicos de servidor. O SQL Server Operations Studio suporta sistemas Windows, Mac e Linux.

### Business Intelligence Development Studio

O Business Intelligence Development Studio (BIDS) é o IDE da Microsoft usado para desenvolver soluções de análise de dados e Business Intelligence utilizando o Microsoft SQL Server Analysis Services, o Reporting Services e o Integration Services. Ele é baseado no ambiente de desenvolvimento do Microsoft Visual Studio, mas é personalizado com as extensões e tipos de projeto específicos do SQL Server, incluindo ferramentas, controles e projetos para relatórios (usando o Reporting Services), cubos e estruturas de mineração de dados (usando o Analysis Services). Para o SQL Server 2012 e posterior, esse IDE foi renomeado para SSDT (Ferramentas de dados do SQL Server).

## Microsoft SQL Server 2017
### Sua opção de linguagens e plataformas

Crie aplicativos modernos usando a linguagem de sua preferência, na infraestrutura local e na nuvem, agora em contêineres do Docker, Windows e Linux.

### Performance líder da indústria

Aproveite a escalabilidade, a performance e a disponibilidade inovadoras para aplicativos inteligentes de missão crítica e data warehouses.

### Banco de dados menos vulnerável

Proteja dados em repouso e em movimento com o banco de dados menos vulnerável dos últimos sete anos no banco de dados de vulnerabilidades do NIST.

### Inteligência em tempo real

Obtenha insights transformadores para a sua empresa com análises em tempo real a até 1 milhão de previsões por segundo.

### BI móvel de ponta a ponta

Transforme dados brutos em relatórios significativos que podem ser enviados a qualquer dispositivo por um quarto do custo de outras soluções de self-service.
Saiba por que a Gartner reconhece a Microsoft como líder em ODBMS

### Versões SQL Server

Em Agosto de 2019, as seguintes versões são suportadas pela Microsoft:
* SQL Server 2008
* SQL Server 2008 R2
* SQL Server 2012
* SQL Server 2014
* SQL Server 2016
* SQL Server 2017
* SQL Server 2019
Do SQL Server 2016 em diante, o produto é suportado apenas em processadores x64. Tambem foi adicionado novos recursos de segurança, recursos de consulta, integração do Hadoop com a nuvem, análise R e vários aprimoramentos e melhorias.
O SQL Server 2017 é uma etapa importante para transformar o SQL Server em uma plataforma que oferece opções de linguagens de desenvolvimento, tipos de dados, locais ou nuvens e sistemas operacionais, utilizando a capacidade do SQL Server no Linux, em contêineres do Docker baseados em Linux e no Windows. Essa Versão tambem oferece suporte à implantação de soluções de aprendizado de máquina distribuídas e escalonáveis em várias plataformas, usando várias fontes de dados empresariais, inclusive Hadoop e Teradata.
O SQL Server 2019 é a versāo atual, lançada em 4 de Novembro de 2019. introduziu Clusters de Big Data para SQL Server. Ele também fornece melhorias e recursos adicionais para o mecanismo de banco de dados, SQL Server Analysis Services, SQL Server Serviços de machine learning, SQL Server em Linux e SQL Server Master Data Services.

### Edições Especiais
#### Azure

    Azure SQL Database is the cloud-based version of Microsoft SQL Server, presented as a platform as a service offering on Microsoft Azure.

#### Azure

    Azure SQL Data Warehouse is the cloud-based version of Microsoft SQL Server in a MPP (massively parallel processing) architecture for analytics workloads, presented as a platform as a service offering on Microsoft Azure.

#### Compact (SQL CE)

    The compact edition is an embedded database engine. Unlike the other editions of SQL Server, the SQL CE engine is based on SQL Mobile (initially designed for use with hand-held devices) and does not share the same binaries. Due to its small size (1 MB DLL footprint), it has a markedly reduced feature set compared to the other editions. For example, it supports a subset of the standard data types, does not support stored procedures or Views or multiple-statement batches (among other limitations). It is limited to 4 GB maximum database size and cannot be run as a Windows service, Compact Edition must be hosted by the application using it. The 3.5 version includes support for ADO.NET Synchronization Services. SQL CE does not support ODBC connectivity, unlike SQL Server proper.

#### Developer

    SQL Server Developer Edition includes the same features as SQL Server Enterprise Edition, but is limited by the license to be only used as a development and test system, and not as production server. Starting early 2016, Microsoft made this version free of charge to the public.

#### Embedded (SSEE)

    SQL Server 2005 Embedded Edition is a specially configured named instance of the SQL Server Express database engine which can be accessed only by certain Windows Services.

#### Evaluation

    SQL Server Evaluation Edition, also known as the Trial Edition, has all the features of the Enterprise Edition, but is limited to 180 days, after which the tools will continue to run, but the server services will stop.

#### Fast Track

    SQL Server Fast Track is specifically for enterprise-scale data warehousing storage and business intelligence processing, and runs on reference-architecture hardware that is optimized for Fast Track.

#### LocalDB

    Introduced in SQL Server Express 2012, LocalDB is a minimal, on-demand, version of SQL Server that is designed for application developers. It can also be used as an embedded database.

#### Analytics Platform System (APS)

    Formerly Parallel Data Warehouse (PDW) A massively parallel processing (MPP) SQL Server appliance optimized for large-scale data warehousing such as hundreds of terabytes.

#### Datawarehouse Appliance Edition

    Pre-installed and configured as part of an appliance in partnership with Dell & HP base on the Fast Track architecture. This edition does not include SQL Server Integration Services, Analysis Services, or Reporting Services.

### Edições descontinuadas
#### MSDE

    Microsoft SQL Server Data Engine / Desktop Engine / Desktop Edition. SQL Server 7 and SQL Server 2000. Intended for use as an application component, it did not include GUI management tools. Later, Microsoft also made available a web admin tool. Included with some versions of Microsoft Access, Microsoft development tools, and other editions of SQL Server.

#### Personal Edition

    SQL Server 2000. Had workload or connection limits like MSDE, but no database size limit. Includes standard management tools. Intended for use as a mobile / disconnected proxy, licensed for use with SQL Server 2000 Standard edition.

#### Datacenter

    SQL Server 2008 R2 Datacenter is a full-featured edition of SQL Server and is designed for datacenters that need high levels of application support and scalability. It supports 256 logical processors and virtually unlimited memory and comes with StreamInsight Premium edition. The Datacenter edition has been retired in SQL Server 2012; all of its features are available in SQL Server 2012 Enterprise Edition.

### As edições do SQL Server 2019

O SQL Server 2019 é instalado em um servidor (este servidor pode ter o sistema operacional Windows ou Linux) ou em um container Docker. Essa é uma das diferenças entre o SQL Server 2019 e o Banco de Dados SQL do Azure que é um serviço na nuvem, ou seja não é instalado em um servidor.
As edições disponíveis são:
* Enterprise
** É a versão completa com recursos datacenter, virtualização ilimitada e BI. Esta versão não é gratuita e o seu licenciamento é feito por núcleo.
* Standard
** Permite gerenciamento de bancos de dados (relacionais e BI), oferece suporte a ferramentas de desenvolvimento comuns para rede local e em nuvem — permitindo o gerenciamento eficiente de bancos de dados com mínimos recursos de TI. Esta versão não é gratuita e o seu licenciamento é feito por núcleo.
* Web
** Plataforma de dados segura, econômica e altamente escalável para sites. Disponível somente para provedores de serviços. O valor depende do provedor que hospeda o site.
* Developer
** Esta edição é idêntica a edição Enterprise, de forma que permite aos desenvolvedores criar, testar e demonstrar de maneira econômica os aplicativos baseados no SQL Server. Esta edição é gratuita
* Express
** Banco de dados de nível básico gratuito ideal para aprendizado, além da criação de aplicativos que utilizam até 10 GB de dados. Esta edição também é gratuita.

### Requisitos de processador, de memória e do sistema operacional

Os requisitos de memória e processador a seguir aplicam-se a todas as edições do SQL Server:
| Componente | Requisito |
| Memória * | Mínimo:Edições Express: 512 MB Todas as outras edições: 1 GB Recomendado:Edições Express: 1 GB Todas as outras edições: pelo menos 4 GB e deve ser aumentado à medida que o banco de dados cresce para garantir um ótimo desempenho. |
| Velocidade do processador | Mínimo: processador x64: 1,4 GHz Recomendável: : 2,0 GHz ou mais rápido |
| Tipo de processador | |