Générer des Scripts-données seulement-dépendances cycliques trouvées erreur

j'essaie de générer un script de toutes les données d'une base de données afin de pouvoir déplacer les données vers une base de données identique sur un autre serveur. Dans SQL Server 2012 je fais un clic droit sur la base de données source

Tâches > Générer des Scripts > Script de base de données et tous les objets de base de données - > Avancé - > Types de données de script: les données uniquement

ceci me donne une erreur à propos d'une dépendance cyclique. Si je change le type de données à script en schéma et données il génère de l'amende. Comment puis-je corriger cela pour travailler avec des données seulement?

résultat de L'Action obtenir une liste des objets de MyDatabase ont échoué

rapport Détaillé:

Microsoft.SqlServer.Gestion.SqlScriptPublish.SqlScriptPublishException: Une erreur s'est produite lors du script des objets. ---> Microsoft.SqlServer.Gestion.Smo.SmoException: Cyclique dépendance trouver. à Microsoft.SqlServer.Gestion.Smo.SmoDependencyOrderer.DependencyGraphTraversal(Int32) num, Dictionnaire2 dictionary, List1 sortedList, HashSet1 visited, HashSet 1 courant) à Microsoft.SqlServer.Gestion.Smo.SmoDependencyOrderer.DependencyGraphTraversal(Int32) num, Dictionnaire2 dictionary, List1 sortedList, HashSet1 visited, HashSet 1 courant) à Microsoft.SqlServer.Gestion.Smo.SmoDependencyOrderer.DependencyGraphTraversal(Int32) num, Dictionnaire2 dictionary, List1 sortedList, HashSet1 visited, HashSet 1 courant) à Microsoft.SqlServer.Gestion.Smo.SmoDependencyOrderer.DependencyGraphTraversal(Int32) num, Dictionnaire2 dictionary, List1 sortedList, HashSet1 visited, HashSet 1 courant) à Microsoft.SqlServer.Gestion.Smo.SmoDependencyOrderer.SortDictionary (Dictionary2 dictionary) at Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.SortDataSet(DataSet ds) at Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.SortDataSet(List1 la liste d'objets, Dictionnaire2 idDictionary, DataSet ds) at Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.ExecuteQueryUsingTempTable(List1 la liste d'objets, de Liste1 list, String query) at Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.ResolveTableOnlyDependencies() at Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.ResolveDependencies() at Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.Order(IEnumerable1 des urnes) Microsoft.SqlServer.Gestion.Smo.ScriptMaker.DiscoverOrderScript (IEnumerable1 urns) at Microsoft.SqlServer.Management.Smo.ScriptMaker.ScriptWorker(List1 urns, rédacteur de L'ISmoScriptWriter) à Microsoft.SqlServer.Gestion.Smo.ScriptMaker.Script(Urne[] urnes, ISmoScriptWriter écrivain) Microsoft.SqlServer.Gestion.SqlScriptPublish.SqlScriptGenerator.DoScript(ScriptOutputOptions) outputOptions) --- Fin de l'exception interne trace de la pile --- à Microsoft.SqlServer.Gestion.SqlScriptPublish.GeneratePublishPage.worker_DoWork(Objet sender, DoWorkEventArgs E) à Système.ComponentModel.BackgroundWorker.OnDoWork (DoWorkEventArgs e) à Système.ComponentModel.BackgroundWorker.WorkerThreadStart(Objet) l'argument)

21
demandé sur John Saunders 2013-03-27 01:10:57

3 réponses

j'ai eu ce même erreur exact... Voir ma réponse ici: http://mattslay.com/ssms-generate-scripts-data-only-cyclic-dependencies-found-error/

alors, sur un coup de tête, sachant que j'avais déjà configuré cette base de données avec succès, je me suis connecté à L'instance Sql Server 2012 en utilisant Sql Server Management 2008 R2, et j'ai pu générer les scripts sans erreur!!

notez que je n'ai fait que des données, et j'ai dû lui permettre de tout écrire objets de base de données. J'ai essayé de sélectionner seulement certaines tables, mais cela a donné d'autres erreurs que je n'étais pas prêt à traquer, donc j'ai juste fait tout le truc.

8
répondu MattSlay 2015-04-03 16:17:18

une des solutions possibles qui a fonctionné pour moi est de générer des scripts comme "schéma et données" au lieu de "données seulement". Alors je pourrais juste enlever tous les trucs de schéma inutiles et ne laisser que des données. Espérons que cela aide aussi.

23
répondu Azat 2014-11-14 07:29:28

j'ai eu le même problème, et je n'ai pas le SSMS 2008 R2 installé pour faire ce que Matt a suggéré. Donc je l'ai changé les paramètres avancés de l'avoir créer le schéma et les données, et également de vérifier si des objets qui existent déjà. J'ai mis la plupart des autres choses à false (C'est-à-dire les clés primaires, Les Clés uniques, etc.) de sorte que tout ce qui est dans le fichier sql est la déclaration de base de la table create, et insérez des déclarations. Puisque c'est vérifier si la table n'existe pas déjà avant de créer la table, vous il est possible d'exécuter le script si la table existe déjà. Il se comporte donc exactement comme s'il n'y avait que les instructions insert. Si vous créez un seul fichier sql pour plusieurs tables sélectionnées, il place tous les blocs de création de table en haut du script, il est donc assez facile de tous les supprimer après que le fichier est créé si vous voulez.

3
répondu Kevin Heidt 2014-11-13 15:00:12