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, Dictionnaire
2 dictionary, List
1 sortedList, HashSet1 visited, HashSet
1 courant) à Microsoft.SqlServer.Gestion.Smo.SmoDependencyOrderer.DependencyGraphTraversal(Int32) num, Dictionnaire2 dictionary, List
1 sortedList, HashSet1 visited, HashSet
1 courant) à Microsoft.SqlServer.Gestion.Smo.SmoDependencyOrderer.DependencyGraphTraversal(Int32) num, Dictionnaire2 dictionary, List
1 sortedList, HashSet1 visited, HashSet
1 courant) à Microsoft.SqlServer.Gestion.Smo.SmoDependencyOrderer.DependencyGraphTraversal(Int32) num, Dictionnaire2 dictionary, List
1 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(List
1 la liste d'objets, Dictionnaire2 idDictionary, DataSet ds) at Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.ExecuteQueryUsingTempTable(List
1 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(IEnumerable
1 des urnes) Microsoft.SqlServer.Gestion.Smo.ScriptMaker.DiscoverOrderScript (IEnumerable1 urns) at Microsoft.SqlServer.Management.Smo.ScriptMaker.ScriptWorker(List
1 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)
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.
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.
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.