Cos'è il database delle risorse?
Il database delle risorse, noto anche come resource DB o RDB, è un database nascosto e di sola lettura in SQL Server. Microsoft SQL Server è un sistema di gestione di database relazionali (RDBMS) creato e commercializzato da Microsoft. Come altri software di database relazionali, SQL Server supporta il linguaggio di query strutturato (SQL) per lavorare con i database relazionali. Lo strumento di interfaccia principale per SQL Server è SQL Server Management Studio (SSMS), che funziona sia su sistemi a 32 bit che a 64 bit.
Molti utenti di SQL Server associano i database di sistema a quattro database:
- Database master: Il database master contiene tutte le informazioni a livello di sistema per un'istanza di SQL Server.
- Database modello: Il database modello è utilizzato dall'agente SQL Server per programmare avvisi e lavori.
- Database MSDB: Questo database funge da modello per tutti i database creati sull'istanza di SQL Server. Qualsiasi modifica apportata al database modello, come la dimensione del database, il modello di recupero e altre impostazioni del database, viene applicata ai database successivi.
- Database TEMPDB: Il database tempdb funge da spazio di lavoro che memorizza elementi temporanei o set di risultati intermedi.
Il database delle risorse è il quinto database. Integra il database master perché SQL Server ora si basa su di esso. Contiene tutti gli oggetti di sistema inclusi con SQL Server 2005 e versioni successive. Gli oggetti di sistema come sys.objects sono fisicamente memorizzati nel database delle risorse, ma esistono anche logicamente nello schema sys di ogni database.
Il database delle risorse può contenere solo oggetti di sistema e non può memorizzare dati o metadati utente. Le procedure memorizzate, le viste del catalogo e le procedure estese sono esempi di codice T-SQL di sistema pre-creato memorizzato nel database delle risorse.
Il nome effettivo del database delle risorse è mssqlsystemresource. Il database delle risorse ha un file di dati e un file di log denominati mssqlsystemresource.mdf e mssqlsystemresource.ldf, rispettivamente, e si trovano, per impostazione predefinita, in <lettera dell'unità>:\Program Files\Microsoft SQL Server\MSSQL<numero di versione>.<nome_istanza>\MSSQL\Binn\.
Il database delle risorse semplifica e accelera il processo di aggiornamento a una nuova versione di SQL Server. In precedenza, l'aggiornamento di SQL Server comportava la rimozione e la ricreazione degli oggetti di sistema. Poiché il file del database delle risorse contiene tutti gli oggetti di sistema, gli amministratori possono eseguire un aggiornamento semplicemente trasferendo i file del database delle risorse (mssqlsystemresource.mdf e mssqlsystemresource.ldf) al server locale.
Perché il database delle risorse è importante?
L'obiettivo principale di un database delle risorse è rendere gli aggiornamenti al server il più rapidamente ed efficientemente possibile. Poiché tutti gli oggetti di sistema sono presenti nel database delle risorse, gli amministratori di database (DBA) possono sovrascrivere i file del database delle risorse precedenti con i nuovi file del database delle risorse durante l'aggiornamento.
Questa azione aggiornerà tutti gli oggetti di sistema nel database. Nelle versioni precedenti di SQL Server, tutti gli oggetti di sistema dovevano essere eliminati e ricreati durante il processo di aggiornamento, il che richiedeva tempo. Inoltre, l'installazione falliva se uno degli oggetti mancava o causava un problema.
Migliori pratiche per il database delle risorse
Non esisteva un database delle risorse in SQL Server 2000 e versioni precedenti. È stato introdotto per la prima volta in SQL Server 2005, rendendo gli aggiornamenti più accessibili e veloci. Ogni istanza di SQL Server in un database ha un ID. Il numero massimo di database che possono essere memorizzati in una singola istanza è 32767. Questo è anche l'ID del database delle risorse, ed è lo stesso per ogni database delle risorse in ogni istanza. Di conseguenza, al database delle risorse viene assegnato l'ID massimo possibile del database dell'istanza.
Molte persone non sono a conoscenza dell'esistenza del database delle risorse a causa del suo stato nascosto. Alcuni DBA credono che, poiché questo è un database, richieda lo stesso livello di manutenzione di un database tradizionale, il che non è del tutto corretto. Questo può portare a più problemi in futuro.
Ecco alcune migliori pratiche da seguire quando si lavora con un database delle risorse:
- Evitare di spostare i file del database delle risorse. Sebbene esistano procedure speciali per trasferire i file di altri database di sistema, cambiare la posizione del file del database delle risorse non è né accettato né consigliato. L'aggiornamento di SQL Server può comportare l'installazione di un nuovo database delle risorse, che memorizza permanentemente i suoi file in questa posizione fissa.
- Essere coerenti con i backup per ripristinare il database delle risorse. Il database delle risorse non può essere sottoposto a backup o ripristinato utilizzando le procedure di backup e ripristino tipiche utilizzate per altri database in SQL Server poiché non è accessibile utilizzando gli strumenti di SQL Server. Anche se l'estensione del file di dati del database delle risorse è .mdf, può essere trattato come un file .exe. Gli amministratori possono utilizzare questo metodo per creare un backup basato su file o su disco.
- Applicare il service pack a più istanze utilizzando il database delle risorse. Il DBA deve copiare i file mssqlsystemresource.mdf e mssqlsystemresource.ldf nell'istanza di destinazione per amministrare un service pack a più istanze.
- Utilizzare il database delle risorse per annullare le modifiche. Se un DBA ha bisogno di annullare le modifiche apportate dai service pack, gli amministratori devono sostituire i file .mdf e .ldf con quelli di una versione precedentemente sottoposta a backup.

Keerthi Rangan
Keerthi Rangan is a Senior SEO Specialist with a sharp focus on the IT management software market. Formerly a Content Marketing Specialist at G2, Keerthi crafts content that not only simplifies complex IT concepts but also guides organizations toward transformative software solutions. With a background in Python development, she brings a unique blend of technical expertise and strategic insight to her work. Her interests span network automation, blockchain, infrastructure as code (IaC), SaaS, and beyond—always exploring how technology reshapes businesses and how people work. Keerthi’s approach is thoughtful and driven by a quiet curiosity, always seeking the deeper connections between technology, strategy, and growth.
