Desenvolvido por | Microsoft |
---|---|
Primeira versão | 24 de abril de 1989 |
Última versão | 2019 (4 de novembro de 2019) |
Escrito em | C ++ , C e C # |
Sistema operacional | Linux , Microsoft Windows e Windows Server |
Formatos de leitura | Linguagem de definição de relatórios do SQL Server Reporting Services ( d ) e Linguagem de definição de relatórios do SQL Server Reporting Services (UTF-8) ( d ) |
Formatos escritos | Linguagem de definição de relatórios do SQL Server Reporting Services ( d ) e Linguagem de definição de relatórios do SQL Server Reporting Services (UTF-8) ( d ) |
Modelo | Sistema de gerenciamento de banco de dados relacional ( em ) |
Licença | Licença proprietária e EULA |
Local na rede Internet | www.microsoft.com/sql-server |
O Microsoft SQL Server é um sistema de gerenciamento de banco de dados (DBMS) em linguagem SQL queincorpora, entre outras coisas, um RDBMS (DBMS relacional ") desenvolvido e comercializado pela empresa Microsoft . Funciona em sistemas operacionais Windows e Linux (desdemarço de 2016), mas é possível executá-lo no Mac OS via Docker , pois existe uma versão para download no site da Microsoft.
Embora tenha sido originalmente co-desenvolvido pela Sybase e pela Microsoft, Ashton-Tate também foi associado à sua primeira versão, lançada em 1989. Esta versão foi lançada nas plataformas Unix e OS / 2 . A Microsoft já portou este sistema de banco de dados para o Windows .
Quando foi criado, o Sybase SQL Server herdou os princípios do motor Ingres originalmente desenvolvido pela Universidade de Berkeley.
Em 1994, rompida a parceria entre as duas empresas, a Microsoft lançou a versão 6.0, então sozinha, a 6.5, na plataforma Windows NT.
O Microsoft SQL Server agora faz parte da estratégia técnica de banco de dados da Microsoft. O mecanismo MSDE, que é a base do SQL Server, deve eventualmente substituir o mecanismo Jet (aquele que gerencia os bancos de dados do Access ) em aplicativos como o Exchange e o Active Directory .
A versão 2005 do SQL Server foi lançada em3 de novembro de 2005ao mesmo tempo que o Visual Studio 2005 . O suporte para Windows Vista e Windows Server 2008 não foi adicionado até o Service Pack 2 (SP2). Atualmente, o Service Pack 3 está disponível. O otimizador foi totalmente refeito, assim como o mecanismo de relacionamento.
A versão 2008 do SQL Server (codinome Katmaï) foi lançada em agosto de 2008 . A versão secundária 2008 R2 foi lançada em 2010.
A versão 2012 do SQL Server foi lançada em abril de 2012 .
A versão 2014 do SQL Server foi lançada em 1 r abr 2014 com um motor “em memória” complementar ao motor relacional.
A versão do SQL Server 2016 foi lançada em 1 ° de junho de 2016.
Durante o desenvolvimento da versão 2005, o projeto foi na época um dos maiores projetos de TI do mundo. Mais de 1.600 desenvolvedores participaram da codificação do kernel e estima-se que mais de 10.000 outras pessoas trabalharam nele direta ou indiretamente ( interações homem-máquina , documentação, tradução, etc.).
O SQL Server se diferencia da concorrência por sua grande riqueza que não requer opções adicionais pagas dentro do limite da versão escolhida.
Comparado com seus concorrentes Oracle , MySQL ou PostgreSQL , o SQL Server se distingue pelo fato de ser um RDBMS (Relational Database Management System) originalmente multibase e multi schema . É possível fazer consultas inter-bases nativas. Por exemplo, a consulta a seguir vincula duas tabelas de dois bancos de dados diferentes:
SELECT * FROM BASE_A.dbo.TABLE1 AS T1 INNER JOIN BASE_B.dbo.TABLE2 AS T2 ON T1.ID = T2.ID;O otimizador sendo capaz de fazer um plano de consulta perfeitamente otimizado, mesmo se a consulta consultar dados de vários bancos de dados ...
Embora PostGreSQL seja multibase e multischema, esta possibilidade de interrogação simultânea não é nativa e é necessário passar pelo intermediário de "dblink" que proíbe as junções e portanto qualquer possibilidade de otimização ... Oracle com sua versão 12 tenta integrar isso mesmo conceito de multibase (chamado multi-tenant ), mas sofre do mesmo problema que o PostGreSQL. MySQL é um esquema único, multibase.
A flexibilidade do gerenciamento do esquema SQL é tal que é possível transferir um objeto de um esquema para outro com um único comando ALTER SCHEMA.
Os proprietários são distintos dos esquemas e é possível transferir a propriedade de um banco de dados, um esquema ou um objeto de um usuário SQL para outro, por meio do comando ALTER AUTHORIZATION.
O SQL Server funciona nativamente em paralelo. Assim que uma consulta é estimada para exceder o limite de custo no qual um plano de consulta pode ser paralelizado, o SQL Server reescreve o plano usando algoritmos multithread e se o novo plano for considerado mais barato, a substituição ocorre automaticamente. Esse recurso existe em todas as edições e não é um módulo pago para adicionar, como é o caso do Oracle.
As operações físicas de leitura e gravação também se beneficiam do paralelismo sistematicamente, já que as operações IO são realizadas diretamente pelo SQL Server e não por meio da camada do sistema, como é o caso com PostGreSQL ou MySQL.
Na versão Enterprise, o mecanismo é capaz de compactar dados em nível de linha ou página em tabelas, bem como em índices. A compactação de backup está disponível na edição padrão desde a versão 2008 R2.
Desde o SQL Server 7 (1998), o SQL Server tornou possível fazer backup de "banco de dados aberto" sem interromper o serviço de dados e sem perturbar a atividade do usuário. Esse backup pode ser feito globalmente, por grupo de arquivos, por arquivo ou por meio do log de transações.
No SQL Server, as restrições de exclusividade levam em consideração o marcador NULL como um valor e, portanto, proíbem a presença de mais de um NULL nas colunas de tal restrição. Isso não está em conformidade com o padrão SQL, uma vez que NULL é uma ausência de valor, a exclusividade não surge. No entanto, existe uma maneira fácil de contornar esse problema, que é criar um índice filtrado exclusivo que se relacionará aos dados avaliados.
Exemplo, deixe a mesa:
CREATE TABLE T_EMPLOYE_EMP (EMP_ID INT PRIMARY KEY, EMP_NOM VARCHAR(32) NOT NULL, EMP_MATRICULE CHAR(8));Como o número pessoal deve ser único para os valores conhecidos, a criação de um índice único filtrado sobre os valores expressos na coluna do número pessoal torna possível resolver o problema:
CREATE UNIQUE INDEX X_EMP_MATRICULE ON T_EMPLOYE_EMP(EMP_MATRICULE) WHERE EMP_MATRICULE IS NOT NULL;Nos triggers do SQL Server é possível atualizar a tabela de destino do evento na origem da execução do trigger, ao contrário de muitos bancos de dados que proíbem essa possibilidade (erro "tabela mutante" no Oracle). Deve-se lembrar que foi Sybase quem originalmente inventou o conceito de gatilho em 1986, colocando o código executável em um banco de dados relacional pela primeira vez.
Por exemplo, um gatilho UPDATEem uma tabela pode modificar os dados que estão com modificação pendente:
CREATE TRIGGER E_U_PERSONNE ON T_PERSONNE_PRS FOR UPDATE AS IF UPDATE(PRS_NOM) UPDATE T_PERSONNE_PRS SET PRS_NOM = UPPER(PRS_NOM) WHERE PRS_ID IN (SELECT PRS_ID FROM inserted);No exemplo acima, os nomes dos nomes recém-inseridos ou alterados são capitalizados.
Como a reentrada pode levar à recursão, diferentes configurações permitem que esse problema seja resolvido no nível do banco de dados, bem como no nível da instância.
Ao contrário do Oracle ou PostGreSQL, onde as visualizações materializadas devem ser atualizadas na maioria das vezes antes do uso, as visualizações indexadas do SQL Server são sempre síncronas. Além disso, o otimizador é capaz de substituir em tempo real a visualização indexada para toda ou parte da consulta (versão Enterprise) o que é muito prático quando o DBA não tem acesso ao código dos programas clientes (caso de aplicativos de editores) .
Para aplicativos projetados em .net e usando o conector ADO, o SQL Server executa o pool automático. O simples fato de distinguir duas cadeias de conexão é suficiente para criar dois pools diferentes. Para que o pool seja eficaz, as conexões devem ser fechadas assim que o processamento do computador ocorrer.
Por vários meios, o SQL Server permite que você gerencie centralmente um conjunto de servidores. Você pode criar um servidor de administração centralizado, e adicionar uma lista de servidores SQL da empresa para lançar as consultas enviadas simultaneamente em todos os servidores ou então criar ou executar o mesmo procedimento em todos os servidores ao mesmo tempo, isso na ferramenta SSMS (SQL Server Management Studio).
Da mesma forma, o agendador de tarefas e gerenciador de alertas (SQL Agent) permite definir trabalhos de vários servidores, como backup, desfragmentação de índices, recálculo de estatísticas ou verificação da integridade física de espaços.
O mecanismo OLTP do SQL Server tem muitos recursos que dificilmente seriam listados. Aqui estão alguns que fazem a diferença com SGBDs mais leves como MySQL ou PostGreSQL ...
O SQL Server foi equipado com um mecanismo "In Memory" desde a versão 2014. Tabelas e índices podem estar totalmente na memória (estrutura e dados: dados e esquema) ou persistentes no nível da estrutura (somente dados). Os procedimentos, dentro de limites bem definidos, podem ser compilados nativamente, em vez de interpretados. As atualizações permanecem transacionais, sem que haja necessidade de gravar nos arquivos de log de transações (versionamento "in memory"), o que permite melhorias muito significativas no desempenho do processamento de cálculos complexos relativos a grandes volumes de dados. Um exemplo típico é o cálculo do desempenho financeiro dos preços do mercado de ações em tempo real.
O SQL Server foi o primeiro com a versão 2005 a introduzir o operador intra-join APPLYpara facilitar a recuperação de dados encapsulados em uma tabela virtual a partir de uma coluna de tabela, como é o caso ao usar uma função de tabela em uma consulta onde um dos argumentos vem de uma das tabelas da consulta ou quando o XML é tabulado. O operador APPLYdeve ser precedido da palavra-chave CROSSou OUTERpara definir seu comportamento. Com CROSSse o argumento for NULL, as linhas afetadas são removidas do resultado enquanto com OUTERelas são preservadas.
O operador APPLYé semelhante ao operador LATERALdo padrão SQL, mas sua sintaxe mais estendida permite operações que LATERALnão podem ser realizadas. A Oracle introduziu recentemente esse operador na versão 12.1 (2014).
SELECT top 10 * FROM sys.dm_exec_query_stats AS qs CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) OUTER APPLY sys.dm_exec_query_plan(qs.plan_handle) ORDER BY total_worker_time DESCNeste exemplo, usamos a função de tabela sys.dm_exec_query_plan, que retorna o plano de execução, do plano "identificador" fornecido pelo argumento "plan_handle" encontrado na exibição sys.dm_exec_query_stats. Esta consulta permite que você descubra as 10 consultas que consumiram mais tempo da CPU desde que a instância foi iniciada.
O SQL Server possui uma das mais ricas coleções de agrupamentos (3.887 na versão 2014), permitindo controlar 101 idiomas entre os quais, além do francês, estão o bretão e a Córsega! Os agrupamentos permitem realizar pesquisas levando em conta ou não o caso (maiúscula, minúscula - CS / CI), acentos e outros caracteres diacríticos (acentos, cedilha, ligaduras ... - AS / AI), os caracteres de largura (2 = 2 ? - WS) ou diferentes tipos de kana (katakana e hiragana do japonês - KS), ou ainda para realizar comparações binárias levando em consideração ou não o código hexadecimal. Os agrupamentos são completamente independentes dos conjuntos de caracteres (conjuntos Iso_1), embora permitam sua simulação (ASCII, UNICODE, UTF16, EBCDIC ...). O suporte de agrupamento é fornecido em quatro níveis: servidor (1), base (2), tabela ou coluna de exibição (3) e, por fim, predicado (4) para lidar com cadeias de caracteres e classificar colunas de texto em consultas.
SELECT * FROM T_UTILISATEUR_APPLICATIF_UTA WHERE UTA_CONNEXION = 'Éric Blüm' COLLATE French_CI_AI AND UTA_MOT_DE_PASE = 'a²E3wx+Z' COLLATE Latin1_General_CS_AS_WSNo exemplo a seguir, procuramos um nome de conexão com um agrupamento "solto" (independentemente de maiúsculas e minúsculas ou acentos) e a senha com um agrupamento "rígido" (binário):
A lista de agrupamentos disponíveis no servidor pode ser obtida pela consulta:
SELECT * FROM sys.fn_helpcollations()Desde a versão 2005, o SQL Server suporta o tipo XML (fragmento) e permite que você manipule XML por meio de consultas XQuery / XPath. Uma coluna do tipo XML pode ser digitada por meio de uma coleção de esquemas XML (XSD - Definição de esquema Xml). O exemplo a seguir mostra a criação de uma coleção de esquema XML de elemento único e, em seguida, a criação de uma tabela com uma coluna XML digitada com essa coleção de esquema:
-- création d'un schéma XML pour validation des données d'une colonne XML CREATE XML SCHEMA COLLECTION XSC_DONNEES_ENTREPRISE as N' <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:company="http://www.exemple.com/entreprise" targetNamespace="http://www.exemple.com/entreprise" elementFormDefault="qualified"> <xs:element name="personnel"> <xs:complexType> <xs:choice maxOccurs="unbounded"> <xs:element name="employe"> <xs:complexType> <xs:all> <xs:element name="nom" type="xs:string" /> </xs:all> <xs:attribute name="matricule" type="xs:ID" /> </xs:complexType> </xs:element> </xs:choice> </xs:complexType> </xs:element> </xs:schema>'; -- création d'une table qui possède une colonne de type XML dont les données doivent se conformer au schéma ci avant CREATE TABLE T_ENTREPRISE_EMPLOIS_EEP (EEP_ID INTEGER PRIMARY KEY IDENTITY, EEP_NAME VARCHAR(12), EEP_XML_DATA XML (XSC_DONNEES_ENTREPRISE) --> création d'une colonne XML typée par XSC_DONNEES_ENTREPRISE (collection de schémas XML) );Uma consulta SELECT de extração pode gerar uma saída XML em vez de um resultado tabular, por meio da cláusula Transact-SQL "FOR XML" para a qual há muitas opções de apresentação. O exemplo abaixo é usado para apresentar uma hierarquia XML listando as restrições de uma tabela na forma de elementos XML:
SELECT TABLE_SCHEMA AS schemaSQL, TABLE_NAME AS nomTable, CONSTRAINT_NAME AS nomContrainte, CONSTRAINT_TYPE AS typeContrainte FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS contrainte WHERE TABLE_NAME = 'DepartementFrancais' FOR XML AUTO, ELEMENTS, ROOT('Contraintes');Esta consulta retornará, por exemplo, os seguintes dados:
<Contraintes> <contrainte> <schemaSQL>Reference</schemaSQL> <nomTable>DepartementFrancais</nomTable> <nomContrainte>pk_DepartementFrancais</nomContrainte> <typeContrainte>PRIMARY KEY</typeContrainte> </contrainte> <contrainte> <schemaSQL>Reference</schemaSQL> <nomTable>DepartementFrancais</nomTable> <nomContrainte>chk_DepartementFrancais_ForceSTSRid</nomContrainte> <typeContrainte>CHECK</typeContrainte> </contrainte> <contrainte> <schemaSQL>Reference</schemaSQL> <nomTable>DepartementFrancais</nomTable> <nomContrainte>UK_DepartementFrancais_NomChefLieu</nomContrainte> <typeContrainte>UNIQUE</typeContrainte> </contrainte> <contrainte> <schemaSQL>Reference</schemaSQL> <nomTable>DepartementFrancais</nomTable> <nomContrainte>UK_DepartementFrancais_Nom</nomContrainte> <typeContrainte>UNIQUE</typeContrainte> </contrainte> </Contraintes>Finalmente, é possível lidar diretamente com dados XML em rotinas (por exemplo, provenientes de arquivos), usando as funções e procedimentos OPENXML, sp_xml_preparedocument, sp_xml_removedocument ...
Desde a versão 2008, o SQL Server integra um GIS em todas as versões. Isto permite a construção de objetos geométricos (geometria euclidiana) ou geográficos (levando em consideração a curvatura espacial da crosta terrestre) utilizando os tipos GEOMETRIA e GEOGRAFIA (PONTO, LINESTRING, POLÍGONO e combinações ...). É baseado no padrão OGC , assim como o add-on espacial PostGIS para PostgreSQL . a versão de 2012 adicionou objetos curvos (CircularStrings, CompoundCurves, CurvePolygons ...) e melhor precisão de cálculos (48 bits em vez de 27 anteriormente).
Os índices espaciais permitem fazer certos métodos como STContains, STDistance, STEquals, STIntersects, STOverlaps, STTouches, STWithin ...
De acordo com o padrão SQL que oferece o DATALINK, o SQL Server implementa uma ferramenta similar chamada FileStream permitindo que os arquivos sejam armazenados como arquivos no sistema operacional, mas sob a responsabilidade e controle do servidor de banco de dados (serialização, transação, confiabilidade, segurança. ..). Isso permite, entre outras coisas, um backup integrado e síncrono de dados relacionais e não relacionais, por exemplo, para imagens de produtos em um site, como manuais eletrônicos em PDF para máquinas em uma frota para manutenção. Esta ferramenta é usada principalmente para EDM. Arquivos eletrônicos que podem estar sujeitos a indexação textual.
Além disso e desde a versão 2012, o SQL Server oferece o conceito de FileTable, que nada mais é do que uma tabela virtual associada a um ponto de entrada (diretório) do sistema computacional, de forma a permitir o gerenciamento bidirecional dos arquivos eletrônicos: os arquivos manipulados por as linguagens SQL são acessíveis no sistema de arquivos do Windows e vice-versa: um arquivo ou diretório pode ser inserido na tabela por meio de uma consulta SQL e este último será visualizado na árvore do sistema.
A ferramenta de gestão do conhecimento do Sharepoint usa maciçamente este conceito para gerenciar os documentos eletrônicos que são depositados ali, e todas as versões transitórias.
Introduzida com a versão 2008, a capacidade de criar serviços da web nativos diretamente no servidor usando pontos de extremidade SOAP / HTTP foi considerada obsoleta na versão 2008 R2 e retirada na versão 2012. No entanto, o SQL Server permite que você crie e usa internamente muitos pontos de extremidade para serviços específicos, como espelhamento de banco de dados ou corretor de serviços ...
O objetivo do Service Broker é fornecer uma ferramenta de mensagens de banco de dados para gerenciar fluxos de dados entre servidores SQL de forma assíncrona, serializada e transacionada por meio de filas que são tabelas do sistema. Isso torna possível criar SODA (Service Oriented Database Architecture), ou seja, bancos de dados de diferentes instâncias que dialogam entre si no nível dos dados e não mais no nível do aplicativo como é o caso com SOA.
Isto permite criar bases de dados distribuídas, colaborativas e distribuídas, "grid computing" ou mesmo WorkFlow, e por exemplo proporcionar uma melhor superfície de ataque para acessos muito competitivos. Este sistema difere da replicação de dados, pelo fato de a informação ser veiculada principalmente na forma XML (criptografada), na camada HTTP (Internet por exemplo) por meio de serviços Web e por não haver obrigatoriedade de bases de dados de origem e destino e tabelas sejam estruturalmente idênticas.
Um exemplo interessante é substituir ferramentas tradicionais de mensagens, como a série MQ, por um tal dispositivo, muito mais confiável ...
O Service Broker pode ser usado através da edição gratuita do SQL Server Express, tem sido usado notavelmente na indústria para gerenciar as informações de produção de muitas máquinas da mesma frota, a fim de enviar esses dados a um servidor central. Esse é particularmente o caso da cadeia de produção de vacinas de um famoso instituto francês.
Além dos recursos para o desenvolvedor, o SQL Server apresenta diversas ferramentas para facilitar a administração. Aqui estão alguns.
Não confundir com "alta disponibilidade" que consiste na duplicação de um banco de dados inteiro, o SQL Server possui 8 modos de replicação de dados (replicação de certas informações de certas tabelas provenientes de bancos de dados para outros bancos de dados em outros servidores) incluindo transacional, ponto a ponto , instantâneo ou modos de mesclagem. A replicação de e para Oracle também é suportada na edição Enterprise.
Sites de vendas online como Cdiscount , Fnac.com ou Vente-privee.com usam replicação, ambos para dissociar dados do FO (Front Office - essencialmente dados do site) e do BO (Back Office - gestão). ..), mas também para alargar a superfície de ataque a fim de absorver a carga de muitos usuários.
A duplicação de bancos de dados para estabelecer um sistema altamente resiliente é realizada por meio de quatro meios diferentes:
É possível criar regras de negócios e planejar seu funcionamento. Isso serve para verificar um atributo de uma faceta, por meio de uma regra que pode ser verificada de diferentes maneiras. Alguns exemplos:
Este processo permite criar uma nova base de dados a partir de uma base de dados existente que representa os dados no momento em que o “instantâneo” foi lançado. Essa cópia somente leitura é executada instantaneamente, independentemente do volume do banco de dados inicial. Isso permite, por exemplo:
Presente desde a versão 2005 na edição Enterprise, o particionamento permite dividir tabelas e índices de acordo com um critério de dados da tabela. a solução reutilizável é muito simples e se baseia em três etapas:
Depois que essas etapas forem concluídas, a função e o esquema de particionamento podem ser reutilizados para outro objeto para fins de alinhamento de partição, como uma tabela de fatura e seus detalhes subordinados ou tabela de linha da fatura.
É então possível gerenciar as partições (mover, mesclar, dividir ...) usando os comandos ALTER PARTITION FUNCTION ... SPLIT RANGE / MERGE RANGE e ALTER TABLE ... SWITCH PARTITION ... que renderizam a mão imediatamente e agir em nível baixo, em segundo plano, para operar os movimentos.
O Microsoft SQL Server oferece muitos assistentes para executar tarefas frequentemente ingratas, como importar / exportar dados ou fazer backup / restaurar. Mas se é útil para iniciantes, é a ferramenta de gerenciamento do plano de manutenção que permite em poucos cliques realizar todas as tarefas essenciais à sobrevivência e manutenção do desempenho de uma base. Esta ferramenta permite, entre outras coisas, realizar as seguintes tarefas de forma recorrente:
... e planejar sua execução.
Como a coabitação em pé de igualdade de todos os usuários da mesma base pode rapidamente representar problemas, o SQL Server integra um administrador de recursos que permite alocar mais ou menos recursos (RAM, CPU, discos ...) para um determinado grupo de usuários. O caso clássico é a mistura de usuários apreciadores de dashboards e relatórios de todos os tipos (por exemplo, controladores de gestão) que consomem muitos dados, penalizando a produção de dados dos usuários que realizam entrada na unidade ...
O SQL Server integra dois módulos distintos para gerenciar dados de qualidade nos bancos de dados:
O Database Mail é a ferramenta de gerenciamento de envio de correio do SQL Server e é baseado no Service Broker. Este sistema permite definir vários perfis de envio de correio (por exemplo um para as aplicações e outro para a administração) com possível redundância dos servidores SMTP. O envio de e-mail é usado principalmente pelo SQL Agent para, às vezes, notificar o sucesso, mas frequentemente as falhas, de tarefas agendadas (por exemplo, que um backup não pôde ser feito). O procedimento msdb.dbo.sp_send_dbmail é usado para enviar um e-mail, incluindo anexos, resultado da consulta, conteúdo em texto ou formato enriquecido ...
O SQL Server é rico em ferramentas de auditoria, seja para segurança, evolução de dados ou desempenho. Descreveremos alguns deles.
Além de a auditoria C2 estar obsoleta para ser substituída pelos critérios comuns (ISO 15408 ), o SQL Server oferece a possibilidade de rastrear tudo relacionado à segurança por meio de auditoria de banco de dados, e todas as ações possíveis tanto no nível do servidor quanto no nível de um banco de dados particular.
Este sistema é aperfeiçoado a ponto de ser possível parar automaticamente o servidor em caso de falha do sistema de auditoria, para que os invasores não aproveitem este estado de mau funcionamento de rastreabilidade para realizar manobras ilícitas!
O SQL Server possui dois modos que permitem rastrear automaticamente a evolução dos dados (INSERT, UPDATE, DELETE ...):
CHANGE TRACKING força a varredura das tabelas no banco de dados, mas alivia o volume geral, enquanto o CDC não consulta os dados de produção para aliviar o bloqueio.
Esses dois módulos são geralmente usados, um ou outro, para fornecer grandes armazéns de dados em modo diferencial .
A quantidade da ferramenta é tão grande que muitos usuários as ignoram, procurando em outras ferramentas de terceiros - geralmente pagas - o que já possuem e de graça na ponta dos dedos.
Data Management View (DMV)Esses são dados do sistema que apresentam estatísticas de execução do mecanismo SQL que podem ser usados em forma tabular por pseudo visualizações (na verdade, na maioria das vezes, funções internas retornando um estado tabular dos dados coletados na memória). Isso permite estabelecer diferentes diagnósticos como:
Com base no DMV, os relatórios exploram e apresentam os dados de forma sintética. Eles estão disponíveis em diferentes níveis da árvore do Pesquisador de Objetos do SQL Server Management Studio, principalmente no servidor (instância) e no nível básico.
Contadores de desempenhoO SQL Server publica muitos contadores de desempenho que podem ser consultados diretamente no SQL ou que podem ser analisados usando o monitor de desempenho (perfmon.exe). Esses contadores podem ser lidos na exibição sys.dm_os_performance_counters.
AlertasO SQL Server permite que você configure alertas sobre erros ou métricas que ultrapassam um limite por meio do SQL Agent, consultando os dados do contador de desempenho ou via WMI (Instrumentação de Gerenciamento do Windows). Este tipo de alerta permite, por exemplo, ser informado por email da saturação dos logs de transações ou do enchimento dos discos do servidor.
Consultor de Otimização do Mecanismo de Banco de DadosEsta ferramenta é usada para realizar um diagnóstico de indexação, estatísticas, particionamento ou criação de visualizações indexadas quando é fornecida com um lote de consultas.
Profiling SQLO SQL Profiler permite que você detecte consultas antes e depois da execução para fornecer métricas para fins de análise, principalmente para melhorar o desempenho (embora haja um modo "preterido" para visualizar o código obsoleto de alguns aplicativos).
Esses dados são salvos em uma tabela ou arquivo (transferível para uma tabela) e devem ser analisados. Modelos diferentes permitem níveis maiores ou menores de sutileza de digitalização.
O template "replay" permite capturar uma carga e suas métricas que podem ser reproduzidas nas mesmas condições (simulação de diferentes usuários em paralelo) para fins de benchmarking, em particular para mudanças nas versões do SQL Server, como no hardware. Para reproduzir e comparar, você deve usar o pacote RML disponível gratuitamente no site da Microsoft.
Eventos estendidos (XE: eventos estendidos)Como complemento e substituição futura do profiler, o XE permite uma intrusão mais profunda do que o profiler, uma vez que pode varrer quase todas as métricas de operações na memória, em threads ou em IOs de disco (nível do sistema). Isso é além do que o criador de perfil já está fazendo.
Coletor de dadosComo os dados dos DMVs são, em princípio, voláteis (existindo apenas na memória, eles são perdidos a cada reinicialização) ou limitados (em um anel de memória), foi decidido criar esta ferramenta que registra ciclicamente dados diferentes de fontes diferentes. (Principalmente de DMV) para fins de feedback por meio de relatórios específicos. Para fazer isso, um banco de dados de coleção deve ser criado e você deve iniciar os vários coletores predefinidos ou criar seus próprios coletores.
Repetição DistribuídaEste dispositivo permite reproduzir a atividade de um servidor captada por um trace do SQL Profiler, simulando uma atividade próxima da realidade, por meio de uma distribuição de solicitações em diferentes estações de trabalho, todas orquestradas por um controlador. O objetivo é, por exemplo, comparar a conformidade de execução de um aplicativo em uma nova versão do SQL Server ou durante uma mudança de máquina (melhoria de desempenho).
O Microsoft SQL Server oferece várias funções:
Para consultas, o SQL Server usa a linguagem SQL em um dos dialetos mais compatíveis com SQL, a Microsoft tornando um ponto de honra corrigir de versão para versão alguns erros anteriores herdados do mecanismo Sybase. O dialeto usado é o T-SQL (Transact-SQL), uma implementação SQL que oferece suporte a procedimentos armazenados, funções definidas pelo usuário ou UDFs (Função Definida pelo Usuário) e gatilhos ( gatilho ). As linguagens XQuery e XPath são usadas em diferentes níveis para manipular dados XML em consultas SQL.
Para transferências de dados, o SQL Server usa o formato TDS (Tabular Data Stream) que foi implementado em outros bancos de dados (especialmente em sua contraparte Sybase ) e cujas especificações são públicas. Uma implementação de código aberto de um cliente TDS está disponível e forma a base do cliente SQL Server para o projeto Mono : FreeTDS .
Sendo o SQL Server equipado com dois motores de banco de dados, um relacional e outro de decisão, é possível fazer consultas em linguagem MDX ou DMX específicas para análise de dados para bases de decisão.
As linguagens R e Python estão integradas desde a versão 2016. Também é possível desenvolver rotinas SQL (UDF, procedures, triggers) usando uma linguagem .net como VB para .net ou C #.
No mecanismo relacional do SQL Server, é possível definir links entre tabelas por meio de restrições declarativas para garantir fortemente a integridade dos dados entre a tabela de referência e a tabela filha. Esses links de integridade podem ser usados para modificar ou excluir linhas vinculadas na cadeia e suportar regras de evolução do tipo NO ACTION, CASCADE, SET DEFAULT e SET NULL.
O SQL Server é um DBMS transacional. É capaz de preparar modificações aos dados de uma base de dados e de os validar ou anular atomicamente, ou seja, no "tudo ou nada". Isso garante a consistência e integridade das informações armazenadas no banco de dados. Durante uma transação, os conjuntos de dados contendo as linhas de dados sendo modificados por esta transação são bloqueados. Os outros usuários devem aguardar o final da transação para poder modificá-los novamente. Por outro lado, os usuários simultâneos podem opcionalmente ler os dados, mesmo que tenham sido bloqueados para modificação por outra transação, dependendo do nível de isolamento escolhido.
Nível de isolamento e bloqueioOs bloqueios são executados no nível de linha, página, extensão, tabela ou banco de dados. O SQL Server bloqueia apenas os recursos de que precisa (linhas por padrão) e, conforme necessário, pode bloquear em um nível superior (partição ou tabela). Isso elimina a necessidade de os usuários aguardarem o final de uma transação para atualizar as linhas de dados que não foram afetadas por uma mudança e ajuda a reduzir a quantidade de recursos consumidos. O bloqueio pode ser pessimista - os usuários simultâneos não poderão acessar as linhas nesta transação - ou otimista - nesse caso, os usuários simultâneos poderão acessar a versão mais recente das linhas.
Para fazer isso funcionar, o SQL Server permite controlar o nível de isolamento de seis maneiras diferentes. Os 4 níveis fornecidos pelo padrão SQL
... que se baseia em bloqueio pessimista e dois níveis "otimistas":
Como o nível de isolamento é dinâmico, ele pode mudar durante a mesma transação. O nível de isolamento READ COMMITTED SNAPSHOT funciona como Oracle ou PostGreSQL, substituindo o nível de isolamento READ COMMITTED com versão de linha para bloqueio otimista.
Registro de transaçõesO SQL Server permite que você execute transações de três maneiras diferentes:
Ao contrário do Oracle ou PostGreSQL, o SQL Server até mesmo transaciona pedidos DDL (CREATE, ALTER, DROP ...) e DCL (GRANT, REVOKE ...).
É possível definir pontos de controle da transação (comando SAVE TRANSACTION) para permitir um cancelamento parcial (ROLLBACK ...).
As transações são gravadas no log de transações ("REDO log"), as modificações dos dados ficam imediatamente disponíveis na memória e serão gravadas nos arquivos de dados durante os pontos de verificação lançados de forma periódica e assíncrona. No entanto, é possível forçar um ponto de verificação usando a instrução CHECKPOINT.
O log de transações registra os dados de forma diferente e faz isso de três maneiras diferentes:
Nos modos de log completo e em massa, o log de transações deve ser salvo periodicamente ("log REDO"), caso contrário, ele aumentará indefinidamente. E graças ao backup transacional, é possível restaurar o banco de dados como estava em qualquer ponto no tempo para o segundo mais próximo ou para a transação mais próxima (no entanto, com alguns limites para o modo de diário em massa).
É possível aninhar transações, mas como o conceito de transação é um estado da transação, não é possível fazer cancelamentos parciais dessa forma. No entanto, existem outras maneiras de preservar alguns dos dados da reversão da transação, incluindo por meio de variáveis de tabela.
O SQL Server oferece suporte a transações distribuídas por meio do Database Transaction Coordinator (DTC), que implementa o "two-phase commit" de acordo com o modelo XA.
Os bancos de dados estão fisicamente contidos em arquivos. Os arquivos geralmente têm as extensões:
Os arquivos são divididos em blocos de 8.196 bytes chamados páginas e organizados em conjuntos de 8 páginas consecutivas chamadas extensões. Até a versão 2000, as linhas eram limitadas a um tamanho máximo de 8060 bytes (colunas do tipo LOBs (imagem, texto, ntext) não são contadas neste limite). Desde a versão de 2005, é possível ultrapassar muito esse limite e ir até 2 bilhões de bytes. Por outro lado, o tamanho útil da página é de 8096 bytes .
Os bancos de dados só funcionam quando todos os arquivos estão presentes, mas a leitura é possível durante a restauração, por meio do conceito de restauração fragmentada.
Os arquivos de dados são agrupados logicamente no banco de dados em grupos de arquivos que constituem o destino dos objetos do banco de dados (tabela, índice, etc.) Um grupo de arquivos é considerado como a unidade de armazenamento de qualquer tabela ou índice e se este grupo contém vários arquivos, então o SQL Server distribui os dados em todos os arquivos (equivalente a um RAID 0), as operações de leitura e gravação sendo realizadas em paralelo nos diferentes arquivos, sob o controle direto do mecanismo de armazenamento do SQL Server. Esses arquivos e grupos de arquivos podem ser submetidos a backup de forma independente, mesmo se houver uma interdependência lógica entre os objetos de um arquivo e outro (integridade referencial em particular).
Devido ao seu aspecto multibase, o SQL Server tem dois níveis de segurança: nível de servidor, por meio de contas de logon, e nível de base, por meio de usuários SQL.
A partir da versão 2005, mudanças significativas de segurança ocorreram na política do SQL Server.
Além disso, a estratégia de segurança também cobre a funcionalidade do servidor. Por exemplo, o procedimento armazenado xp_cmdshell para iniciar comandos do sistema está desabilitado e apenas o DBA pode habilitá-lo novamente . Da mesma forma, assim que o servidor é aberto, todos os arquivos de todas as bases de dados são bloqueados para leitura e escrita a fim de evitar acessos indesejados.
Contas de serviçoOs serviços que executam cada instância do SQL Server usam uma conta de serviço (a conta do sistema para executar o serviço do Windows). Este último deve ser escolhido com cuidado para evitar possíveis violações de segurança no servidor. Pode ser: Serviço do sistema, Serviço local (no Windows 2003), Serviço de rede (no Windows 2003), conta de usuário local do Windows, conta de usuário de domínio. É altamente recomendável que você bloqueie as permissões nas contas de serviço. Nesse sentido, e a partir da versão 2012, contas específicas com autorizações muito limitadas são criadas durante a instalação para cada um dos serviços do SQL Server (SQL Server, SQL Agent, SSAS, SSIS, SSRS, etc.).
Contas de loginA conta de conexão é usada para se conectar a uma instância do SQL Server. Para essas contas, os privilégios que se aplicam no nível do servidor devem ser definidos. O privilégio mínimo é o privilégio "CONNECT". Um exemplo de privilégio de nível de servidor é a capacidade de criar qualquer banco de dados. Nesse caso, é o privilégio CREATE ANY DATABASE.
O SQL Server depende por padrão do sistema de autenticação do Windows ( Kerberos ou Native), que permite o acesso a uma instância do SQL Server por meio de um grupo do Windows ou de um usuário do Windows. Ao conectar-se ao banco de dados, o usuário é identificado por seu login do Windows. Ele, portanto, não precisa fornecer sua senha durante a fase de autenticação do servidor.
Como há casos em que o usuário não pode ser identificado pelo seu login do Windows (uso de GNU / Linux, de uma página Web ...) um método de identificação direta ao SQL Server pode ser implementado. Deve ser feito explicitamente pelo administrador da instância. Isso supõe a criação de um nome de conta SQL e de uma senha, e para esta última pode-se modelar a política de conformação da senha na do Windows.
Ao acessar um recurso externo, o processo SQL Server atua de 3 formas diferentes: por personificação quando a camada do Windows está corretamente configurada, o usuário só pode acessar recursos através do SQL Server, aos quais teria direito se tivesse acesso direto; pela conta de serviço da instância, quando o usuário é administrador do sistema e para determinadas tarefas; não permite o acesso, em todos os outros casos. No caso de contas de login do SQL e para acesso a um recurso externo (por exemplo, enviar um fax em um procedimento armazenado), o SQL Server adiciona a capacidade de criar informações de login que são contas do Windows registradas para essa finalidade. Os usuários SQL podem, portanto, ser associados a essas contas do Windows para acesso a recursos externos.
Usuário SQLUma conta de login pode ser mapeada para um usuário SQL em um banco de dados específico, em vários ou em todos. O nome da conta de login e o nome de usuário podem ser diferentes (e é melhor que sejam). Um usuário SQL em um banco de dados pode receber privilégios que lhe permitem lançar diferentes comandos em vários objetos. Os privilégios podem ser estabelecidos diretamente em um objeto do banco de dados ou em um "contêiner", como o esquema SQL ou o banco de dados inteiro.
Exemplo de concessão de diferentes privilégios de nível de esquema SQL a um usuário chamado USR_BANQUE:
GRANT SELECT, INSERT, UPDATE, EXECUTE ON SCHEMA::FINANCE TO USR_BANQUE; FunçõesO SQL Server tem funções pré-estabelecidas no nível do servidor e também no nível básico. É ainda possível criar suas próprias funções (novo para o nível de servidor desde 2012). Uma função sendo uma coleção de privilégios atribuíveis a uma conta de conexão no nível do servidor ou a um usuário SQL quando esta função foi criada para um banco de dados específico.
Esquema SQLSendo o esquema um contêiner de objetos em um banco de dados, o SQL Server permite definir quantos esquemas SQL você quiser, a fim de organizar os diferentes objetos no banco de dados e especialmente para gerenciar a segurança no nível do esquema de forma proativa. Assim, a criação de novos objetos, se esses objetos forem colocados nos diagramas corretos, automatiza a implementação da segurança por herança. Portanto, não há comando de qualquer tipo para passar do ponto de vista do gerenciamento de privilégios, de modo que a segurança é imediatamente aplicada.
Finalmente, e ao contrário de alguns RDBMS (Oracle por exemplo), não há privacidade ou confusão entre um esquema SQL e seu proprietário (o usuário que o criou) o que, por exemplo, facilita muito a migração de 'um objeto de um diagrama para outro e garante melhor segurança.
Exemplo de migração de uma tabela de um esquema SQL para outro:
ALTER SCHEMA BANQUE TRANSFER dbo.T_CLIENT; EncriptaçãoO SQL Server permite que os dados da tabela sejam criptografados por diferentes algoritmos integrados ao SQL Server. Chaves de criptografia e certificados podem ser importados de um arquivo externo ou criados diretamente no banco de dados, sendo o SQL Server sua própria autoridade de certificação. No entanto, existe uma terceira possibilidade que consiste na utilização de uma caixa eletrónica para a geração e guarda das chaves denominada HSM ( Hardware Security Module ), destinada a garantir a inviolabilidade das chaves. Esses dispositivos eletrônicos são colocados na rede e se autodestruem em caso de tentativa de acesso ilegal, seja físico ou lógico.
Um backup de banco de dados incorpora todas as chaves e certificados para garantir a criptografia e descriptografia. Mas a restauração de um banco de dados em um servidor diferente do original requer descriptografia seguida de nova criptografia. Os elementos que compõem a arquitetura de criptografia são interdependentes entre si de uma chave secreta mantida no nível da instância. No entanto, para prosseguir com a encriptação ou desencriptação, é necessário abrir a chave, quer possuindo um certificado, quer fornecendo a palavra-passe.
O SQL Server permite que você criptografe os dados da tabela ou criptografe o código de rotinas.
Finalmente, o SQL Server permite que o armazenamento de dados seja criptografado e não mais dados por meio de TDE (Transparent Data Encryption). Os arquivos (logs de transações, dados da tabela e índices) são criptografados quando fisicamente gravados em discos e descriptografados quando lidos fisicamente dos discos para a memória. Os dados são então exibidos na memória, o que torna possível manter o desempenho ao criptografar todo o banco de dados.
A versão 2016 adicionou criptografia ponta a ponta, ou seja, a descriptografia controlada pelo servidor pode ser feita no nível do aplicativo e não mais no banco de dados.
As tabelas são os objetos que realmente contêm os dados no banco de dados. Eles são de dois tipos:
Uma tabela pode conter até 30.000 colunas cuja soma dos tamanhos não exceda 2 bilhões de bytes . Colunas de tipos de BLOBs (VARCHAR (max), NVARCHAR (max), VARBINARY (max)) sendo armazenados fora da linha.
As tabelas podem ter uma chave primária . A chave primária é sempre indexada . Outras restrições também estão disponíveis no nível da tabela , como: restrições exclusivas (indexadas automaticamente), valores padrão, restrições de verificação, chaves estrangeiras .
Uma visão é uma consulta nomeada do banco de dados. É consultado da mesma forma que uma tabela.
Os dados retornados pela visão são reconstruídos a partir dos dados contidos nas tabelas cada vez que a visão é chamada (exceto para visões indexadas que armazenam os resultados). O SQL Server substitui o nome das visualizações na consulta que será executada por suas definições, então a consulta resultante é compilada, otimizada e executada pelo mecanismo. O plano compilado da consulta assim obtida é então armazenado para permitir a reutilização durante uma próxima chamada. Como o SQL Server possui otimização semântica, além da otimização estatística, as ramificações de junções desnecessárias para a operação de uma visualização são sistematicamente cortadas para otimização, quando possível.
Sob certas condições, é possível atualizar os valores em uma exibição. Exemplos dessas condições são:
O SQL Server implementa tipos especiais de visualizações que são visualizações particionadas e visualizações indexadas (equivalentes às visualizações materializadas síncronas do Oracle).
A indexação em SQL é fornecida de quatro maneiras: indexação relacional, indexação vertical, indexação textual e indexação específica para certos tipos de objetos.
Indexação relacionalRelaciona-se ao conteúdo completo das colunas. O mecanismo interno desses índices é baseado na noção de árvore balanceada (B-Tree).
Existem dois tipos de índices :
Só pode haver um índice clusterizado por tabela, pois esse tipo de índice é, na verdade, uma "classificação" da tabela. As linhas da tabela são, portanto, logicamente classificadas na ordem do índice clusterizado, o que explica por que só pode haver um. Em outras palavras, o índice clusterizado sendo uma árvore b , as folhas do índice são diretamente as linhas da tabela.
Um índice não clusterizado não reflete a ordem física das linhas na tabela.
Ambos os tipos de índice são construídos a partir de uma chave , composta por várias colunas. Eles permitem que você encontre rapidamente um dado de todas ou parte das colunas desta chave.
Assim, se considerarmos uma chave (A, B, C), podemos fazer pesquisas nos campos (A), (A, B) e (A, B, C). Os campos são considerados na ordem da chave; portanto, não é possível fazer uma pesquisa sobre, por exemplo (B, C) ou (C) com este índice. Por outro lado, uma pesquisa em (A, C) se beneficiará facilmente da indexação da coluna A.
Uma tabela pode conter 999 índices. Cada índice pode conter 16 colunas cuja soma dos tamanhos não exceda 900 bytes . Os índices contêm, além dos dados das colunas do índice, um marcador para os dados da tabela. Pode ser um ponteiro para uma linha ou uma das chaves do índice clusterizado (em inglês: índice clusterizado ).
O otimizador do SQL Server escolhe qual índice usar. Pode não estar usando o índice que você criou porque o custo de pesquisar por esse índice pode ser maior do que ler a tabela inteira. Para fazer essas escolhas, o otimizador usa, entre outras coisas, as estatísticas da tabela e a presença ou ausência de restrições. No entanto, é possível forçar o otimizador a usar um índice com a cláusula WITH (index_name); no entanto, essa prática não é recomendada.
O índice é organizado em árvore-b . Isso permite que as informações sejam classificadas mais rapidamente do que se tivessem que ser inseridas em uma tabela sequencial. Como esse arranjo exige muito armazenamento, a versão 2005 do SQL Server permite separar os dados de pesquisa e os dados do processo que são integrados ao índice.
O SQL Server permite criar colunas calculadas que, se persistentes (PERSISTED), podem ser indexadas.
Não há estrutura de índice diferente de b-tree . Por exemplo, não há índice de bitmap , o que facilitaria as pesquisas em campos com conteúdo pouco variado, mas é suficiente criar uma tabela de referência para simular um índice de bitmap. Da mesma forma, não há índice hash. Mas basta criar uma coluna hash computada (função CHECKSUM) e indexá-la para obter um efeito semelhante. Finalmente, não é possível criar um índice na expressão, mas apenas criar uma coluna calculada com tal expressão e indexá-la para obter o mesmo efeito.
Indexação verticalO SQL Server permite que você crie os chamados índices "verticais" (índice columnstore) em um conjunto de colunas permitindo acesso a todas as colunas indexadas no mesmo plano. Na verdade, em um índice relacional de várias colunas, a ordem de cada coluna na chave do índice permite apenas certas combinações de pesquisas. Este não é o caso da indexação vertical, que permite todas as combinações de pesquisas. Por exemplo, com a chave (A, B, C), é possível pesquisar tanto em (A), (B) ou (C), mas também em qualquer combinação de duas ou três colunas (A, B), ( B, A), (A, C), (C, A), (B, C), (C, B), (A, B, C), (A, C, B), (B, A, C), (B, C, A), (C, A, B), (C, B, A).
Na versão de 2012, esses índices são somente leitura e, portanto, destinados principalmente a bancos de dados do tipo DataWarehouse para business intelligence. Na versão 2014, esses índices podem ser modificados.
Indexação textual e semânticaA indexação textual (na verdade, um catálogo de indexação) permite pesquisas em texto não criptografado ("texto completo", em conformidade com o padrão SQL com o predicado CONTAINS) ou à maneira do Google usando o predicado FREETEXT. É permitida a busca por palavras diferentes em um mesmo documento (texto das colunas de uma tabela ou documento eletrônico armazenado em uma tabela) por igualdade, início, proximidade, mas também por forma flexionada (conjugação, plural, feminino, etc.) , sinonimização, extensão (especialmente para acrônimos) ... bem como com pesos relativos (função de tabela CONTAINSTABLE e FREETEXTTABLE).
A indexação textual pode estar relacionada a cadeias de caracteres ou colunas do tipo XML, mas também a arquivos eletrônicos, sejam eles armazenados diretamente em uma tabela (em um BLOB) ou como um arquivo por meio do FILESTREAM ou em um FILETABLE. O SQL Server reconhece mais de 50 formatos de arquivo nativamente e permite que você adicione muitos outros tipos de arquivos eletrônicos usando "ifilter".
O SQL Server oferece suporte à maioria dos idiomas e permite pesquisas combinadas multilíngues. Para isso, podem ser estabelecidas listas de "palavras negras" para cada uma das línguas indexadas. Além disso, o SQL Server indexa todas as palavras sem exceção, incluindo palavras pretas, onde alguns RDBMS são limitados a palavras com um comprimento mínimo (MySQL, por exemplo) ou excluem palavras pretas (PostgreSQL, por exemplo). Por fim, se o caso não for importante para a indexação textual, o usuário pode escolher se deseja uma indexação textual levando em consideração ou não os caracteres diacríticos, como acentos ou ligaduras. A indexação de texto também permite pesquisar metadados em arquivos eletrônicos, por exemplo, o autor de um arquivo Word.
Com a versão 2012, o SQL Server adicionou a indexação semântica que, como o próprio nome sugere, permite fazer pesquisas semânticas. Essa funcionalidade requer a adição de um banco de dados de processamento semântico destinado a estabelecer estatísticas sobre os textos indexados. a pesquisa semântica enfoca o significado dos documentos. Isso permite a extração automática de marcas, descoberta de conteúdo relacionado e navegação hierárquica por documentos com conteúdo semelhante ao texto de referência. Um exemplo prático é consultar o Índice de Similaridade de Documentos para identificar, em um lote de currículos, quais correspondem melhor a uma descrição de cargo.
Objetos de indexaçãoO SQL Server permite a indexação de certos tipos de dados de objetos, como XML (quatro tipos de índices) ou espaciais (tipos de geometria e geografia ). Como é possível adicionar os seus próprios objetos, desde que os descreva em formato .NET, também é possível indexá-los, desde que providencie que sejam " ordenados por bytes " na organização do seu armazenamento.
É possível definir procedimentos armazenados codificados em Transact-SQL , bem como em .NET (SQL CLR). Um procedimento armazenado é uma série de instruções que podem modificar os dados do banco de dados e encapsular transações e que retornam um ou mais valores.
Os procedimentos armazenados no SQL Server podem assumir como parâmetros e / ou retornar inteiros, strings de caracteres, datas, cursores, tabelas, tabelas virtuais e qualquer outro tipo definido no SQL Server por padrão ou pelos usuários.
As principais vantagens de usar procedimentos armazenados são:
O gatilho é um código armazenado que é executado após (AFTER) ou no lugar de (INSTEAD OF) uma ação específica (inserir, modificar, excluir) em uma tabela ou exibição. É possível codificar quantos gatilhos AFTER você quiser em uma única ação (INSERT, UPDATE ou DELETE) da mesma tabela ou visão. No caso de uma pluralidade de gatilhos na mesma ação da mesma mesa, a ordem dos gatilhos é arbitrária, exceto para os 3 primeiros que podem ser impostos. Os gatilhos INSTEAD OF devem ser exclusivos por evento / tabela.
Duas tabelas virtuais são criadas para lidar com dados inseridos, modificados ou excluídos: inseridos (para inserção e modificação) e excluídos (para exclusão e modificação). Não é possível modificar o conteúdo dessas tabelas virtuais. Em contraste, o SQL Server permite que você modifique a tabela de destino do gatilho, como reverter a transação implícita que disparou o gatilho, revertendo a transação (ROLLBACK).
O gatilho INSTEAD OF específico pode ser usado quando se deseja interceptar o evento, não para deixá-lo ocorrer, mas para codificar outra ação. Este tipo de gatilho pode ser usado, por exemplo, no contexto de um mapeamento relacional / objeto onde manipulamos visões compostas de múltiplas junções onde queremos que o usuário seja capaz de fazer atualizações (INSERT, UPDATE, DELETE) diretamente nessas visões. Nesse caso, os dados INSERT, UPDATE ou DELETE são divididos para cada uma das mesas em jogo e uma série de ordens específicas para cada mesa a ser exibida é lançada por meio de uma transação.
Desde o SQL Server 2005, a capacidade de criar gatilhos DDL foi adicionada. Esses gatilhos DDL atuam após a ocorrência de eventos do tipo CREATE, ALTER ou DROP, e esses eventos podem ser capturados no nível do servidor (por exemplo, CREATE DATABASE) ou no nível do banco de dados (por exemplo, DROP TABLE). Para obter detalhes sobre o evento interceptado, um pacote de dados XML (obtido pela função EVENTDATA ()) fornece vários detalhes sobre a origem e a natureza do evento. Existe até a consulta SQL que o acionou.
Um tipo específico de gatilho é usado para interceptar conexões com o servidor (gatilho FOR LOGON).
Desde o SQL Server 2000, é possível criar funções em Transact SQL e desde 2005 em .net (SQL CLR).
Essas funções são de 3 tipos:
No entanto, existem restrições à funcionalidade que pode ser usada no corpo de uma função. Não é possível usar funções não determinísticas e a função não deve modificar dados ou parâmetros do sistema de forma permanente ou permanente. Isso proíbe, por exemplo, o uso de um INSERT em uma tabela ou o uso da função GETDATE ().
SQL Server 2005 adicionado:
Ao contrário de um procedimento armazenado, uma função não pode conter:
Isso faz sentido, porque a finalidade de uma função é, acima de tudo, ser usada dentro de uma consulta.
As funções de tabela embutidas, atuando como visualizações parametrizadas, podem atualizar as tabelas subjacentes.
Desde a versão 2005, o SQL Server incorpora aspectos de objeto, incluindo:
Essa ferramenta está incluída nas versões pagas do SQL Server. Ele permite que você conecte e administre os vários mecanismos do SQL Server (SSRS, SSIS, SSAS e o mecanismo relacional). Permite que o motor relacional desenvolva scripts TSQL, com a possibilidade de agrupar todos eles dentro de uma solução (como no Visual Studio). Eles também podem ser salvos usando o Visual SourceSafe ou Team Foundation Server. Para a versão Express (gratuita), a ferramenta simplificada do SQL Server Management Studio Express Edition (SSMSE) está disponível gratuitamente.
Antes de 2005, esta ferramenta era separada em dois módulos chamados "Enterprise Manager" e "Query Analyzer".
Como o SSMS, esta ferramenta vem com versões pagas do SQL Server. É uma sobreposição da ferramenta de desenvolvimento Microsoft Visual Studio genérica adequada para a criação de projetos de BI (Analysis Services, Integration Services ou Reporting Services). Todos esses projetos podem ser encontrados no grupo "Projetos de Business Intelligence".
Esta ferramenta permite capturar a atividade de um banco de dados. Ele permite que os administradores verifiquem os itens demorados e as consultas no banco de dados. Opcionalmente, é possível reproduzir a captura em um servidor de teste. Tende a ser gradualmente substituído pelo sistema de "eventos estendidos" (eventos estendidos).
Na verdade, o MS SQL Server é um pacote composto por cinco serviços principais:
Outros serviços estão associados a ele para certas necessidades:
O SQL Server também inclui muitas ferramentas de desenvolvimento:
Mais de cem ferramentas periféricas estão disponíveis, seja durante a instalação (SQL Profiler, Database Tuning Advisor, Data Collector, etc.) ou diretamente no site da Microsoft (SQLdiag, SQLioSim, SQL Server Best Practices Analyzer ...) ou por meio o site da comunidade de código-fonte aberto Codeplex (RML Utilities, PAL, Open DBDiff ...).
Uma instância do SQL Server é uma instalação de alguns ou todos os serviços do SQL Server em uma máquina Windows e pode hospedar muitos bancos de dados. O mesmo sistema operacional oferece suporte a até 50 instâncias diferentes (o que não é recomendado na produção).
O SQL Server 2014 não é limitado em número de núcleos ou RAM, apenas pela capacidade do Windows. Um banco de dados é limitado a 524 peta bytes (Po), mas como o SQL Server pode hospedar vários bancos de dados e 32760 bases na mesma instância, a capacidade geral do sistema pode teoricamente lidar com 17166240 dados Po . Com 50 instâncias na mesma máquina, este limite teórico é empurrado de volta para 858 312 000 Po ...
O SQL Server existe em diferentes edições: CE (Compact Edition - solução incorporada para smartphones), Express (várias versões - grátis), Web (no modo SPLA: Service Provider License Agreement - com Web hosts), Standard, BI e Enterprise - este para Produção. A edição Developper (equivalente à edição Enterprise) é para desenvolvimento.
Este é o mecanismo de banco de dados. Cada instância do SQL Server tem um serviço do Windows Sql Server correspondente. Este serviço pode ser encontrado nos serviços do Windows sob os nomes MSSQL $ Instance_name para instâncias nomeadas e MSSQLServer para a instância padrão.
Cada instância criada tem inicialmente de 4 a 6 bancos de dados do sistema. O mecanismo do SQL Server depende do banco de dados do sistema mestre que contém a definição dos outros bancos de dados.
As outras bases do sistema são:
Este é o agente de manutenção da instância do SQL Server. Cada instância do SQL Server tem um serviço do Windows Sql Server Agent correspondente. Este serviço pode ser encontrado nos serviços do Windows sob os nomes SQLAgent $ InstanceName para instâncias nomeadas e SQLAgent para a instância padrão. O mecanismo do SQL Server Agent é baseado no banco de dados msdb . Este motor é usado para gerenciar backups, planos de manutenção, trabalho agendado, monitoramento de banco de dados, alertas administrativos ...
O Agente também tem a função de monitorar o serviço do SQL Server e acioná-lo automaticamente para reiniciar em caso de desligamento inesperado.
Índice de texto completo / mecanismo de pesquisa.
Também conhecido como MS DTC, é usado para gerenciar transações distribuídas. Ou seja, transações entre vários servidores de transações SQL Server, entre um SQL Server e outros servidores de banco de dados, entre várias fontes de dados diferentes, sejam eles motores de banco de dados ou componentes simples.
O serviço que surgiu no SQL Server 2000 permite consultar regularmente a base de dados e, a depender dessas solicitações, notificar os grupos inscritos nesses eventos. Este serviço deixou de ser fornecido como padrão desde o SQL Server 2008. SQL Server, codinome Denali, traz, no entanto, funcionalidade semelhante no SQL Server Reporting Services e no Sharepoint 2010, conhecido como Alerting.
A plataforma de business intelligence do SQL Server consiste em um ETL , que apareceu com o SQL 7, um mecanismo multidimensional, também apareceu com o SQL 7, e um mecanismo de relatório, adicionado em 2004 no SQL 2000. Com o SQL Server versão 2005, um estúdio de desenvolvimento para a inteligência de negócios foi integrada ao Visual Studio 2005: BI development Studio.
O SQL Server 2008 oferece suporte a um novo tipo de dados primitivos: o tipo geográfico onde ocorre a projeção (latitudes e longitudes) e o tipo geométrico sem projeção para manipular dados relacionados a pontos, linhas e polígonos. O primeiro software com suporte para SQL Server é o software Manifold System (en) e MapInfo, GeoMedia.
Um serviço que apareceu no SQL Server 2005, é a substituição do Data Transformation Services (DTS). O ETL foi totalmente reconstruído e compete com outras ferramentas profissionais de ETL no mercado.
O objetivo é a integração da empresa por meio de seus dados. O SSIS (SQL Server Integration Services) é uma plataforma abrangente de integração de dados. SSIS, não é um ETL simples. É uma plataforma completa de integração de dados, oferecendo uma série de ferramentas gráficas de desenvolvimento e gerenciamento, serviços, objetos programáveis e APIs (Application Programming Interfaces). O SSIS contém um mecanismo de fluxo de trabalho que oferece suporte a lógica complexa e pode ser usado para uma ampla variedade de operações de manutenção de banco de dados e operações sofisticadas de transferência de dados. A arquitetura SSIS é basicamente composta por duas partes: o mecanismo de tempo de execução de transformação de dados, que gerencia o fluxo de controle de um pacote, e o mecanismo de fluxo de dados ou mecanismo de pipeline de transformação de dados, que gerencia o fluxo de dados de fontes de dados, por meio de transformações, e para destinos de destino.
O SQL Server Analysis Services (SSAS) é um serviço que apareceu no SQL Server 7, conhecido na época como OLAP Services. Permite gerar cubos OLAP , dados agregados e multidimensionais. Também possibilita a implementação de algoritmos de mineração de dados .
Este serviço, que apareceu no SQL Server 2000, é um mecanismo de geração de relatórios. Dois web services o compõem, um permitindo sua administração, outro a geração, a assinatura, a prestação dos relatórios. As renderizações são feitas em Excel, PDF, HTML e Word (a partir da versão 2008).
Apresentado com o SQL Server 2008 R2, ele suportará até 256 processadores lógicos, bem como virtualização ilimitada e uma quantidade ilimitada de memória.
Ele suporta um número ilimitado de processadores e tamanho de RAM (limitado pelo sistema operacional). Há uma versão de 32 bits (x86) e 2 versões de 64 bits (ia64 e x64, x64 apenas para SQL Server 2005) e não há limite para o tamanho dos bancos de dados. Ele só pode ser instalado em uma versão de servidor Windows . Inclui todos os recursos do mecanismo, incluindo recursos de alta disponibilidade. As funcionalidades para business intelligence estão todas incluídas desde a geração de relatórios com Reporting Services ao uso de cubos OLAP com Analysis Services até a transferência de dados com Integration Services (SQL Server 2005) ou Data Transformation Services (SQL Server 7) e 2000) . Ele também pode operar em um cluster de até 8 nós.
Esta é uma edição de desenvolvedor que possui a mesma funcionalidade da edição Enterprise. No entanto, a licença contém restrições ao seu uso. A licença proíbe a operação em produção. Destina-se exclusivamente ao uso de teste. No entanto, não há restrições aos produtos disponíveis.
Ele suporta até 4 processadores e um tamanho de RAM ilimitado (limitado pelo sistema operacional). Existe uma versão de 32 bits (x86) e 2 versões de 64 bits (ia64 e x64, ambas apenas para SQL Server 2005) e não há limite para o tamanho dos bancos de dados. No entanto, o SQL Server 2005 permite sua instalação no Windows desktop. Inclui todas as funcionalidades do motor, exceto algumas funções de alta disponibilidade. As funcionalidades para business intelligence estão todas incluídas desde a geração de relatórios com Reporting Services (para SQL Server 2000, este componente deve ser carregado separadamente) até o uso de cubos OLAP com Analysis Services, incluindo a transferência de dados com Integration Services (SQL Server 2005) ou Data Transformation Services (SQL Server 7 e 2000). Ele também pode operar em um cluster de até 2 nós desde sua versão de 2005.
Nova edição apareceu com o SQL Server 2005. Ele suporta até 2 processadores e 3 GB de RAM. No momento, ele está disponível apenas na versão de 32 bits e não tem limite para o tamanho dos bancos de dados. Inclui a maior parte da funcionalidade do mecanismo, incluindo a capacidade de participar de uma replicação como editor. A funcionalidade de business intelligence incluída é limitada a relatórios com Reporting Services. Esta edição desaparece com a versão 2012 do SQL Server.
Uma nova edição apareceu no SQL Server 2008. Perto da edição Standard em termos de funcionalidade, ela, entretanto, não suporta espelhamento ou componentes de tomada de decisão do SQL Server. A sua licença permite apenas a sua utilização como servidor de base de dados de um site ou serviço. Ele está disponível como uma assinatura mensal especialmente para hosts, além de estar disponível de forma mais convencional para compra.
Edição existente com SQL Server 7 e SQL Server 2000. Suporta até dois processadores e 2 GB de RAM . Disponível apenas na versão de 32 bits e sem limite de tamanho dos bancos de dados. Inclui a maior parte da funcionalidade do mecanismo, incluindo a capacidade de participar da replicação como assinante. Não possui funcionalidades para business intelligence. Em termos de licenciamento, ter uma Licença de Acesso para Cliente (CAL) do SQL Server é suficiente para usar esta edição.
Semelhante ao SQL Server edition Express, com as limitações de memória, número de processadores e tamanho do banco de dados removidas, no entanto, ele só pode ser usado localmente e só pode hospedar bancos de dados de aplicativos Microsoft. Produtos como o Sharepoint ou determinados recursos do Windows Active Directory fazem uso dele.
A Microsoft publicou uma edição gratuita que consiste apenas no mecanismo de banco de dados relacional, limitado a 4 GB de espaço em disco (10 GB na versão 2008 R2). No entanto, ele pode ser usado para criar até 32.760 bancos de dados diferentes, ou seja, mais de 320 TB de dados da versão 2008 R2.
Anteriormente chamado de Pocket PC / Mobile / Everywhere Edition. Esta é uma edição leve adequada para uso em PDAs ou smartphones equipados com Windows Mobile . A versão Compact (versão 3.5), que sucede às edições Mobile, está aberta às estações de trabalho clássicas baseadas no Windows . Esta edição pode participar da replicação como assinante.
O SQL Server oferece suporte a 5 sistemas de licenciamento:
Os tipos de licença que podem ser considerados para usar o SQL Server por trás de um front-end da Web são a licença por processador ou núcleo ou o modo SPLA limitado à edição da Web.
Vale a pena mencionar algumas ferramentas relacionadas ao SQL Server ...
Solução Microsoft para integração de dados EAI (Enterprise Application Integration) e B2B (business-to-business).
Solução de gestão do conhecimento empresarial global (KB - Base de conhecimento) que permite a gestão de conteúdos (via site e fórum) e documentos eletrônicos compartilhados, recuperação de informação, bem como a possibilidade de criação de formulários e apresentação de estatísticas de tomada de decisão como dashboards, indicadores-chave ( KPI - Indicador-chave de desempenho) ...
Este é o ERP (Enterprise Resource Planning) da Microsoft.
É um software forge que permite a gestão de código fonte, builds, monitorização de recursos, planeamento de tarefas ...
Sistema de gestão centralizada, supervisão e manutenção do sistema informático (servidores, PCs, periféricos online) e da infraestrutura de rede.
Serviço de distribuição para o sistema operacional Microsoft e aplicativos para atualização de várias máquinas Windows em um parque de computadores (usa a versão Express gratuita)
StreamInsight é uma plataforma projetada para desenvolver e implantar aplicativos de Processamento de Eventos Complexos (CEP) em grande escala. Ele é baseado em dois componentes essenciais: o StreamInsight Server para o gerenciamento de fluxos de dados e o StreamInsight Framework para a criação de interfaces.
A EDF usa o StreamInsight para gerenciamento de incidentes para todos os seus equipamentos de TI.
Muito comprometida com esse movimento, principalmente por meio do Hadoop, a Microsoft oferece diversas soluções para o gerenciamento de big data.
HDInsight (Hadoop)HDInsight é uma solução Hadoop oferecida na nuvem do Azure ou no local (para fins de desenvolvimento).
As ferramentas de linguagem Map / Reduce, Hive, Sqoop e Pig facilitam a transferência e manipulação de dados do SQL Server para o Hadoop. Um SDK baseado na estrutura .NET permite que você escreva lotes usando o Visual Studio. Uma instalação local do Hadoop destinada a desenvolvedores está disponível por meio do HDInsight Server.
PolibaseO Polybase é uma ferramenta destinada a atacar diferentes fontes de dados relacionais (SQL Server), decisórios (SQL Server Parallel Data Warehouse - PDW) ou big data, através de diferentes processos como Map Reduce ou MPP (Massive Parallel Processive)