J'ai besoin de migrer des données d'un DB vers un autre. J'ai choisi d'utiliser SqlBulkCopy, mais un problème avec elle, parce que la base de données source a différente collation que la destination, donc, j'ai une exception:SqlBulkCopy avec différents classements
System.InvalidOperationException: The locale id '1049' of the source column 'Id' and the locale id '1033' of the destination column 'Id' do not match.
at System.Data.SqlClient.SqlBulkCopy.AnalyzeTargetAndCreateUpdateBulkCommand(BulkCopySimpleResultSet internalResults)
at System.Data.SqlClient.SqlBulkCopy.WriteToServerInternal()
at System.Data.SqlClient.SqlBulkCopy.WriteRowSourceToServer(Int32 columnCount)
at System.Data.SqlClient.SqlBulkCopy.WriteToServer(IDataReader reader)
at MigrateToNormalized.DirectMapCommand.Migrate(SqlConnection source, SqlConnection destination, SqlTransaction transaction) in D:\Projects\APS\DTE\MigrateTo
Normalized\MigrateToNormalized\MigrateToNormalized\DirectMapCommand.cs:line 53
at MigrateToNormalized.Program.Main(String[] args) in D:\Projects\APS\DTE\MigrateToNormalized\MigrateToNormalized\MigrateToNormalized\Program.cs:line 32
Quelqu'un peut-il me dire, comment résoudre ce problème sans directe utilisation des instructions COLLATE dans une requête SQL? Existe-t-il un moyen simple de modifier le classement pour toutes les colonnes de la base de données source?
C'est vrai, mais j'ai beaucoup de tables et beaucoup de colonnes. Je ne veux pas changer les colaisons pour chacun d'entre eux manuellement. –
Cela ne répond pas à la question du tout. Vous ne pouvez pas modifier la base de données client pour le faire fonctionner. – billybob