将 SQL 服务器数据库克隆到另一个排序规则

Cloning a SQL Server database to another collation

我不确定这是否是将数据迁移到另一个排序规则的最佳方式,但我已经完成了以下操作:

1) 编写源数据库脚本并将脚本中的排序规则更改为我需要的排序规则

2) 运行 脚本并使用所需的排序规则创建了新数据库(以及所有表、触发器、索引等

3) 我尝试从 SQL Server management studio 'Export Data',但我遇到了与代码页差异相关的错误。

4) 由于Export/Import 数据不工作,我求助于使用bcp 将源数据库中的所有表批量导出到txt 文件。之后我开始使用 bcp 导入行,但我看到了一些与截断和无效字符相关的错误。

从脚本源创建克隆后,使用不同代码页和排序规则从数据库迁移数据的best/proper方法是什么?

我曾经不得不更改整个数据库的排序规则...并不容易...

这些是步骤:

  • 复制了数据库
  • 删除了裸表以外的所有内容(索引、视图、函数、过程、约束、触发器...)
  • 半自动更改了文本列的排序规则(-> INFORMATION_SCHEMA.TABLESINFORMATION_SCHEMA.COLUMNS 是很好的开始)
  • 使用工具(红门?)与副本进行比较并找出所有差异。
  • 此工具可创建差异脚本,而且 - 这很重要! - 可以配置为在没有整理提示的情况下创建此脚本。
  • 最后我应用了 diff 脚本(剩下一些手动工作...)

反过来可能更容易,先为您的表创建一个没有排序规则提示的脚本,然后针对此执行其余操作……但我的方法可以让数据保持不变。

祝你好运!