System Databases

System databases são bancos de dados utilizados pelo sistema do SQL Server e podem servir para ajudar na administração das instâncias, O SQL Server tem cinco system databases, abaixo segue a descrição de cada um deles.

MASTER – Registra as informações de sistema das instâncias do SQL Server

MSDB – o SQL Server Agent usa esse banco de dados para gerenciar os alertas, agendamento de jobs, implementação do database mail, manter histórico de backups e etc.

RESOURCE – Esse banco de dados é oculto e contem o código para implementar o sys schema que é usado nas informações de queries do sistema.

MODEL – Contem os templates para novos user-defined databases. Configure o model database para que ele tenha as opções e objetos que você deseja em todos os databases de usuário.

TEMPDB – É criado cada vez que o serviço do SQL Server for iniciado, usuários podem armazenar resultados temporários para uma sessão nesse banco de dados, e uma instancia pode também usar esse banco de dados para ajudar a gerenciar as suas implementações, desde um snapshot isolation transaction ou um sorting de dados.

Abraço, Rodrigo

Views que ajudam a criar baseline de permissões

Existem duas views que podem auxiliar na criação de uma baseline de permissões para um banco de dados no SQL Server, para isso basta consultar as views sys.database_permissions e sys.database_principal.

 

  • Sys.database_permissions: retorna uma linha para cada permissão ou column-exception no banco de dados. Para cadacoluna há uma linha para cada permissão que é diferente do correspondente no nível de permissão de objeto. Se a permissão da coluna é a mesma da permissão data ao objeto, não existirá linha para a atual permissão desse objeto.
  • Sys.database_principals: retorna uma linha para cada principal no banco de dados.

Varchar e NVarchar

Varchar é uma abreviação de variable-length caracter string, é uma string de caracteres que podem ser tão grande quanto uma página de dados da tabela. O tamanho para uma página é de 8.196 bytes essa é a limitação máxima de uma coluna varchar 8.000 bytes.

O nvarchar significa Unicode. Nvarchar é nada mais do que um varchar que suporta dois bytes de caracteres, o uso mais comum é armazenar dados que misturam os símbolos do idioma inglês e não inglês, como o caso do Japonês.

A diferença entre os dois tipos de dados é como eles irão ser armazenados, mas o nvarchar é armazenado em um UTF-16, ou seja, 16 bits ou dois bytes por caractere. Logo o nvarchar somente poderá ter 4000 caracteres.

Gargalos com a sys.dm_os_waiting_tasks

Essa view retorna informações da fila de espera de tarefas que estão aguardando recrusos. Veja mais.

Podemos utilizar esse recurso para detectar deadlock que não são encontrados através do deadlock monitor. Se a tarefa esta aguardando um recurso externo ela poderá estar bloqueando outras transações de rodarem.

Para descobrir quantas tarefas estão esperando.

select count(*) from sys.dm_os_waiting_tasks

 

Qual é a tarefa gargalo.

Select wait_type, count (*) from sys.dm_os_waiting_tasks group by wait_type order by count (*) desc

Descobrir se o problema de gargalo é I/O (neste caso o 20 indica o fator do IO, mudar conforme a necessidade)

select * from sys.dm_os_waiting_tasks where wait_duration_ms > 20 AND wait_type LIKE ‘%PAGEIOLATCH%’

Informações sobre objetos de usuários

O SQL Server nos disponibiliza algumas stored procedures de sistema para auxiliar a obter informações de stored procedures de usuários, views e outros objetos.

  • sp_helptext: exibe o texto da stored procedure, pode ser utilizado em outros objetos como views, triggers e user functions.
    • Exemplo:

sp_01

  • sp_depends: exibe as dependências da stored procedure, pode ser utilizado em outros objetos como views e user functions.
    • Exemplo:

sp_02

  • sp_help: exibe informações sobre a stored procedure, pode ser utilizado em outros objetos como views, tabelas e outros.
    • Exemplo

sp_03

Edições do SQL Server 2005

Antes de qualquer nova instalação de um servidor SQL Server 2005 deve-se analisar as versões o que cada uma das cinco edições nos oferece. Lembrando que cada edição é projetada para um ambiente especifico.

 

  • SQL Server 2005 Express Edition – Distribuído somente para 32 bit, é free e fácil de usar e pode ser distribuído para à clientes junto com aplicações. Normalmente utilizado com pequenos ambientes de dados.
  • SQL Server 2005 Workgroup Edition – Também é distribuído somente em 32 bit e é indicado para pequenas organizações que necessitam de um banco de dados que não restrinja o tamanho ou número de usuários; indicado para trabalhar como back end, pequenos servidores de aplicações web ou para operações departamentais.
  • SQL Server 2005 Standard Edition – Esta versão trabalha em 32 e 64 bit e inclui as funcionalidades essenciais necessárias para um e-commerce, data warehousing e line-of-business que deve atender a pequenas e médias organizações. Atende as necessidades de bancos de dados que contem uma grande quantidade de dados, mas não necessitam instalações com todas as funcionalidades do Enterprise Edition.
  • SQL Server 2005 Enterprise Edition – Distribuído em 32 e 64 bits é projetado para suportar ambientes com grande quantidade de transações, com analise de dados altamente complexas, sistemas de data warehousing.
  • SQL Server 2005 Developer Edition – Possuí todos os recursos da edição Enterprise, mas é licenciado somente para ambientes de teste e desenvolvimento, não pode ser utilizado em servidores de produção.
  • SQL Server 2005 Compact Edition – Oferece um banco de dados de pouca manutenção, incorporado e compacto para aplicativos cliente de usuário único para todas as plataformas Windows, incluindo Tablet PCs, Pocket PCs, Smart Phones e Desktops. Essa versão é uma boa solução para substituir os arquivos do Microsoft Access.