Entendendo o Resource Database
Banco de dados de sistema que torna mais fácil e rápido a atualização do seu servidor de banco de dados para uma nova versão do SQL Server.
O banco de dados Resource foi introduzido com o SQL Server 2005. Esse banco de dados é usado para armazenar todas views e store procedures do sistema. Logicamente, cada banco de dados do SQL Server irá conter todos esses objetos do sistema, no entanto, eles fisicamente são armazenados no banco de dados Resource. O banco de dados Resource é somente leitura e não inclui quaisquer dados do usuário.
Nas versões anteriores do SQL Server, os objetos do sistema eram armazenados no banco de dados Master. A motivação para mover os objetos para um banco de dados separado é atualizar o SQL Server mais eficiente. Os aprimoramentos e correções para o sistema do SQL Server geralmente manifesta principalmente nos objetos do sistema. Um banco de dados separado para armazenar os objetos do sistema reduz o número de arquivos que precisam ser substituído por uma atualização.
Como falamos este banco de dados é ocultado, somente de leitura que contém todos os objetos de sistema incluídos no SQL Server 2005. O banco de dados Resource consiste além de definições de store procedures do sistema e views, também functions, assemblies. Os objetos do sistema são persistentes no banco de dados Resource, mas elas aparecem logicamente em cada banco de dados. Esses objetos do sistema estão presentes em um schema chamado Sys. Este banco de dados não poderá ser visualizado com os demais em seu servidor SQL ou quando você executa a visão de catálogo sys.databases. Os arquivos de banco de dados Resource são: mssqlsystemresource.mdf e mssqlsystemresource.ldf e estão presentes na mesma pasta em que residem os arquivos do banco de dados Master.
Importante: Não mova ou renomei os arquivos do banco de dados Resource ou senão o SQL Server não poderá ser iniciado. Além disso, não coloque o banco de dados Resource nas pastas de sistema de arquivos NTFS que sejam compactadas ou criptografadas. Isso retarda o desempenho e impede as atualizações.
Observe que o banco de dados Resource não contém qualquer dados ou metadados do usuário. As informações no nível do sistema para uma instância do SQL Server ainda é salva no banco de dados Master. Portanto, não é necessário fazer backup do banco de dados Resource (a menos que algumas alterações sejam feitas no banco de dados Resource para aplicar uma QFE - Quick Fix Engineering).
O banco de dados Resource faz a atualização para uma nova versão do SQL Server um procedimento fácil e rápido. Em versões anteriores, a atualização envolve exclusão e criação de objetos do sistema. Como o banco de dados Resource contém todos os objetos do sistema, uma atualização é obtida copiando o arquivo de banco de dados Resource para o servidor local. Esse método de cópia também significa que é necessário reverter o service pack aplicado sobre a versão atual do banco de dados Resource com a versão mais antiga identificada.Você pode acessar as propriedades do servidor para determinar a versão do banco de dados Resource e a data e hora em que o banco de dados Resource foi atualizado pela última vez, respectivamente ResourceVersion e ResourceLastUpdateDateTime:
Execute a seguinte instrução SQL, conforme demonstrado a seguir:
SELECT SERVERPROPERTY('ResourceVersion');
Execute a seguinte instrução SQL, conforme demonstrado a seguir:
SELECT SERVERPROPERTY('ResourceLastUpdateDateTime');
A única maneira para acessar o banco de dados Resource é iniciar o SQL Server no modo de administração single-user (usando o parâmetro de inicialização -m) e execute a instrução USE MSSQLSYSTEMRESOURCE. Para isso, devemos parar qualquer serviço que estiver executando no SQL Server.
No menu Start, selecione All Programs, Microsoft SQL Server 2005, Configuration Tools e escolha a ferramenta de configuração SQL Server Configuration Manager. Depois de todos os serviços interrompidos, a tela deve ficar assim.
Agora, podemos iniciar o SQL Server no modo de administração single-user. No menu Start, escolha Execute e digite cmd para podemos utilizar um prompt de comando. Vá para o diretório dos arquivos binários de seu SQL Server, o caminho padrão utilizado pela configuração do SQL Server é:
C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn
Neste diretório execute a seguinte instrução para que possamos iniciar o SQL Server.
C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn>sqlservr –m
Abra um outro prompt de comando deixando o anterior aberto. Digite sqlcmd –E para conectar-se ao SQL Server. Altere o contexto do banco de dados para o banco de dados Resource através da instrução USE MSSQLSYSTEMRESOURCE, você pode, agora, diretamente consultar tabelas base do sistema, como Master.sys.sysdbreg, no banco de dados Master ou a tabela do sistema Sys.sysidxstats em qualquer banco de dados do usuário.
Observe que essas tabelas do sistema são não aquelas disponíveis nas versões anteriores. As tabelas do sistema de versões anteriores foram substituídas por visões. Essas tabelas base do sistema são usadas pelo mecanismo de banco de dados do SQL Server 2005 e pela equipe Microsoft durante o processo de solução de problemas.
Importante: Quando DBCC CHECKDB é executado em relação ao banco de dados Master, um segundo CHECKDB também é dirigido internamente no banco de dados Resource. Isto significa que executando DBCC CHECKDB no banco de dados Master pode devolver resultados extras.
O comando retorna este tipo de resultado extra quando as opções estão definidas ou quando a opção somente PHYSICAL ou ESTIMATE está configurada.