2013-03-26 14 views
17

Sto provando a generare uno script di tutti i dati in un database in modo da poter spostare solo i dati su un database identico su un altro server. In SQL Server 2012 mi fate clic destro sul database di origineGenera script - Solo dati - Errore trovato dalle dipendenze cicliche

le attività> generare script> Script intero database e tutti gli oggetti di database> Avanzate> Tipi di dati di script: dati solo

Questo mi dà un errore qualcosa su una dipendenza ciclica. Se cambio il tipo di dati da script in schema E dati, esso genera una multa. Come posso risolvere questo problema per funzionare solo con i dati?

Azione Risultato Ottenere un elenco di oggetti da MyDatabase non riuscita

Rapporto dettagliato:

Microsoft.SqlServer.Management.SqlScriptPublish.SqlScriptPublishException: Si è verificato un errore durante scripting gli oggetti. ---> Microsoft.SqlServer.Management.Smo.SmoException: trovate le dipendenze cicliche . a Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.DependencyGraphTraversal (Int32 num, dizionario 2 dictionary, List 1 SortedList, HashSet 1 visited, HashSet 1 corrente) a Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.DependencyGraphTraversal (Int32 num, dizionario 2 dictionary, List 1 SortedList , HashSet 1 visited, HashSet 1 corrente) a Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.DependencyGraphTraversal (Int32 num, dizionario 2 dictionary, List 1 SortedList, HashSet 1 visited, HashSet 1 corrente) a Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.DependencyGraphTraversal (Int32 num, Dizionario 2 dictionary, List 1 SortList, HashSet 1 visited, HashSet 1 corrente) a Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.SortDictionary (Dizionario ObjectList, dizionario ObjectList, Elenco urne) a Microsoft.SqlServer.Management.Smo.ScriptMaker.DiscoverOrderScript (IEnumerable urne, ISmoScriptWriter scrittore) a Microsoft.SqlServer.Management.Smo.ScriptMaker.Script (Urna [] urne, ISmoScriptWriter scrittore) a Microsoft.SqlServer.Management.SqlScriptPublish.SqlScriptGenerator.DoScript (ScriptOutputOptions outputOptions) --- Fine della traccia dello stack delle eccezioni interne --- a M icrosoft.SqlServer.Management.SqlScriptPublish.GeneratePublishPage.worker_DoWork (Object sender , DoWorkEventArgs e) a System.ComponentModel.BackgroundWorker.OnDoWork (DoWorkEventArgs e) a System.ComponentModel.BackgroundWorker.WorkerThreadStart (Object argomento)

risposta

8

ho avuto questo stesso errore esatto ... Vedere la mia risposta qui: http://mattslay.com/ssms-generate-scripts-data-only-cyclic-dependencies-found-error/

Poi, per un capriccio, sapendo che avevo sceneggiato con successo questo database prima, ho collegato alla istanza di SQL Server 2012 utilizzando SQL Server Gestione 2008 R2, e io ero in grado di generare gli script senza errori !!

Nota: ho eseguito solo i dati e ho dovuto consentirgli di scrivere script su tutti gli oggetti del database. Ho provato a selezionare solo alcuni tavoli, ma questo ha dato altri errori che non ero disposto a rintracciare, quindi ho appena fatto il tutto.

+0

collegamento di riferimento è morto - (qualsiasi possibilità della soluzione? – trailmax

+0

Il collegamento funziona. Ho appena controllato. – MattSlay

+0

Controllare il collegamento nel post del blog http://blogs.msdn.com/b/sqlazure/archive/2010 /07/01/10033575.aspx Sembra che questo sia il trailmax. –

3

Ho avuto lo stesso problema e non ho installato SSMS 2008 R2 per fare ciò che suggeriva Matt. Quindi quello che ho fatto è stato modificare le impostazioni avanzate per far sì che crei lo schema e i dati, e anche impostarlo per verificare se gli oggetti esistono già. Ho impostato la maggior parte delle altre cose su false (ad es. Chiavi primarie, chiavi univoche, ecc.) In modo che tutto ciò che è nel file sql sia l'istruzione di base della tabella di creazione e le istruzioni di inserimento. Dato che sta controllando se la tabella non esiste già prima di creare la tabella, starai bene a eseguire lo script se la tabella esiste già. Quindi si comporta proprio come sarebbe se fossero solo le istruzioni di inserimento. Se stai creando un singolo file sql per diverse tabelle selezionate, mette tutti i blocchi di creazione della tabella nella parte superiore dello script, quindi è abbastanza facile rimuoverli tutti dopo che il file è stato creato, se lo desideri.

20

Una delle possibili soluzioni che ha funzionato per me è generare script come "Schema e dati" anziché "Solo dati". Quindi potrei semplicemente rimuovere tutti gli elementi inutili dello schema e lasciare solo i dati. Spero che anche questo aiuti.

+2

Più semplice e quindi per me migliore –