Condividi tramite


Informazioni di riferimento sulla riga di comando per VSDBCMD.EXE (distribuzione e importazione dello schema)

È possibile utilizzare VSDBCMD.EXE in:

  • Importare uno schema del database da un database attivo in un file .dbschema

  • Generare uno script di distribuzione da un file .dbschema

  • Generare uno script di distribuzione da un file .dbschema e distribuire tale script a un database di destinazione

  • Genera uno script di distribuzione confrontando due file con estensione dbschema.

Inoltre, è possibile specificare opzioni per personalizzare come il database viene distribuito o viene importato.

Per ulteriori informazioni su come utilizzare questo strumento, vedere Procedura: preparare un database per la distribuzione da un prompt dei comandi tramite VSDBCMD.EXE e Procedura: importare uno schema da un prompt dei comandi.

Nota importanteImportante

Non è possibile utilizzare VSDBCMD.EXE per distribuire un progetto di componente applicazione livello dati (DAC) o importare uno schema in un progetto DAC.

Opzioni generali

Le opzioni nella tabella seguente si applicano alle azioni Deploy e Import.

Opzione

Forma breve

Obbligatorio?

Note

/Action:{Import|Deploy}

/a:{Import|Deploy}

Sì

Specifica se si desidera importare oggetti e impostazioni in un file .dbschema o distribuire un file .dbschema a un server o un database di destinazione.

/ConnectionString:"Stringa"

/cs:"Stringa"

No

Specifica la stringa di connessione al database di destinazione. Ad esempio, è possibile specificare /cs:"Data Source=MyDatabase/SQL2K8;Integrated Security=True;Pooling=False;Initial Catalog=AdventureWorks2008". Per importare uno schema, è necessario specificare il nome del database tramite Initial Catalog. Per ulteriori informazioni sulla sintassi di una stringa di collegamento, vedere Sintassi della stringa di connessione (ADO.NET).

/DatabaseSchemaProvider:DspName

/dsp:DspName

Sì

Specifica il tipo del provider dello schema di database al quale si è connessi. Utilizzare ad esempio /dsp:SQL per SQL Server.

@File

Non disponibile

No

È possibile specificare un file di risposta contenente almeno un'opzione di comando per riga.

/Quiet[+|-]

/q

No

Specifica se si desidera eliminare feedback dettagliato da VSDBCMD.

/DeployToDatabase[+|-]

/dd

No

Specifica che si desidera generare uno script di distribuzione e distribuirlo al database di destinazione. Se non si specifica questa opzione, si genera uno script di distribuzione, ma quello script non viene distribuito.

/ModelFile:FileName

/modello:FileName

No

Specifica il nome del file dbschema che si desidera distribuire o creare quando si importa uno schema. L'operazione non è richiesta se si specifica un manifesto della distribuzione.

/Proprietà:PropertyName=PropertyValue

/p:PropertyName=PropertyValue

No

Specifica un nome della proprietà e un valore del quale è possibile eseguire l'override a un prompt dei comandi. Vedere Opzioni di distribuzione e Opzioni di importazione per proprietà che sono specifiche di tali azioni.

Opzioni di distribuzione

Le opzioni nella tabella seguente si applicano solo quando si distribuisce un file .dbschema.

Opzione

Forma breve

Obbligatorio?

Note

/ManifestFile:FileName

/manifesto:FileName

No

Specifica il file del manifesto della distribuzione da utilizzare quando si distribuisce il database. Il manifesto della distribuzione viene creato nel percorso dell'output di compilazione quando si compila il progetto di database.

NotaNota
La distribuzione non riuscirà se il file manifesto di distribuzione fa riferimento a un file di script di output che già esiste ed è in sola lettura.

/DeploymentScriptFile:FileName

/script:FileName

No

Consente di specificare il nome che si desidera dare allo script di distribuzione.

/ExtensionArguments

/ext:Stringa

No

Specifica coppie nome/valore per parametri passati ai collaboratori personalizzati di distribuzione.

/TargetModelFile: NomeFile

/targetmodel: NomeFile

No

Specifica un file con estensione dbschema di destinazione che si desidera confrontare con il file con estensione dbschema di origine. Utilizzare questa opzione quando si desidera generare uno script di distribuzione confrontando due file con estensione dbschema. Per ulteriori informazioni, vedere Confrontare gli schemi mediante VSDBCMD.EXE.

Nota

Quando si crea uno script incrementale di distribuzione, i nomi dei database di origine e di destinazione devono corrispondere.

Override di variabili SQLCMD singole sulla riga di Comando

È possibile utilizzare la sintassi seguente per eseguire l'override del valore per una sola variabile SQLCMD:

/p: SqlCmdVariableName = Valore

Se si specifica un nome della variabile che non è stata dichiarata nel file .sqlcmdvars, si verificherà un errore.

È possibile specificare variabili SQLCMD a tre punti, applicate nell'ordine seguente:

  1. In fase di progettazione, in Database.sqlcmdvars a cui punta il .manifesto di distribuzione

  2. Sulla riga di comando specificando /p:SqlCommandVariablesFile=percorso file

  3. Sulla riga di comando specificando un nome della variabile specifico e un valore

Il secondo metodo esegue l'override del primo e il terzo esegue l'override del secondo e del primo.

Proprietà di distribuzione comuni

È possibile specificare le proprietà nella tabella seguente quando si distribuisce un file .dbschema a un prompt dei comandi.

Opzione

Valore predefinito

Note

/p:AbortOnFirstError={True|False}

True

Consente di specificare se la distribuzione deve essere annullata quando si verifica il primo errore.

/p:AlwaysCreateNewDatabase={True|False}

False

Specifica se il database deve essere aggiornato o eliminato e ricreato quando si distribuiscono modifiche.

/p:AnsiNulls={True|False}

Imposta come predefinito il valore di questa impostazione nel modello di origine

Specifica l'impostazione di connessione ANSI_NULLS. Questa impostazione esegue l'override del valore nel modello

/p:AnsiPadding={True|False}

Imposta come predefinito il valore di questa impostazione nel modello di origine

Specifica l'impostazione di connessione ANSI_PADDING. Questa impostazione esegue l'override del valore nel modello.

/p:AnsiWarnings={True|False}

Imposta come predefinito il valore di questa impostazione nel modello di origine

Specifica l'impostazione di connessione ANSI_WARNINGS. Questa impostazione esegue l'override del valore nel modello.

/p:ArithAbort={True|False}

Imposta come predefinito il valore di questa impostazione nel modello di origine

Specifica l'impostazione di connessione ARITH_ABORT. Questa impostazione esegue l'override del valore nel modello.

/p:BlockIncrementalDeploymentIfDataLoss={True|False}

True

Specifica se si desidera interrompere la distribuzione qualora si verifichi la perdita di dati.

/p:CheckNewConstraints={True|False}

True

Specifica se l'opzione NOCHECK dei vincoli creati o ricreati sarà attivata per impostazione predefinita. Alla fine dello script di distribuzione, sarà aggiunto un blocco di istruzioni che consentirà di controllare tutti i vincoli come set. Impostando questa proprietà su True, è possibile distribuire lo schema senza incontrare errori di dati causati da un controllo o un vincolo della chiave esterna nel centro del processo di distribuzione rinviando il controllo dei dati alla fine dello script di distribuzione.

/p:CollationPreference={UseSourceModelCollation | UseTargetModelCollation }

UseSourceModelCollation

Specifica le regole di confronto utilizzate in caso di confronto dei modelli di origine e di destinazione.

/p:CommentOutSetVarDeclarations={True|False}

False

Specifica se si desiderano commentare nello script di distribuzione le istruzioni SETVAR che specificano valori per le variabili. È possibile impostare questa proprietà su True se si desidera utilizzare SQLCMD per distribuire lo script e specificare valori per tali variabili nel prompt dei comandi.

/p:ConcatNullYieldsNull={True|False}

Imposta come predefinito il valore di questa impostazione nel modello di origine

Specifica l'impostazione di connessione CONCAT_NULL_YIELDS_NULL. Questa impostazione esegue l'override del valore nel modello.

/p:DeployDatabaseProperties={True|False}

True

Specifica se le proprietà del database devono essere impostate o aggiornate come parte dello script di distribuzione.

/p:DeploymentCollationPreference={UseSourceModelCollation|UseTargetModelCollation|DontChangeCollations}

DontChangeCollations

Questa impostazione detta la modalità di gestione delle regole di confronto del database durante la distribuzione. Sono disponibili tre possibili valori: UseSourceModelCollation indica che il confronto del database di destinazione sarà aggiornato se non corrisponde alle regole di confronto specificate dal database di origine. UseTargetModelCollation indica che devono essere utilizzate le regole di confronto del database (o server) di destinazione. DontChangeCollations indica che le regole di confronto del server non devono essere modificate.

/p:DeploymentConfigurationFile=fileName

File .sqldeployment specificato nel file .deploymanifest.

Specifica il file sqldeployment che si desidera utilizzare per la distribuzione.

/p:DisableAndReenableDdlTriggers={Vero | Falso}

True

Consente di specificare se i trigger Data Definition Language (DDL) vengono disabilitati all'inizio del processo di distribuzione e riabilitati alla fine di tale processo.

/p:DoNotUseAlterAssemblyStatementsToUpdateCLRTypes={Vero | Falso}

False

Specifica che la distribuzione deve sempre rilasciare e ricreare un assembly se vi è una differenza anziché l'emissione di un'istruzione ALTER ASSEMBLY.

/p:DropConstraintsNotInSource={True|False}

True

Consente di specificare se i vincoli che non sono presenti nel progetto di database saranno eliminati dal database di destinazione quando si distribuiscono gli aggiornamenti in tale database.

/p:DropIndexesNotInSource={True|False}

True

Specifica se gli indici che non esistono nel progetto database vengono eliminati database di destinazione quando si distribuiscono aggiornamenti a tale database.

/p:EnforceMinimalDependencies={True|False}

False

Consente di specificare se i corpi di procedure, funzioni scalari e funzioni con valori di tabella vengono analizzati e interpretati. Se si abilita questa impostazione, le dipendenze all'interno dei corpi non vengono identificate, mentre saranno identificate le modifiche apportate alla definizione dell'oggetto. Impostando questa opzione su True, è possibile migliorare le prestazioni, tuttavia le dipendenze perse potrebbero provocare problemi durante la distribuzione.

/p:GenerateDatabaseOptions={True|False}

True

Specifica se lo script di distribuzione deve contenere istruzioni che impostano le opzioni del database quando si distribuisce il database.

/p:GenerateDeployStateChecks={True|False}

True

Specifica se si desidera che lo script di distribuzione contenga istruzioni che verificano lo stato del database di destinazione prima di distribuire lo schema del database.

/p:GenerateDropsIfNotInProject={True|False}

False

Specifica se è necessario eliminare gli oggetti nel database di destinazione che non esistono nel progetto di origine quando si distribuiscono aggiornamenti a quel database.

/p:IgnoreAnsiNulls={True|False}

False

Consente di specificare se le differenze nell'impostazione Null ANSI devono essere ignorate o aggiornate quando si distribuiscono gli aggiornamenti in un database.

/p:IgnoreAuthorizer={True|False}

False

Consente di specificare se le differenze nel provider di autorizzazioni devono essere ignorate o aggiornate quando si distribuiscono gli aggiornamenti in un database.

/p:IgnoreColumnCollation={True|False}

False

Consente di specificare se le differenze nelle regole di confronto colonna devono essere ignorate o aggiornate quando si distribuiscono gli aggiornamenti in un database.

/p:IgnoreComments={True|False}

False

Consente di specificare se le differenze nei commenti devono essere ignorate o aggiornate quando si distribuiscono gli aggiornamenti in un database.

/p:IgnoreCryptographicProviderFilePath={True|False}

False

Consente di specificare se le differenze nel percorso file del provider del servizio di crittografia devono essere ignorate o aggiornate quando si distribuiscono gli aggiornamenti in un database.

/p:IgnoreDdlTriggerState={True|False}

False

Consente di specificare se le differenze nello stato abilitato o disabilitato dei trigger Data Definition Language (DDL) devono essere ignorate o aggiornate quando si distribuiscono gli aggiornamenti in un database.

/p:IgnoreDefaultSchema={True|False}

False

Consente di specificare se le differenze nello schema predefinito devono essere ignorate o aggiornate quando si distribuiscono gli aggiornamenti in un database.

/p:IgnoreDmlTriggerOrder={True|False}

False

Consente di specificare se le differenze nell'ordine dei trigger Data Manipulation Language (DML) devono essere ignorate o aggiornate quando si distribuiscono gli aggiornamenti in un database.

/p:IgnoreDmlTriggerState={True|False}

False

Consente di specificare se le differenze nello stato abilitato o disabilitato dei trigger DML devono essere ignorate o aggiornate quando si distribuiscono gli aggiornamenti in un database.

/p:IgnoreExtendedProperties={True|False}

False

Consente di specificare se le differenze nelle proprietà estese devono essere ignorate o aggiornate quando si distribuiscono gli aggiornamenti in un database.

/p:IgnoreFilegroupPlacement={True|False}

True

Consente di specificare se le differenze nella posizione degli oggetti nei gruppi di file devono essere ignorate o aggiornate quando si distribuiscono gli aggiornamenti in un database.

/p:IgnoreFillFactor={True|False}

True

Consente di specificare se le differenze nel fattore di riempimento per l'archiviazione degli indici devono essere ignorate o se deve essere inviato un avviso quando si distribuiscono gli aggiornamenti in un database.

/p:IgnoreIdentitySeed={True|False}

False

Consente di specificare se le differenze nel valore di inizializzazione per una colonna di identità devono essere ignorate o aggiornate quando si distribuiscono gli aggiornamenti in un database.

/p:IgnoreIncrement={True|False}

False

Consente di specificare se le differenze nell'incremento per una colonna di identità devono essere ignorate o aggiornate quando si distribuiscono gli aggiornamenti in un database.

/p:IgnoreIndexOptions={True|False}

False

Consente di specificare se le differenze nelle opzioni di indice devono essere ignorate o aggiornate quando si distribuiscono gli aggiornamenti in un database.

/p:IgnoreIndexPadding={True|False}

True

Consente di specificare se le differenze nella spaziatura indice devono essere ignorate o aggiornate quando si distribuiscono gli aggiornamenti in un database.

/p:IgnoreKeywordCasing={True|False}

True

Consente di specificare se le differenze nelle maiuscole e nelle minuscole delle parole chiave devono essere ignorate o aggiornate quando si distribuiscono gli aggiornamenti in un database.

/p:IgnoreLockHintsOnIndexes={True|False}

False

Consente di specificare se le differenze negli hint di blocco negli indici devono essere ignorate o aggiornate quando si distribuiscono gli aggiornamenti in un database.

/p:IgnoreLoginSids={True|False}

False

Consente di specificare se le differenze nell'ID di sicurezza (SID) devono essere ignorate o aggiornate quando si distribuiscono gli aggiornamenti in un database.

/p:IgnoreObjectPlacementOnPartitionSchema={True|False}

True

Consente di specificare se le differenze nel mapping delle partizioni per una tabella o un indice partizionato a gruppi di file devono essere ignorate o aggiornate quando si distribuiscono gli aggiornamenti in un database.

/p:IgnorePermissions={True|False}

False

Consente di specificare se le differenze nelle autorizzazioni devono essere ignorate o aggiornate quando si distribuiscono gli aggiornamenti in un database.

/p:IgnoreQuotedIdentifiers={True|False}

False

Consente di specificare se le differenze nell'impostazione degli identificatori delimitati devono essere ignorate o aggiornate quando si distribuiscono le modifiche in un database.

/p:IgnoreRoleMembership={True|False}

False

Consente di specificare se le differenze nelle appartenenze al ruolo degli accessi devono essere ignorate o aggiornate quando si distribuiscono gli aggiornamenti in un database.

/p:IgnoreRouteLifetime={True|False}

True

Consente di specificare se le differenze nel tempo in cui SQL Server conserva la route nella tabella di routing da parte di SQL Server devono essere ignorate o aggiornate quando si distribuiscono gli aggiornamenti in un database.

/p:IgnoreSemicolonBetweenStatements={True|False}

True

Consente di specificare se le differenze nei punti e virgola tra le istruzioni Transact-SQL devono essere ignorate o aggiornate quando si distribuiscono gli aggiornamenti in un database.

/p:IgnoreStatisticsSample={True|False}

True

Consente di specificare se le differenze nell'esempio utilizzato per CREATE STATISTICS saranno ignorate o aggiornate quando si distribuiscono gli aggiornamenti in un database.

/p:IgnoreTableOptions={True|False}

False

Consente di specificare se le differenze nelle opzioni di tabella saranno ignorate o aggiornate quando si distribuiscono gli aggiornamenti in un database.

/p:IgnoreUserSettingsObjects={True|False}

False

Consente di specificare se le differenze negli oggetti impostazioni utente saranno ignorate o aggiornate quando si distribuiscono gli aggiornamenti in un database.

/p:IgnoreWhitespace={True|False}

True

Consente di specificare se le differenze nello spazio vuoto saranno ignorate o aggiornate quando si distribuiscono gli aggiornamenti in un database.

/p:IgnoreWithNocheckOnCheckConstraints={True|False}

False

Consente di specificare se le differenze nel valore della clausola WITH NOCHECK per i vincoli CHECK saranno ignorate o aggiornate quando si distribuiscono gli aggiornamenti in un database.

/p:IgnoreWithNocheckOnForeignKeys={True|False}

False

Consente di specificare se le differenze nel valore della clausola WITH NOCHECK per le chiavi esterne saranno ignorate o aggiornate quando si distribuiscono gli aggiornamenti in un database.

/p:IncludeTransactionalScripts={True|False}

False

Consente di specificare se le istruzioni transazionali devono essere utilizzate dove possibile quando si esegue la distribuzione in un database.

/p:NumericRoundAbort={True|False}

Imposta come predefinito il valore di questa impostazione nel modello di origine

Specifica l'impostazione di connessione NUMERIC_ROUNDABORT. Questa impostazione esegue l'override del valore nel modello.

/p:PerformDatabaseBackup={True|False}

False

Specifica se del database di destinazione deve essere eseguito il backup prima di qualsiasi modifica.

/p:QuotedIdentifier={True|False}

Imposta come predefinito il valore di questa impostazione nel modello di origine

Specifica l'impostazione di connessione dell'IDENTIFICATORE DELIMITATO. Questa impostazione esegue l'override del valore nel modello.

/p:SingleUserMode={True|False}

False

Specifica se è necessario attivare la modalità utente singolo per il database durante gli aggiornamenti.

/p:SqlCommandVariablesFile=FileName

File .sqlcmdvars specificato nel file .deploymanifest.

Specifica il file sqlcmdvars che si desidera utilizzare per la distribuzione.

/p:TargetDatabase="Stringa"

Non disponibile

Specifica il nome del database in cui si desidera distribuire.

/p:TreatVerificationErrorsAsWarnings={True|False}

False

Consente di specificare se gli errori rilevati durante la verifica della distribuzione devono essere trattati come avvisi. Il controllo viene effettuato sul piano di distribuzione generato prima che quest'ultimo venga eseguito sul database di destinazione. La verifica del piano consente di rilevare problemi quali la perdita di oggetti di sola destinazione, ad esempio gli indici, che devono essere eliminati per apportare una modifica. La verifica consentirà di rilevare anche le situazioni in cui dipendenze, quali una tabella o una visualizzazione, sono presenti a causa di un riferimento a un progetto composto, ma non esistono nel database di destinazione. È possibile scegliere di effettuare questo controllo per ottenere un elenco completo di tutti i problemi di distribuzione, anziché incorrere nell'interruzione della distribuzione al primo errore.

/p:UnmodifiableObjectWarnings={True|False}

True

Consente di specificare se devono essere generati avvisi quando vengono rilevate differenze negli oggetti che non possono essere modificati, ad esempio se le dimensioni o i percorsi dei file risultano differenti.

/p:VerifyDeployment={True|False}

True

Consente di specificare se prima della distribuzione devono essere effettuati i controlli che permettono di arrestare la distribuzione qualora vengano rilevati problemi che potrebbero bloccare l'esecuzione della distribuzione. Ad esempio la distribuzione potrebbe essere arrestata se le chiavi esterne presenti nel database di destinazione non esistono nel progetto di database, situazione che genera errori durante la distribuzione.

È possibile visualizzare un elenco completo di proprietà di distribuzione digitando il comando seguente in un prompt dei comandi:

VSDBCMD /? /a:Deploy /dsp:sql /cs:" ConnectionString "

Proprietà di importazione comuni

Le proprietà nella tabella seguente si applicano solo quando si importano oggetti e impostazioni in un file .dbschema.

Opzione

Default

Note

/p:IgnoreExtendedProperties={True|False}

False

Specifica se le proprietà estese devono essere ignorate o importate.

/p:IgnorePermissions={True|False}

False

Specifica se le autorizzazioni devono essere ignorate o importate.

NotaNota
Il valore predefinito di questa impostazione differisce dall'impostazione predefinita quando si esegue l'importazione tramite la procedura guidata di importazione degli schemi.

È possibile visualizzare un elenco completo di proprietà di importazione digitando il comando seguente in un prompt dei comandi:

VSDBCMD /? /a:Import /dsp:sql /cs:" ConnectionString "

Esempi di righe di comando da distribuire a più ambienti

È possibile utilizzare VSDBCMD per distribuire un file .dbschema in più ambienti di destinazione. In questo esempio, EnterpriseDB.dbschema viene distribuito in ambienti di sviluppo, test e produzione.

Ambiente di sviluppo

"%programfiles%\Microsoft Visual Studio 10.0\vstsdb\deploy\vsdbcmd" 
/a:Deploy 
/manifest:EnterpriseDB.deploymanifest 
/p:DeploymentConfigurationFile=Development.sqldeployment 
/p:SqlCommandVariablesFile=Development.sqlcmdvars 
/cs:"Data Source=DEV\sql2008;Integrated Security=true"

Ambiente di test

"%programfiles%\Microsoft Visual Studio 10.0\vstsdb\deploy\vsdbcmd" 
/a:Deploy 
/manifest:EnterpriseDB.deploymanifest 
/p:DeploymentConfigurationFile=UserTest.sqldeployment 
/p:SqlCommandVariablesFile=UserTest.sqlcmdvars 
/cs:"Data Source=USERTEST\sql2008;Integrated Security=true"

Ambiente di produzione

"%programfiles%\Microsoft Visual Studio 10.0\vstsdb\deploy\vsdbcmd" 
/a:Deploy 
/manifest:EnterpriseDB.deploymanifest 
/p:DeploymentConfigurationFile=Production.sqldeployment 
/p:SqlCommandVariablesFile=Production.sqlcmdvars 
/cs:"Data Source=PRODUCTION\sql2008;Integrated Security=true"

Per ogni ambiente, si forniscono la configurazione di distribuzione, il file delle variabili SQLCMD e la stringa di connessione che sono specifiche dell'ambiente di destinazione.

Tutti gli ambienti condividono il manifesto della distribuzione. Il manifesto della distribuzione include il nome del file .dbschema che si desidera distribuire.

Vedere anche

Attività

Procedura: preparare un database per la distribuzione da un prompt dei comandi tramite VSDBCMD.EXE

Concetti

Compilazione e distribuzione di database in un ambiente di produzione o gestione temporanea

Panoramica delle impostazioni del progetto di database

Cronologia delle modifiche

Data

Cronologia

Motivo

Luglio 2010

È stato aggiunto un esempio di una stringa di connessione. È stata aggiunta una descrizione di /targetmodelfile.

Commenti e suggerimenti dei clienti.

Aprile 2011

È stato corretto il nome di BlockIncrementalDeploymentIfDataLoss e aggiunta una nota sulla creazione degli script di distribuzione incrementali.

Commenti e suggerimenti dei clienti.