将现有的Kentico数据库迁移到Azure SQL - 排序规则不匹配

问题描述:

我们目前有一个SQL Server Kentico数据库,我们正在考虑迁移到Azure SQL。当前数据库的归类类型为Latin1_General_CI_AS(Kentico默认值),我们的Azure SQL主数据库为SQL_Latin1_General_CP1_CI_AS(Azure默认值)。将现有的Kentico数据库迁移到Azure SQL - 排序规则不匹配

我们最初只是将它导入到一个新的Azure数据库,似乎工作正常,直到Kentico执行涉及比较系统表和Kentico数据库之间的字符串的任何查询。例如该向导在Kentico中创建自定义表并尝试选择现有数据库表时。那时我们意识到master和我们的Kentico数据库之间的排序不匹配。

有什么方法可以改变Kentico数据库上的排序类型或者将我们的Kentico内容等导入新的数据库吗?

我们已经尝试了明显的 - ALTER DATABASE <name> COLLATE SQL_Latin1_General_CP1_CI_AS,但由于出现错误的许多对象都不起作用:“如果模式绑定对象依赖于该数据库,则无法更改数据库排序规则。”

我希望不必开始一个新的数据库,并手动将我们所有的内容和定制迁移到一个新的实例。

我想我已经解决了这个自己:)

  1. 二手网站导出的所有对象从我的工作地点出口
  2. 创建一个新的空Azure的SQL数据库的标准Azure的整理
  3. 改变我的web应用程序的web.config指向新的空数据库
  4. 运行web应用程序并通过数据库向导在新的空数据库中设置基准Kentico对象
  5. 创建一个新坐e通过导入我从第1步导出的网站

现在我有我的完整网站等在一个新的数据库与正确的排序类型。

+0

我们现在有同样的问题,看起来像这是唯一的解决方案。 – masterlopau

+0

只是一个更新,由于相同的排序问题,网站导出不起作用。 – masterlopau

+0

当我进行站点导出时,它来自不在Azure上的CMS,因此没有排序规则不匹配。它使用本地SQL实例,将主数据库设置为与Kentico相同的归类。 – Bagman

我也有这个痛苦的问题。我不确定为什么Kentico将排序规则更改为默认规则,但好处是Azure现在允许您在创建新数据库时设置排序规则。您只需要在整理框中输入'Latin1_General_CI_AS'。

+0

我没有在Azure中创建数据库的麻烦,因为Latin1_General_CI_AS - 问题在于Azure数据库服务器master数据库自动设置为SQL_Latin1_General_CP1_CI_AS,并且当Kentico执行包含master数据库中的表的查询时出现问题。 – Bagman