Dans mon eternalsaga pour insérer 1,4 million de lignes de données à partir d'un script SQL, j'ai écrit une application WinForms de base qui prend chaque ligne du script et l'exécute individuellement.L'équivalent de la base de données SET IDENTITY_INSERT OFF
Cependant, parce que le script original contenait
SET IDENTITY_INSERT [Table] OFF
et SET est une commande de session à l'échelle, ce paramètre se perd sur chaque appel SQL, ce qui signifie que chaque ligne est défaillante. Y at-il un moyen de définir IDENTITY_INSERT off pour la table entière, à l'échelle de la base de données juste pour que je puisse faire ces appels individuels sans qu'ils échouent? Ou peut-être que je peux lui dire d'ignorer la spécification d'identité en ajoutant une commande à chaque ligne?
Vous pouvez également consulter l'utilitaire bcp pour ce faire, il est spécialement conçu pour cette tâche. http://msdn.microsoft.com/en-us/library/ms162802.aspx Il existe une option de ligne de commande permettant à bcp de remplacer la colonne d'identité par un fichier spécifié à partir de vos données d'importation. – esarjeant
J'ai fini par devoir convertir mon script SQL en un fichier délimité par des tabulations, puis utiliser bcp pour l'importer. C'était beaucoup plus compliqué que ça aurait dû être! – tags2k