Bases de Dados de Sistema – Introdução


No SQL Server temos dois tipos de bases de dados: de sistema e "user defined". Antes do SQL Server 2005, as bases de dados de sistema eram visivelmente misturadas com as outras bases de dados, no "Enterprise Manager". Hoje em dia, no SQL Server Management Studio, as BDs de sistema ficam isoladas em uma pasta chamada "System Databases". Por esta razão, muitos dos novos profissionais de bases de dados não têm a muita curiosidade em saber a função destas BDs.
Neste post irei descrever as funções principais de cada uma destas curiosas BDs, que já vêm de raiz em uma instância de SQL Server.

Elas são: master, tempdb, model e msdb... As estrelas do post de hoje!

  • A base de dados master guarda todos os registos a nível do sistema. Nesta base de dados estão guardadas informações sobre logins e todas as definições de sistema, como por exemplo a informação para inicialização do SQL Server. A BD master, também regista a existência de todas as outras bases de dados e a localização de seus ficheiros. Ou seja, sem a master não há milagres, faça sempre backup desta BD (na verdade de todas...).
  • Falaremos agora sobre a famosa tempdb. Sabemos que esta é um ponto comum no âmbito da instância. Também conhecida como a "casa de banho pública" do SQl Server, pois é acedida por todas as bases de dados com necessidades.
    Recriada a cada reinicialização do SQL Server, de uma forma limpa, a tempdb, mais precisamente, guarda objectos temporários como stored procedures, tabelas (tabém globais), variáveis e cursores, além de ser utilizada pelo SQL Server na criação de tabelas necessárias para desempenhar certas funções específicas - as chamadas work tables, que desempenham funções de sort, por exemplo. Todos estes objectos temporários são removidos ao fechar da conexão que os originou. Além do referido, a tempdb ainda tem a função de guardar dados relativos ao "row versioning" e também dados provenientes de operações online sobre índices.... Ufa! Acho que dei motivos suficientes para esta "casa de banho pública" ser bem tratada. Desta forma, siga as boas práticas para sua configuração, como criação de múltiplos ficheiros e armazenamento em um disco rápido e dedicado.
  • A base de dados model, como o seu próprio nome sugere, é um modelo utilizado para criação de outras bases de dados. De uma forma geral, sempre que uma nova base de dados é criada, uma cópia da model é feita, sendo as páginas seguintes preenchidas com o valor vazio. A BD model pode ser modificada, sempre tendo em atenção que tudo o que for alterado/criado, será replicado para novas BDs. Vimos no ponto anterior que a tempdbé criada a cada reinicialização do SQL Server, e obviamente, a BD model serve de base para a sua criação - com algumas nuances.
  • Finalmente chegamos a msdb! Está base de daos é utilizada pelo SQL Server Agent, e tema função de guardar informações relativas a agendamentos, alertas, operadores e jobs. O Service Broker e o Database Mail também trabalham com a msdb, assim como todos os eventos de backups realizados na inctância. A msdb, por defeito, é criada em simple recovery model, porém pela sua grande importância, a recomendação é alterar para FULL e, obviamente, incluir esta BD no plano de backups de T-LOG.


Levando em conta o descrito acima, e suas dependências, o SQL Server inicia as bases de dados de sistema na seguinte ordem: master, model, msdb e tempdb.

Existem ainda outras bases de dados importantes como a distribution e mssqlsystemresource. Iremos falar sobre elas numa próxima oportunidade.
Hoje vimos as quatro principais bases de dados de sistema e suas funções principais, além de sua ordem de inicialização. Vamos seguir nas próximas semanas com mais alguns posts sobre este tema... Mantenha-se ligado ;)



Books Online – SQL Server 2014!

Boa noite pessoal tudo certo?

Estou preparando um post sobre o SQL Server 2014 por isso não tenho atualizado o meu blog na frequência usual, contudo, acredito ser interessante divulgar com vocês o link para acesso do Books Online desta nova versão do produto! Segue abaixo:

http://msdn.microsoft.com/en-us/library/ms130214%28v=sql.120%29.aspx

Um abraço!
http://www.virtualpass.com.br/

Short Script – Julho – 2013

Pessoal, boa tarde. Olha nós aqui outra vez, e se deus quiser, muitas outras vezes. Estou de volta com mais uma relação de códigos para a minha sessão Short Scripts, nesta relação vocês poderão encontrar exemplos e códigos relacionados aos seguintes itens: Alter User – Remapeando Usuário com base no Login; Comando Order By com […]

Webcast Virtual PASS PT – Agosto 2013

Olá pessoal, Como todos já sabem o Virtual PASS PT retornou com suas atividades e sempre na primeira quinta-feira de todo mês vamos ter um Webcast com algum membro da comundiade de SQL Server. Para o proximo mês de Agosto vamos ter um Webcast com o Microsoft  Certfied Master Pedro Correia (Blog|Twitter) sobre SQL Server … … Continuar lendo

Dicas para Férias #1

Considerando que atravessamos um período de férias, em que muitos de nós desligamo-nos um pouco do trabalho, queria aproveitar este espaço para partilhar algumas sugestões de "lazer informático" para ocupar a nossa mente mas sair um pouco dos paradigmas habituais.

A sugestão de hoje é o sitio da Microsoft Research. É neste local que vão sendo apresentados muitos dos projectos de I&D que, por vezes, dão origem a produtos inovadores como é o caso do GeoFlow.

Gostaria de chamar a atenção para dois projectos de interesse: o primeiro para as fotos/videos tirados nas férias e outro para pensarmos um pouco sobreo futuro do processamento de dados:

BLINK Cliplets
Aplicação que permite "tratar", pequenos videos num ambiente touch do windows 8, de forma original e muito eficaz. Aqui fica uma pequena demo:
P.S. Já começam a aparecer na internet bastantes exemplos e tutoriais para quem quiser experimentar...



Mas como este é um blog sobre SQL fica aqui outra dica de Verão para quem quer experimentar as ferramentas "mágicas" de manipulação de dados, já disponíveis num laboratório da Microsoft perto de si:

Excel 2013 Flash Fill
Sem palavras.. :


Boas férias (para quem está de férias)...

WebCast O que há de novo SQL 2012 (Dev track) P1

Ora aqui está o que me têm pedido relativamente a esta sessão, que coloque disponível on-line. Relembrar que é uma WebCast Rumos e que tem conteúdo de 2 dias em 3h.

É muito para falar em tão pouco. Por outro lado num momento em que se fala no 2014, acho que faz todo sentido vermos ainda as novidades que o 2012 trouxe! Há ainda muitas migrações a fazer de 2008....

Ao logo das próximas 4 sextas-feiras vamos ver (com a qualidade possível) as seguintes partes:

P1
  • 1.1 Não tem nada a ver com SQL, é a intro 
  • 1.2 O que há de novo SQL2012 Overview P1 
  • 1.3 O que há de novo SQL2012 Overview P2 
  • 1.4 Transact SQL P1 
  • 1.5 Transact SQL P2 

P2 
  • 2.1 File Table 
  • 2.2 Columnstore Idx P1 
  • 2.3 Columnstore Idx P1 \ SQL DT P1 
  • 2.4 SQL DT P2 

P3
  • 3.1 SSIS P1 
  • 3.2 SSIS P2 
  • 3.3 MDS 
  • 3.4 DQS P1 
  • 3.5 DQS P2 

P4
  • 4.1 SSAS P1 
  • 4.2 SSAS P2 
  • 4.3 Reporting \ DataExplorer \ PowerView P1 
  • 4.4 Reporting \ DataExplorer \ PowerView P2 

Parte 1
1.1 Não tem nada a ver com SQL, é a intro

 
1.2 O que há de novo SQL2012 Overview P1





1.3 O que há de novo SQL2012 Overview P2






1.4 Transact SQL P1







1.5 Transact SQL P2




SQL 2014 CTP1 – Internals do Cardinality Estimator – Parte I

Uma das novidades do SQL 2014 CTP1 é a inclusão de novos algoritmos de estimativa de cardinalidade (Cardinality Estimator). Este tópico é de grande importância pois afeta as decisões que o Optimizer na escolha dos Planos de Execuçao.

Este tópico já foi abordado, com algum detalhe, no Post Episódio XI - A calcular é que a gente se entende mas merece ser revisto à luz do novo algoritmo. É importante referir que este algoritmo tem várias vertentes e estamos apenas a analisar uma pequena parte mas globalmente as alterações visam tornar as previsões das estimativas de linhas mais precisa. Para aferirmos a eficácia deste novo algoritmo vamos utilizar o exemplo anterior e verificar as diferenças.

Se quiseremos utilizar no MSSQL 2014 CTP1 o antigo Cardinality Estimator podemos utilizar uma Query Plan Trace Flag (ver mais informação). Nos nossos exemplos iremos utilizar a QUERYTRACEON 9481 para obtermos as estimativas "antigas" no nosso novo SQL 2014.

Vamos então repetir o nosso simples exemplo: Primeiro criar a tabela e preencher alguns dados:

Para consultas simples, em que utilizamos apenas uma coluna para filtrar os nosso dados e as estatisticas existentes cobrem a totalidade dos valores existentes, podemos ver que a estimativa continua a acertar na "mouche":

Quando começamos a combinar várias colunas é que começam a aparecer as diferenças entre ambas as versões.. vamos verificar 3 exemplos:



Podemos verificar que, para os 3 exemplos acima apresentados, o novo algoritmo consegue aproximar-se mais dos valores actuais, o que traz óbvios beneficios para a construção dos planos de execução.

Mesmo para um exemplo um pouco mais complexo continuamos a obter beneficios em utilizar este novo algoritmo:


Então mas afinal qual é a fórmula utilizada para estimar o número de linhas que serão retornadas por um operador? No SQL 2012 era utilizado como factor de ponderação a relação linear entre os registos que, segundo as estatisticas, satisfariam uma condição e o total de registos de uma tabela:


No SQL 2104 CTP1 é utilizada um fórmula ligeiramente diferente que passa por calcular a raiz quadrada da proporção de registos que satisfazem a condição e o total de registos da tabela:


Num próximo post vamos ver exemplos um pouco mais complexos e perceber os ganhos que este novo algortimo nos traz..


Qual o impacto da Collation nos nomes dos objectos de uma Base de Dados, por exemplo nos nomes das tabelas, campos, views, procedimentos, etc.

A Collation pode ser definida a três níveis:
1. Servidor (solicitada aquando da instalação)
2. Base de Dados                                                                   
3. Cada Coluna alfanumérica de cada tabela
 
                                                  
Como já mencionei num outro artigo a Collation determina (entre outras coisas) a forma como o SQL SERVER interpreta os caracteres do ponto de vista da sua acentuação e maiúsculas/minúsculas. Isto aplica-se aos campos do tipo char, nchar, varchar, nvarchar, text e ntext.
 
O que algumas pessoas não sabem é que a Collation definida ao nível do Servidor e/ou Base de Dados tem também um impacto directo no nome dos objectos que fazem parte da própria Base de Dados.
 
Porquê?

É simples, porque os nomes dos objectos são eles próprios de tipo alfanumérico e os seus nomes ficam guardados em tabelas de sistema na respectiva Base de Dados, logo sujeitos à Collation da mesma.
 

Ditam as boas práticas que os nomes dos objectos não devem ser constituídos por caracteres acentuados mas já ao nível do "casing" existem mesmo técnicas (Ex: PascalCasing ou camelCasing) que tipicamente são usadas em nome de uma melhor legibilidade.
O que tem isso de mal?
Nada!
Mas mais uma vez a escolha da Collation deve ser feita tendo também em conta este aspecto e/ou os nomes dos objectos devem ser escolhidos de forma a não gerar entropias na implementação do sistema.
 
Para ilustrar a ideia fica o seguinte exemplo:--Vamos criar uma base de dados com uma collation Case Sensitive:
CREATE DATABASE BDtesteArtigo COLLATE Latin1_General_CS_AS
GO
USE BDtesteArtigo
--Vamos criar uma tabela chamada MinhaTabela em que M e T são maiúsculas...
CREATE TABLE MinhaTabela (Campo1 int)
--Esta query funciona bem pq o nome é mencionado com as maiúsculas e minúsculas no sítio certo:
SELECT * FROM MinhaTabela
-- Esta query produz o seguinte erro: Invalid object name 'minhatabela'
SELECT * FROM minhatabela
--Esta produz o seguinte erro: Invalid column name 'campo1'.
SELECT campo1 FROM MinhaTabela

--Fim de exemplo e Remoção da BD:
USE MASTER
DROP DATABASE BDtesteArtigo
 
No exemplo acima ficou bem patente o impacto que a Collation tem no nome dos objectos e se me permitem uma opinião pessoal, a menos que haja uma forte razão para tal, não escolham uma Collation Case Sensitive para as vossas BD's...

O que esperar para BI no SQL Server 2014

Fala galera, a alguns dias foi anunciado o CTP 1 do SQL Server 2014, e eu separei algumas funcionalidades interessantes relacionados à Business Intelligence que você poderá utilizar nesta nova versão. Com certeza o SQL Server 2014 terá mais novidades do que estas que estou escrevendo aqui, mas já dá pra ter uma idéia do [...]

The post O que esperar para BI no SQL Server 2014 appeared first on Think Think SQL.

Erro ao instalar SQL Server 2012 em cluster – There was an error to lookup cluster resource types

Ao tentar instalar o SQL Server 2012 em um cluster recebi o seguinte erro: There was an error to lookup cluster resource types. Error: There was a failure to call cluster code from a provider. Exception message: Generic failure . Status code: 4104. Description: Error code 0x86D80018. Depois de muito pesquisar e pouco encontrar sobre o […]
Go to Top