close

Microsoft SQL Server

Ir para a navegação Ir para a pesquisa
Microsoft SQL Server
Parte do sistema de gerenciamento de banco de dados relacional
Aprimoramentos de rede do Microsoft SQL Server 1 11.png
Informações gerais
tipo de programa banco de dados relacional do sistema de gerenciamento
desenvolvedor Microsoft
lançamento inicial 24 de abril de 1989
LicençaEULA da Microsoft
Informação técnica
Programado em C , C++
arquivos legíveis
arquivos editáveis
Links

O Microsoft SQL Server é um sistema de gerenciamento de banco de dados relacional desenvolvido pela Microsoft .

A linguagem de desenvolvimento utilizada (por linha de comando ou pela interface gráfica do Management Studio) é o Transact-SQL (TSQL), uma implementação do padrão ANSI da linguagem SQL, utilizada para manipular e recuperar dados ( DML ), criar tabelas e definir relações entre eles ( DDL ).

Entre os concorrentes mais destacados do SQL Server estão: Oracle , MariaDB , MySQL , PostgreSQL . O SQL Server tradicionalmente está disponível apenas para sistemas operacionais Microsoft Windows , mas a partir de 2016 está disponível para GNU/Linux , [ 2 ] [ 3 ]​ e a partir de 2017 para Docker também. [ 4 ]

Pode ser configurado para usar várias instâncias no mesmo servidor físico, a primeira instalação geralmente leva o nome do servidor e as seguintes - nomes específicos (com um hífen entre o nome do servidor e o nome da instalação).

Versões

Histórico de versões [ 5 ]
Versão Ano nome da versão nome da chave
1.0
( OS/2 )
1989 SQL Server 1-0 SQL
4.21
( WinNT )
1993 SQL Server 4.21 SEQUÊNCIA
6,0 novecentos e noventa e cinco SQL Server 6.0 SQL95
6,5 mil novecentos e noventa e seis SQL Server 6.5 Hidra
7,0 1998 SQL Server 7.0 [ 6 ] esfinge
- 1999 Ferramentas
OLAP do SQL Server 7.0
Prato
8,0 2000 SQL Server 2000 [ 7 ] Siló
8,0 2003
Edição de 64 bits do SQL Server 2000
Liberdade
9,0 2005 SQL Server 2005 [ 8 ] Yukon
10,0 2008 SQL Server 2008 [ 9 ] Katmai
10,25 2010 Banco de dados SQL-Azure CloudDatabase
10,50 2010 SQL Server 2008 R2 [ 10 ] Kilimanjaro
11,0 2012 SQL Server 2012 [ 11 ] Denali
12,0 2015 SQL Server 2014 [ 12 ] SQL14 (anteriormente Hekaton)
13,0 2016 SQL Server 2016 SQL16
14,0 2017 SQL Server 2017 vPróximo 2017
15,0 2019 SQL Server 2019 Dafne

O código-fonte original do SQL Server usado em versões anteriores à versão 7.0 teria sido adquirido da Sybase , mas foi atualizado nas versões 7.0 e 2000 e reescrito na versão 2005. Geralmente, a cada 2-3 anos, uma nova versão é lançada e, entre esses lançamentos, são propostos service packs com melhorias e correções de bugs , e hotfixes para problemas urgentes no sistema de segurança ou bugs críticos.

Disponibilidade

O Microsoft SQL Server é vendido como uma licença. No entanto, os usuários que desejam usar o SQL Server, sendo tudo sobre o programa, como solicitar e armazenar informações, precisam de uma CAL.

Modelos de licença

O Microsoft SQL Server usa diferentes modelos de licenciamento, são licenças Server + CAL e licenças Core.

Modelo de servidor + CAL

Este modelo de licença é uma opção mais barata, é adquirido com a licença e CALs adicionais devem ser adquiridas para usuários ou dispositivos.

Licenças por núcleo

Ao escolher o licenciamento por núcleo, você licencia vários núcleos do processador físico do servidor. Com o Microsoft SQL Server 2019, pelo menos 4 núcleos devem sempre ser licenciados. Esse modelo de licença é frequentemente escolhido por grandes empresas.

As CALs não são necessárias para isso.

Licença de Acesso para Cliente (CAL)

Uma licença de acesso de cliente destina-se a fornecer direitos de uso para permitir que usuários ou dispositivos acessem o software do servidor. Isso significa que todo computador ou usuário que precisa de acesso ao software do servidor precisa de uma CAL.

CALs de usuário

Uma User CAL dá acesso ao recurso mencionado acima a um usuário na rede. Isso significa que esse usuário também pode acessar a rede do servidor por meio de outros dispositivos.

CALs de dispositivo

Uma Device CAL dá acesso a um dispositivo. Isso significa que todos os usuários deste dispositivo podem fazer login para acessar o servidor. Isso geralmente só é benéfico quando há mais usuários do que dispositivos dentro de uma organização, [ 13 ]

Características

Esse sistema inclui uma versão reduzida, chamada MSDE com o mesmo mecanismo de banco de dados, mas voltada para projetos menores, que em suas versões de 2005 e 2008 passa a ser a SQL Express Edition , que é uma edição distribuída gratuitamente .

É comum desenvolver projetos completos utilizando Microsoft SQL Server e Microsoft Access através do chamado ADP ( Access Data Project ). Desta forma, completa-se a base de dados ( Microsoft SQL Server ), com o ambiente de desenvolvimento ( VBA Access), através da implementação de aplicações de duas camadas através da utilização de formulários Windows .

SQLCMD , osql ou PowerShell são usados ​​para manipular SQL por meio de linhas de comando .

Para o desenvolvimento de aplicações mais complexas (três ou mais camadas), o Microsoft SQL Server inclui interfaces de acesso para diversas plataformas de desenvolvimento, inclusive .NET , mas o servidor está disponível apenas para Sistemas Operacionais .

O tipo NUMERIC foi aprimorado para ser usado como identificador de coluna a partir da versão 2008 R2.

Programação

T-SQL

O T-SQL (Transact-SQL) é o principal meio de interação com o Servidor, que permite realizar operações chave no SQL Server, incluindo criação e modificação de esquemas de banco de dados, inserção e modificação de dados no banco de dados. o servidor como tal. Isso é feito enviando instruções e declarações T-SQL que são processadas pelo servidor e os resultados (ou erros) retornados ao aplicativo cliente.

Cliente nativo SQL

SQL Native Client é a biblioteca de acesso a dados para clientes Microsoft SQL Server versão 2005 e posteriores. Implementa nativamente suporte para recursos do SQL Server, incluindo execução de fluxo de dados tabular, suporte para bancos de dados espelhados do SQL Server, suporte completo para todos os tipos de dados suportados pelo SQL Server, conjuntos assíncronos de operações, notificações de consulta, suporte para criptografia, além de receber vários conjuntos de resultados em uma única sessão de banco de dados. O SQL Native Client é usado como uma extensão dos plug-ins do SQL Server para outras tecnologias de acesso a dados, incluindo ADO ou OLE DB. O SQL Native Client também pode ser usado diretamente, ignorando as camadas de acesso a dados.

Edições e serviços

Cada edição do SQL Server possui diferentes versões com preços diferentes (para cada versão) que também dependem da configuração física do servidor. [ 14 ] As principais versões são apresentadas a seguir:

Empresa

Inclui todas as funcionalidades (desativadas em outras edições) É o tipo de versão com mais privilégios do mercado.

desenvolvedor

Uma edição com as mesmas características da Enterprise, para ser instalada apenas em ambiente de desenvolvimento e não em produção. Se for desenvolvido para uma edição Standard, os recursos desabilitados para esta versão devem ser levados em consideração.

Padrão

Uma versão limitada dependendo da configuração do servidor e suas características, projetada para servidores inferiores.

Por exemplo: na versão 2012, a edição Enterprise suporta um número ilimitado de processadores e adição a quente de memória e CPUs sem interrupção de serviço ou servidor; enquanto a edição Standard é limitada a 16 processadores e não suporta "adição a quente".

Expressar

Uma versão gratuita que permite a criação de bases de dados limitadas com funcionalidades básicas, de forma a suportar aplicações que necessitem de uma solução simples para armazenar uma quantidade limitada de dados, ou utilizadores cujos recursos e necessidades sejam limitados.

Na versão 2012, esta edição pode usar no máximo 1 GB de memória e armazenar no máximo 10 GB, funciona em servidores com número máximo de quatro processadores. Essas limitações são mantidas na versão 2014 (4 núcleos, 1 GB de RAM e 10 Gb por banco de dados).

SQLAzure

É uma versão do SQL Server na nuvem, que permite pagar mensalmente pelo serviço sem a necessidade de manter um servidor físico (On ​​Premise). A empresa paga apenas pelo serviço, e o serviço é gerenciado por meio de farms de servidores em diferentes lugares do mundo.

Com o SQL Azure não há necessidade de instalar, manter ou atualizar um servidor físico; apesar de este serviço depender de aspectos relacionados com problemas de segurança relativos à sua presença fora da empresa e à disponibilidade de uma ligação à Internet.

Por um tempo, o serviço foi estendido com a opção de criar um servidor virtual pela rede e instalar o SQL Server, bem como um dos serviços concorrentes, e gerenciar o servidor virtual como se fosse um servidor físico local (embora seja não acessível fisicamente). ); e você pode diferenciar entre a opção original que se chama PAAS ( Platform as a Service : Platform as a Service ) e a nova opção de servidores virtuais chamada IAAS ( Infrastructure as a Service : Infrastructure as a Service ).

Este serviço é fornecido pela Microsoft desde 2009 e agrega serviços semelhantes de empresas terceirizadas .

Interface do usuário

O SQL Server fornece algumas interfaces que mudaram ao longo dos anos, sendo as mais conhecidas as interfaces gráficas usadas como ferramenta de desenvolvimento padrão para desenvolvedores e administradores .

A interface gráfica até 2005 incluía o Enterprise Manager com visualização em árvore dos vários objetos e capacidade de gerenciá-los; e o Query Analyzer como interface textual para execução de comandos TSQL.

Na versão de 2005, as duas ferramentas foram unificadas em uma – o SQL Server Management Studio (SSMS), e a partir de 2008 a opção de trabalhar com o Visual Studio – a interface de desenvolvimento padrão da Microsoft (para as diferentes linguagens , BI , etc.). Outra interface opcional é o uso da Linha de Comando , com ferramentas como SQLCmd, ISQL, OSQL que possibilita a execução de scripts e processamento em lote . Desde 2008 pode ser desenvolvido com SQLCmd (Comando SQL) através do SSMS sem interconexão com a interface textual do Windows. Outra opção na área de scripts é o uso da linguagem de script Powershell da Microsoft .

Além das interfaces padrão do SQL Server, você pode executar comandos TSQL com ferramentas de conexão como ODBC e OLE-DB. [ 15 ]

Serviços

A contrario de sistemas de bases de datos como Microsoft Access que son "pasivas" y contienen un archivo a cual hay que conectar y la ejecución de los comandos se lleva a cabo en el cliente (la computadora de usuario), en SQL Server hay número de servicios , software que están ejecutadas en la memoria del servidor por parte del sistema, y por lo tanto aprovechan las capacidades del servidor que es más potente que los clientes, previenen congestión en la red , y pueden programar tareas que corran aunque el cliente no Está conectado.

Principais serviços:

  • SQL Server - O "motor" do sistema
  • SQL Agent - Execução de tarefas (Jobs, scripts agendados) e envio de avisos em caso de carga pesada e irregular no sistema
  • Full-Text Filter Daemon Launcher - Usando os índices especiais de "Full text search" para pesquisa de texto avançada
  • SQL Browser - O "ouvinte" dedicado aos comandos enviados e redirecioná-los ao seu destino
  • Servidor SSIS - A operação do SSIS (a ferramenta ETL )
  • Servidor SSAS - A operação do SSAS (a ferramenta OLAP )
  • Servidor SSRS - A operação do SSRS (a ferramenta de relatório)

Recursos e ferramentas básicos

Bancos de dados

Em cada instalação do SQL Server existem 4 bancos de dados do sistema, e a possibilidade de criação de novos bancos de dados pelo usuário, nos quais os dados são armazenados em tabelas.

Esses bancos de dados, criados pelos usuários, incluem basicamente um arquivo de dados (com o sufixo mdf) com as tabelas e os diferentes objetos no nível do banco de dados; e um arquivo de log (com sufixo ldf) com transações abertas, e transações fechadas, Sujeito ao modelo de recuperação selecionado (todas as alterações do banco de dados desde o último backup podem ser acumuladas no arquivo de log). Um conjunto de arquivos de dados pode ser criado além do principal (com o sufixo ndf) para considerações de eficiência, particionamento de carga de trabalho entre discos rígidos, etc.

Bancos de dados do sistema:

  • master - Todos os procedimentos, funções e tabelas do sistema que são usados ​​por todos os bancos de dados e que são instalados automaticamente, bem como aqueles que foram criados pelos administradores do sistema. Além disso, todas as definições de segurança no nível do servidor são armazenadas nesse banco de dados.
  • msdb - Armazenamento de tarefas do agente, códigos CLR mesclados no sistema, pacotes SSIS e muito mais.
  • model - O modelo de banco de dados. Cada novo banco de dados é criado como uma cópia desse banco de dados, a menos que algo mais tenha sido definido explicitamente.
  • tempdb - Banco de dados temporário que é criado novamente toda vez que o serviço é reiniciado. É usado para armazenar tabelas temporárias criadas por usuários ou pelo sistema (por exemplo, em ordenações complexas).

Tabelas fixas e temporárias

Do ponto de vista lógico, os dados armazenados em bancos de dados em tabelas, que através delas implementa a teoria dos bancos de dados relacionais. A tabela é dividida em linhas e colunas (às vezes chamadas de registros e campos). As tabelas podem ser fixas ou temporárias, enquanto no segundo caso elas existem fisicamente no banco de dados tempdb, e são excluídas automaticamente em caso de desconexão da sessão ou da conexão com o servidor, dependendo do tipo da tabela temporária.

De uma perspectiva física, o sistema divide os arquivos de banco de dados em Extensões de 64 KB, cada uma em oito páginas de 8 KB. Geralmente, cada Extent é atribuído a uma tabela ou a um índice , exceto para tabelas pequenas; e cada página é sempre atribuída a uma tabela específica. O sistema é responsável por aumentar os arquivos, de acordo com as configurações do usuário, e atribuir Extensões e páginas às tabelas.

As tabelas podem ser indexadas. Os índices são armazenados ao lado da tabela (Índice Não Agrupado) ou são a própria tabela (Índice Agrupado). Os índices ajudam a encontrar dados em tabelas (como arquivos em bibliotecas), classificando-os e definindo chaves primárias .

Um relacionamento um-para-muitos pode ser criado entre as tabelas .

Além das tabelas de usuários, existem tabelas que armazenam metadados: dados sobre o próprio sistema, os diferentes objetos, os direitos, estatísticas sobre o desempenho do sistema (DMV), etc.

Tipos de dados

Para cada coluna de uma tabela e para cada variável ou parâmetro, é definido um tipo de dado a ser armazenado nela, entre eles:

  1. Números : inteiros e não inteiros em vários tamanhos e em diferentes níveis de precisão; e incremento automático opcional.
  2. Textos : Strings de diferentes comprimentos e diferentes capacidades para suportar diferentes idiomas.
  3. Datas : Datas em vários níveis de precisão, de dias inteiros a frações de subsegundos, datas de suporte do início do século 20 ou do calendário gregoriano e a capacidade de diferenciar entre diferentes usos do tempo.
  4. XML : Dados textuais (strings) representando conjuntos padrão de dados (padrão SGML).
  5. Dados binários : Dados armazenados como dados binários (bits e bytes), que permitem armazenar arquivos gráficos, etc.
  6. Geografia : Representação padrão de informações geográficas, como estados, áreas geográficas, localidades; e cálculos como distâncias.
  7. Geometria : Representação padrão de pontos, linhas, superfícies no plano; e as relações entre eles.
  8. Hierarchyid : Representação padrão de informações hierárquicas , como lista de materiais, relacionamentos de relatórios entre funcionários, etc.

Visualizações

As visualizações geralmente representam comandos de extração de dados, que são armazenados sem os dados (que são armazenados nas tabelas). Essa opção nos permite criar extrações complexas ou padrão, armazená-las como visualizações e usar as visualizações sem a necessidade de redigitar os comandos ou manter o código onde eles aparecem. Além disso, é um meio muito importante de conceder direitos de leitura seletiva (caso queiramos permitir que um usuário visualize parcialmente as colunas ou linhas de uma tabela).

Uma visualização pode ser considerada uma tabela virtual ou uma consulta armazenada. Os dados acessíveis por meio de uma exibição não são armazenados em um objeto que não seja o banco de dados. O que é armazenado no banco de dados é uma instrução SELECT. O resultado da instrução SELECT forma a tabela virtual que a exibição retorna. O usuário pode usar essa tabela virtual fazendo referência ao nome da exibição em instruções Transact-SQL, da mesma forma que as tabelas são referidas. As visualizações são usadas para algumas ou todas estas funções:
• Restringir o acesso do usuário a linhas específicas em uma tabela. Por exemplo, permitir que um funcionário veja apenas as linhas que salvam seu trabalho em uma tabela de rastreamento de atividades de trabalho.
• Restrinja o acesso do usuário a colunas específicas. Por exemplo, permita que os funcionários que não trabalham no departamento de folha de pagamento vejam as colunas de nome, escritório, telefone e departamento da tabela de funcionários, mas não permita que eles vejam as colunas com dados salariais ou outras informações pessoais.
• Combine colunas de várias tabelas para que apareçam como uma tabela.
• Adicione informações em vez de apresentar os detalhes. Por exemplo, apresentar a soma de uma coluna ou o valor máximo ou mínimo de uma coluna.

As visualizações são criadas definindo a instrução SELECT que recupera os dados apresentados pela visualização. As tabelas de dados referenciadas pela instrução SELECT são conhecidas como tabelas base para a exibição. As exibições em todas as versões do SQL Server são atualizáveis ​​(podem ser o destino das instruções UPDATE, DELETE ou INSERT), desde que a modificação afete apenas uma das tabelas base da exibição.

Procedimentos armazenados

Os procedimentos são scripts de comando TSQL, que podem ser executados com diferentes parâmetros. Por exemplo, um procedimento que obtém como parâmetro o número do ano e atualiza uma tabela de resumo de vendas, com as vendas dos agentes nesse ano, com base na tabela de cadastro de vendas.

Os procedimentos armazenados podem facilitar muito o gerenciamento de seu banco de dados e a visualização de informações sobre seu banco de dados e seus usuários. Os procedimentos armazenados são uma coleção pré-compilada de instruções SQL e instruções de controle de fluxo opcionais armazenadas sob um único nome e processadas como uma unidade. Os procedimentos armazenados são armazenados em um banco de dados; eles podem ser executados de dentro de um aplicativo e permitem variáveis ​​declaradas pelo usuário, execução condicional e outros recursos de programação poderosos. Os procedimentos armazenados podem conter consultas de fluxo de programa, lógica e banco de dados. Eles podem aceitar parâmetros, fornecer resultados de parâmetros, retornar um ou vários conjuntos de resultados e retornar valores.

As vantagens de usar procedimentos armazenados no SQL Server em vez de programas Transact-SQL armazenados localmente em computadores cliente são que eles:
• Permitem programação modular.
Você pode criar o procedimento uma vez, armazená-lo no banco de dados e chamá-lo do programa quantas vezes quiser. Um especialista em programação de banco de dados pode criar procedimentos armazenados, que podem ser modificados independentemente do código-fonte do programa. Eles facilitam a manutenção.
• Permitir execução mais rápida.
Em situações em que uma grande quantidade de código Transact-SQL é necessária ou se as operações são executadas várias vezes, os procedimentos armazenados podem ser mais rápidos do que os lotes de código Transact-SQL. Os procedimentos são analisados ​​e otimizados no momento em que são criados, e é possível usar uma versão do procedimento que está na memória após ser executado pela primeira vez. As instruções Transact-SQL que são enviadas várias vezes do cliente sempre que devem ser executadas precisam ser compiladas e otimizadas sempre que são executadas pelo SQL Server.
• Eles podem reduzir o tráfego de rede.
Uma operação que requer centenas de linhas de código Transact-SQL pode ser realizada com uma única instrução que executa o código em um procedimento, em vez de enviar centenas de linhas de código pela rede.
• Podem ser usados ​​como mecanismo de segurança.
Os usuários podem receber permissões para executar um procedimento armazenado, mesmo que não tenham permissão para executar diretamente as instruções do procedimento.

Funções definidas pelo usuário

As funções são um objeto que combina algumas capacidades de visualizações com outras de procedimentos. Assim como as visualizações, eles podem extrair dados e realizar cálculos, retornando um resultado para o usuário ou programa que os executou. Além de procedimentos, eles incluem códigos TSQL e podem ser executados com parâmetros.

As funções retornam um valor ou um conjunto de valores.

As funções definidas pelo usuário são criadas com a instrução CREATE FUNCTION, modificadas com a instrução ALTER FUNCTIONe removidas com a instrução DROP FUNCTION. Todos os nomes de função completos (database_name.owner_name.function_name) definidos pelo usuário devem ser exclusivos. Para criar, modificar ou remover funções definidas pelo usuário, você deve ter o CREATE FUNCTION. Os usuários que não sejam o proprietário devem ter a permissão EXECUTE para uma função e somente então poderão usá-la em uma instrução Transact-SQL. Para criar ou modificar tabelas com referências a funções definidas pelo usuário na constraint CHECK, cláusula DEFAULTou definição de uma coluna computada, você também deve ter permissão REFERENCESpara as funções. Erros de Transact-SQL que fazem com que uma instrução seja cancelada e continue para a próxima instrução no módulo, como gatilhos ou procedimentos armazenados, são tratados de forma diferente em uma função. Em funções, esses erros fazem com que a execução da função pare. Isso faz com que a função que chamou a instrução seja abortada. Uma função definida pelo usuário tem zero ou vários parâmetros de entrada e retorna um valor escalar ou uma tabela. Uma função pode ter no máximo 1024 parâmetros de entrada. Quando um parâmetro de função assume um valor padrão, a palavra-chave deve ser especificada DEFAULTao chamar a função para obter o valor padrão. Esse comportamento é diferente dos parâmetros de valor padrão em procedimentos armazenados, para os quais omitir o parâmetro implica especificar o valor padrão. As funções definidas pelo usuário não suportam parâmetros de saída.

Consultas distribuídas

As consultas distribuídas acessam dados de várias fontes, que podem ser armazenadas em um computador ou em computadores diferentes. O Microsoft SQL Server 2000 oferece suporte a consultas distribuídas por meio de OLE DB As consultas distribuídas fornecem aos usuários do SQL Server acesso a:
• Dados distribuídos armazenados em várias instâncias do SQL Server.
• Dados heterogêneos armazenados em várias fontes de dados relacionais e não relacionais acessadas por meio de um provedor OLE DB.
Os provedores OLE DB expõem dados em objetos tabulares chamados conjuntos de linhas. O SQL Server 2000 permite que conjuntos de linhas de provedores OLE DB sejam referenciados em instruções Transact-SQL como se fossem uma tabela do SQL Server. Tabelas e exibições de fontes de dados externas podem ser referenciadas diretamente em instruções Transact-SQL SELECT, INSERT, UPDATE e DELETE. Como as consultas distribuídas usam OLE DB como interface subjacente, elas acessam sistemas DBMS relacionais tradicionais com processadores de consulta SQL, bem como dados gerenciados por fontes de dados de poder e sofisticação variados. Desde que o software proprietário exponha os dados em um conjunto de linhas tabular por meio do provedor OLE DB, os dados podem ser usados ​​em consultas distribuídas. Nota: O uso de consultas distribuídas no SQL Server é semelhante à funcionalidade de tabelas vinculadas por meio de ODBC, anteriormente suportadas pelo Microsoft Access. Essa funcionalidade agora está incorporada ao SQL Server com OLE DB como interface para dados externos.

Transações

Uma transação é um conjunto de comandos, que está sendo executado completamente ou não executado: tudo ou nada. Por exemplo, se uma quantia em dinheiro foi movida de uma conta bancária para outra e ambas as contas precisam ser atualizadas no depósito e na retirada; é obrigatório que ambas as contas atualizem juntas, ou nenhuma (caso uma das atualizações falhe); para evitar consequências inconsistentes de um depósito sem qualquer retirada, ou vice-versa. Portanto, uma transação é uma sequência de operações executadas como uma única unidade lógica de trabalho. Uma unidade lógica de trabalho deve exibir quatro propriedades, conhecidas como propriedades ACID (atomicidade, consistência, isolamento e durabilidade), para se qualificar como uma transação:

  • Atomicidade

Uma transação deve ser uma unidade atômica de trabalho, sejam todas as modificações feitas nos dados ou nenhuma.

  • Coerência

Ao ser concluída, uma transação deve deixar todos os dados em um estado consistente. Em um banco de dados relacional, todas as regras devem ser aplicadas às modificações de transação para manter a integridade de todos os dados. Todas as estruturas de dados internas, como índices de árvore B ou listas duplamente vinculadas, devem estar corretas no final da transação.

  • Isolamento

As modificações feitas por transações simultâneas devem ser isoladas das modificações feitas por outras transações simultâneas. Uma transação vê os dados no estado em que estava antes de ser modificada por outra transação simultânea ou após a conclusão da segunda transação, mas não vê um estado intermediário. Isso é conhecido como serialização porque seu resultado é a capacidade de recarregar os dados iniciais e reproduzir uma série de transações para terminar com os dados no mesmo estado em que estavam depois que as transações originais foram feitas.

  • Durabilidade

Uma vez que uma transação é concluída, seus efeitos são permanentes no sistema. As modificações persistem mesmo em caso de erro do sistema.

O SQL Server tem uma capacidade limitada de aninhar transações.

O otimizador

O otimizador é uma parte do software que "toma a decisão" de como cada comando será executado, para que a execução seja a mais eficiente, ou pelo menos eficiente o suficiente (ou seja, eficiente o suficiente para evitar continuar procurando por outro solução, que ainda mais eficiente, o preço da pesquisa adicional "custará" mais do que a economia de recursos).

SQL é uma linguagem declarativa , na qual o desenvolvedor declara que deseja extrair ou atualizar sem a necessidade de indicar como (diferentemente das linguagens imperativas e, portanto, o otimizador desempenha um papel de liderança, que de acordo com as estatísticas que o sistema armazena sobre distribuições de dados em tabelas, índices e regras internas; toma a decisão apropriada.

Privilégios e segurança de dados

Para se conectar ao SQL Server, é necessário um Login (usuário em nível de servidor). Quando a política de segurança é definida como Autenticação do Windows e o servidor é combinado com as definições de Domínio , os Logins são definidos no Active Directory . Quando a definição é Autenticação do SQL Server, os logons (usuário e senha) são definidos no próprio SQL Server. Conseqüentemente, no primeiro caso você tem que se identificar com um nome e senha somente ao se conectar à rede, e então você se conecta automaticamente a todos os servidores que são Autenticação Windows (com Login global); e no segundo caso você tem que se identificar ao se conectar a cada servidor SQL Server Authentication (cada vez com um Login local).

No nível do banco de dados, o usuário é identificado como um usuário que geralmente está relacionado ao Login (que está no nível do servidor), e os privilégios ao usuário existem apenas no nível do banco de dados (além dos privilégios ao Login). Para conceder direitos gerais pode ser auxiliado com listas de Funções de Servidor (funções de nível de servidor) ou Funções de Banco de Dados (funções específicas de nível de banco de dados), cada uma com privilégios específicos para uma função específica; e cada usuário associado a uma dessas funções obtém os privilégios associados a ela. Além disso, o administrador pode conceder direitos específicos e criar outras funções de banco de dados (as funções de servidor não podem ser criadas).

Os privilégios de nível de servidor incluem a capacidade de criar bancos de dados, usar trabalhos, criar backups e restaurações de banco de dados, modificar definições de servidor e assim por diante. Privilégios em nível de banco de dados possibilitam extrair e atualizar dados, criar objetos como procedimentos e tabelas, usar esses objetos e assim por diante. Como regra geral, você pode conceder direitos (Conceder), revogar privilégios existentes (Revogar) e negar privilégios que ainda não existem (Negar).

Outras ferramentas de serviço

Além de seus recursos elementares como ferramenta de gerenciamento de banco de dados relacional (criar tabelas, definir relacionamentos entre elas, gerenciar transações, criar índices etc.), o SQL Server suporta uma lista crescente de outras ferramentas de serviço; além de ferramentas de terceiros que alteram ou completar o que existe.

Backups e recuperações

Para além das soluções alternativas ao nível do sistema operativo (backup de ficheiros da base de dados), existe uma ferramenta incorporada no SQL Server que permite um backup completo ou diferencial, de acordo com o Modelo de Recuperação pré-definido. e uma recuperação completa ou pontual. Além de um backup de banco de dados, você pode fazer backup deles por meio de um script (com ou sem os dados). A partir de 2008, você pode compactar arquivos de backup.

Compressão

A partir de 2008, foi adicionada a opção de compactação, que permite compactar o tamanho físico das tabelas e índices, utilizar o volume dos discos rígidos de forma mais eficiente e reduzir as operações de E/S (o que aumenta a carga na CPU). Como já mencionado, você também pode compactar os arquivos de backup.

Replicação, alta disponibilidade e recuperação de desastres

Algumas ferramentas permitem criar réplicas parciais ou completas de bancos de dados, melhorar a disponibilidade e recuperar-se de desastres; além da opção de fazer backup e recuperar os bancos de dados, uma opção que deve ser muito lenta.

As cópias criadas por essas ferramentas podem ser utilizadas como backup disponível imediatamente em caso de falha do sistema, bem como uma réplica em um subsistema, independente do sistema de origem, para balanceamento de carga; e que as atualizações sejam executadas no banco de dados e as recuperações de relatórios sejam executadas na réplica.

Dentre essas ferramentas podemos citar a replicação que possibilita criar uma réplica sincronizada do banco de dados, o Mirroring que executa no servidor espelho cada atualização que é executada no servidor de origem, o Log Shipping que possibilita armazenar uma cópia sincronizada através de arquivos de log (Log) com todas as atualizações no servidor de origem, e ferramentas de alta disponibilidade e recuperação de desastres (HADR, desde 2012) que solucionam problemas de espelhamento em relação ao tempo de reação de falhas técnicas e disponibilidade de cópias em tempo de paz.

O agente e agendamento de tarefas

O agente é o serviço encarregado de escalonar as tarefas e de executá-las de forma independente. Geralmente ele executa tarefas de manutenção, tarefas complexas de ETL , backups , etc.

Manutenção

Para melhorar o desempenho do sistema é necessário manter as estatísticas, utilizadas pelo otimizador, organizar os arquivos físicos, etc; e ferramentas dedicadas são utilizadas para esses fins, que são executadas periodicamente por tarefas agendadas e de forma coordenada com as tarefas de ETL e backup.

Agente de serviços

Uma tecnologia que foi adicionada em 2005 que implementa uma arquitetura orientada a serviços e que permite execuções assíncronas: em primeiro lugar, enviar mensagens entre diferentes aplicativos executados simultaneamente, mas também executar procedimentos de forma assíncrona, de maneira disparar e esquecer - um procedimento que é executado em uma sessão diferente da sessão que a iniciou e ambos os procedimentos continuam a ser executados independentemente um do outro.

Enviar e-mails

O SQL Server tem a capacidade de enviar e- mail por meio de código. Essa funcionalidade geralmente é usada para enviar alertas sobre problemas do sistema (por exemplo, se o uso da CPU aumentou para um limite predefinido ou se o processo ETL falhou), mas também quando o processo foi concluído com êxito.

Pesquisa de texto completo

Uma ferramenta que possibilita indexar colunas textuais como textos e não apenas como strings; e executar pesquisas complexas dependendo do significado do texto e do idioma. Por exemplo, procuramos um verbo e queremos obter todas as ocorrências de suas conjugações.

Faixa

Essas ferramentas incluem o Trace que permite rastrear atividades para manter cargas e falhas, e segurança de dados (não é permitida a recuperação de dados), o Profiler que permite rastrear os comandos que são executados e os eventos que ocorrem no o servidor e o Extended Events que foi adicionado em 2008 e altera o profiler graças à sua baixa assinatura (consumo de recursos e influência no desempenho do servidor).

Além destes, 2 tipos de Triggers podem ser usados ​​para rastrear alterações e atividades: Triggers DML predefinidos em tabelas e visualizações e que são iniciados por instruções de atualização de dados (Select / Update / Delete) e Triggers DDL que são iniciados por alterações no objetos em si (e não os dados), no banco de dados ou no nível do servidor.

Mesclagem CLR

A partir de 2005, você pode combinar facilmente procedimentos, funções e funções agregadas desenvolvidas no CLR no SQL Server . Você precisa desenvolver o código em uma das ferramentas de desenvolvimento .NET , criar um arquivo DLL e mesclá-lo no sistema. A vantagem dessa tecnologia é sua capacidade em problemas que não são exclusivamente bancos de dados (manipulação de dados), e incluem cálculos complexos ou manipulações textuais de strings.

Ferramentas de inteligência de negócios

Uma instalação típica também inclui ferramentas de Business Intelligence ( BI ) :

SSIS (SQL Server Integration Services)

Uma ferramenta ETL que permite a extração de dados de diferentes fontes (não apenas SQL Server), a transformação desses dados e o carregamento (geralmente, mas não necessariamente para um data warehouse ).

SSAS (SQL Server Analysis Services)

Uma ferramenta para criação de bancos de dados multidimensionais (não relacionais) , que pode ser explorada extraindo dados em diferentes níveis de agrupamento, detalhando uma soma de seus detalhes e usando MDX (uma linguagem semelhante a SQL, adaptada a bancos de dados multidimensionais).

SSRS (SQL Server Reporting Services)

Uma ferramenta para criar e formatar relatórios, conceder direitos de visualização e distribuí-los. Eles podem ser visualizados com um navegador da Web e podem ser exportados para Excel , PDF , etc. os dados geralmente são extraídos do data warehouse ou OLAP.

Desvantagens

  • Desde a versão do SQL Server 2012, as consultas escritas em T-SQL não são compatíveis com versões anteriores do SQL Server 2008 ou anterior.
  • Nas versões de 32 bits, o SQL Server usa o Address Windowing Extension (AWE) para fazer o endereçamento acima de 4 GB. Isso impede que você use o gerenciamento dinâmico de memória e só permite hospedar um máximo de 64 GB de memória compartilhada. Essa limitação é exclusiva de sistemas operacionais de 32 bits; em sistemas operacionais de 64 bits, a memória máxima que pode ser endereçada na Standard Edition é de 64 Gb e na Enterprise Edition 4Tb

Veja também

Referências

  1. Guthrie, Scott (7 de março de 2016). "Anunciando o SQL Server no Linux" (html) . Microsoft (em inglês) . Arquivado a partir do original em 7 de março de 2016 . Recuperado em 3 de março de 2019 .  
  2. ^ a b Domínguez, Andrés Zamora (25 de outubro de 2017). "O Microsoft SQL Server agora pode ser executado no Linux GNU." (html) . Pandora FMS (em inglês) . Arquivado do original em 24 de novembro de 2018 . Recuperado em 24 de novembro de 2018 . «No dia 28 de dezembro de 2016 – festa dos Santos Inocentes, aquele dia especial em que os falantes de espanhol fazem piadas ao longo do dia – foi anunciada a aquisição de uma adesão do tipo “Platinum” pela empresa Microsoft ® na Linux Foundation e o lançamento do Microsoft SQL Server®. »  
  3. Lerner, Reuve M. "SQL Server no Linux" (html) . Guia Geek (em inglês) . Arquivado do original em 3 de agosto de 2017 . Recuperado em 24 de novembro de 2018 . Mas, mesmo o fã de código aberto mais cético deve admitir que a Microsoft mudou nos últimos anos. Ele lançou muitas ferramentas e bibliotecas de desenvolvedor como código aberto e começou a incluir o Linux como uma plataforma suportada para alguns de seus softwares. »  
  4. ^ "Prepare-se para o SQL Server 2017" (html) . Microsoft (em inglês) . Arquivado do original em 1º de maio de 2017 . Recuperado em 24 de novembro de 2018 . "Traga o desempenho e a segurança líderes do setor do SQL Server para contêineres Windows, Linux e Docker. »  
  5. Histórico de desenvolvimento do SQL Server
  6. O que há de novo no Microsoft SQL Server 7
  7. O que há de novo no Microsoft SQL Server 2000
  8. O que há de novo no SQL Server 2005
  9. O que há de novo (SQL Server 2008)
  10. O que há de novo no Microsoft SQL Server 2008 R2
  11. O que há de novo no SQL Server 2012
  12. O que há de novo no SQL Server 2014
  13. "Tudo o que você precisa saber sobre licenças e CALs do SQL Server" . Comerciante suave (em inglês) . 15 de setembro de 2021 . Recuperado em 27 de setembro de 2021 . 
  14. Recursos suportados pelas edições do SQL Server 2014
  15. Cadeias de conexão


Links externos