Condividi tramite


Cenni preliminari sugli script di database

Aggiornamento: novembre 2007

Gli script di database sono file aggiuntivi che contengono istruzioni T-SQL (Transact-SQL) o utilità come SQLCMD che non fanno parte della definizione dello schema di database. Gli script di database possono essere parte del processo di distribuzione (script pre-distribuzione e di post-distribuzione) oppure script di gestione generale archiviati nel progetto di database.

Come parte di un'operazione di refactoring del database in un oggetto dello schema, è possibile aggiornare automaticamente tutti gli script che contengono un oggetto di database rinominato.

La cartella Script supporta le azioni seguenti:

  • Aggiungi nuovo elemento

  • Aggiungi cartella

  • Aggiungi script

  • Escludi dal progetto

  • Azioni di controllo delle versioni (ad esempio archiviazione, estrazione e così via)

  • Taglia

  • Copia

  • Delete

  • Rename

  • Properties

Gli script contenuti nella cartella Script supportano le azioni seguenti:

  • Apri

  • Apri con

  • Escludi dal progetto

  • Azioni di controllo delle versioni (ad esempio archiviazione, estrazione e così via)

  • Taglia

  • Copia

  • Delete

  • Rename

  • Properties

Script di distribuzione

Quando si compila il progetto di database, lo script pre-distribuzione, le definizioni degli oggetti di database e lo script post-distribuzione vengono uniti in uno script di compilazione. È possibile specificare soltanto un unico script pre-distribuzione e un unico script post-distribuzione, ma è possibile includere altri script dall'interno degli script pre-distribuzione e di post-distribuzione. Se si utilizza SQLCMD, vengono inclusi script aggiuntivi. Vedere la sezione relativa più avanti in questo argomento. Quando si compila il progetto di database, tutti gli script inclusi vengono uniti nello script di compilazione.

Specificare uno script pre-distribuzione impostando la proprietà Operazione di generazione del file di script su PreDeploy. Analogamente, specificare uno script post-distribuzione impostando la proprietà Operazione di generazione del file di script su PostDeploy. Quando uno script viene designato come script pre-distribuzione o di post-distribuzione, se con questa azione di compilazione è stato in precedenza designato un altro script, per tale script l'azione di compilazione verrà automaticamente impostata su Non incluso nella compilazione. Questo comportamento è stato definito in fase di progettazione, perché per ogni progetto di database è possibile definire un unico script pre-distribuzione e un unico script post-distribuzione.

Quando si importa uno schema di database, la maggior parte delle informazioni dello schema vengono importate nelle definizioni degli oggetti di database all'interno del progetto di database. Alcune informazioni, ad esempio accessi, autorizzazioni, regole e valori predefiniti, sono invece importate in script aggiuntivi di pre-distribuzione o post-distribuzione. Quando si esegue questa operazione, vengono creati file aggiuntivi nelle sottocartelle Pre-distribuzione o Post-distribuzione all'interno della cartella Script del progetto di database. Questi file di script aggiuntivi sono inclusi negli script pre-distribuzione e di post-distribuzione, in base alle esigenze. Gli script inclusi dispongono di una proprietà Operazione di compilazione impostata su Non incluso nella compilazione poiché non sono direttamente inclusi nella compilazione. Vengono invece inclusi in modo indiretto tramite lo script pre-distribuzione o di post-distribuzione. Le eventuali istruzioni non riconosciute dello script vengono inserite nel file ScriptsIgnoredOnImport.sql all'interno della cartella Script.

Nota importante:

Se gli script di distribuzione fanno riferimento a oggetti di database i cui nomi o le cui caratteristiche vengono in seguito modificati, è necessario modificare manualmente gli script di distribuzione per evitare che la distribuzione abbia esito negativo. Se ad esempio vi sono regole o valori predefiniti associati a una tabella e tale tabella viene rinominata, lo script di distribuzione non verrà aggiornato e l'associazione avrà esito negativo a meno che non si modifichi lo script. Se la tabella viene rinominata utilizzando il refactoring di ridenominazione, lo script di distribuzione verrà aggiornato come parte dell'operazione di refactoring.

Importazione di schemi di database e script pre-distribuzione

Per impostazione predefinita, il file script.predeployment.sql è lo script pre-distribuzione primario, che viene creato automaticamente come file vuoto quando si crea un progetto di database. Quando si importa uno schema di database, è possibile che vengano creati automaticamente script aggiuntivi nella stessa cartella dello script pre-distribuzione. In questo caso, vengono aggiunte istruzioni al file script.predeployment.sql per includere gli script aggiuntivi. È possibile specificare un file diverso come script pre-distribuzione impostandone la proprietà Operazione di generazione su PreDeploy.

Nota:

È possibile disporre di un solo script pre-distribuzione con una proprietà Operazione di generazione impostata su PreDeploy. Per utilizzare più script nel processo di pre-distribuzione, è necessario designare uno script pre-distribuzione di primo livello che includa altri script pre-distribuzione tramite l'istruzione SQLCMD :r.\NomeFile.sql.

Nota importante:

È necessario modificare manualmente lo script pre-distribuzione per creare oggetti nei casi in cui non sia possibile importare informazioni sufficienti per ricrearli durante un'operazione di importazione dello schema. È ad esempio necessario modificare lo script per creare chiavi di crittografia e certificati.

Nella tabella seguente sono elencati i file di script generati quando si importa uno schema di database:

Nome file

Ordine inclusione

Notes

Logins.sql

Primo

Questo script contiene definizioni per tutti gli accessi di Microsoft SQL Server definiti nel database di origine. Gli accessi vengono inseriti negli script tramite CREATE LOGIN in Microsoft SQL Server 2005 e tramite sp_addlogin in SQL Server 2000.

LinkedServers.sql

Second

Questo script contiene istruzioni per creare server collegati. Per ulteriori informazioni, vedere "Collegamento di server" nel sito Web Microsoft. Quando si importa lo schema di database, viene aggiunta allo script un'istruzione sp_addlinkedserver per ogni server collegato nel database di origine.

CustomErrors.sql

Terzo

Questo script contiene messaggi di errore definiti dall'utente. Quando si importa lo schema di database, viene aggiunta allo script un'istruzione sp_addmessage per ogni messaggio di errore personalizzato definito nel database di origine.

EncryptionKeysAndCertificates.sql

Quarto

Questo script contiene segnaposto per ogni istruzione CREATE SYMMETRIC KEY, CREATE ASYMMETRIC KEY, CREATE MASTER KEY e CREATE CERTIFICATE nel database di origine.

Nota:

Questo script viene utilizzato esclusivamente in SQL Server 2005.

Importazione di schemi di database e script post-distribuzione

Per impostazione predefinita, il file script.postdeployment.sql è lo script post-distribuzione primario, che viene creato automaticamente come file vuoto quando si crea un progetto di database. Quando si importa uno schema di database, è possibile che vengano creati script aggiuntivi. In questo caso, vengono aggiunte istruzioni al file script.postdeployment.sql per includere gli script aggiuntivi. È possibile specificare un file diverso come script post-distribuzione impostandone la proprietà Operazione di generazione su PostDeploy.

Nota:

È possibile disporre di un solo script post-distribuzione con una proprietà Operazione di generazione impostata su PostDeploy. Per utilizzare più script nel processo di post-distribuzione, è necessario creare uno script post-distribuzione di primo livello che includa altri script post-distribuzione tramite l'istruzione SQLCMD :r.\NomeFile.sql.

Nota importante:

Potrebbe essere necessario modificare manualmente lo script post-distribuzione per creare o aggiornare oggetti nei casi in cui non sia possibile importare informazioni sufficienti per ricrearli o modificarli durante un'operazione di importazione dello schema. Un esempio potrebbe essere l'associazione di utenti a ruoli.

Nella tabella seguente sono elencati i file di script generati quando si importa uno schema di database:

Nome file

Ordine

Notes

Storage.sql

Primo

Questo script contiene le definizioni correlate a oggetti di archiviazione, ad esempio file e gruppi di file.

Permissions.sql

Second

Questo script contiene le eventuali autorizzazioni GRANT, REVOKE o DENY per il database di destinazione. Quando si importa uno schema di database, allo script Permissions.sql vengono aggiunte istruzioni per tutte le autorizzazioni specificate nel database di origine.

RoleMemberships.sql

Terzo

Questo script contiene tutte le istruzioni sp_addrolemember necessarie per associare gli utenti ai ruoli.

RulesAndDefaults.sql

Quarto

Questo script contiene istruzioni aggiuntive per la definizione delle regole e dei valori predefiniti del database di destinazione. Quando si importa uno schema di database, allo script RulesAndDefaults vengono aggiunte istruzioni aggiuntive per associare regole e valori predefiniti alle colonne o ai tipi di dati alias e per aggiungere account di protezione come membri di un ruolo di database SQL Server esistente nel database. Nella tabella seguente sono elencate le istruzioni che vengono aggiunte allo script.

DatabaseObjectOptions.sql

Quinto

Questo script contiene le opzioni che vengono applicate agli oggetti del database dopo la distribuzione.

Signatures.sql

Sesto

Questo script contiene tutte le definizioni delle firme per il database di destinazione. Quando si importa uno schema di database, allo script Signatures.sql vengono aggiunte istruzioni aggiuntive per ogni firma definita nel database di origine.

Nota   Questo script viene utilizzato esclusivamente in SQL Server 2005.

Ruoli, valori predefiniti e account di protezione vengono aggiunti tramite gli elementi seguenti:

Per

SQL Server 2005

SQL Server 2000

Associare una regola a una colonna o a un tipo di dati alias

ALTER TABLENomeTabellaADD CONSTRAINTNomeVincoloCHECK

sp_bindrule

Associare un valore predefinito a una colonna o a un tipo di dati alias

ALTER TABLENomeTabellaADD CONSTRAINTNomeVincoloDEFAULT

sp_binddefault

Aggiungere un account di protezione come membro di un ruolo di database SQL Server esistente

sp_addrolemember

sp_addrolemember

Script aggiuntivi

Oltre agli script di distribuzione, è possibile aggiungere altri script di tipo generico al progetto di database. È possibile aggiungere sottocartelle alla cartella Script nel progetto di database per agevolare l'organizzazione di questi script aggiuntivi. Quando si apre uno di questi script aggiuntivi nell'Editor T-SQL, è possibile connettersi al server database ed eseguire lo script in modo completo o parziale. Se ad esempio si dispone di script di controllo delle routine che vengono eseguiti, questo approccio è un modo pratico per conservare ogni script con il relativo database associato e per sottoporli allo stesso sistema di controllo delle versioni dello schema di database. La proprietà Operazione di compilazione di questi script è impostata su Non incluso nella compilazione.

Vedere anche

Attività

Procedura: specificare script pre-distribuzione o di post-distribuzione

Procedura: aggiungere script di gestione a un progetto di database

Concetti

Cenni preliminari sui processi di generazione e distribuzione di database

Panoramica sulla terminologia di Database Edition

Altre risorse

Gestione delle connessioni di database nell'editor T-SQL

Analisi ed esecuzione di script nell'editor T-SQL