You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从Azure BACPAC还原SQL Server数据库遇CatalogCollation错误求助

解决SQL Server 2014导入Azure BACPAC时的CatalogCollation错误

这个错误的核心原因很明确:CatalogCollation是SQL Server 2016及Azure SQL Database才引入的数据库级排序规则属性,而SQL Server 2014及更早版本并不支持这个属性——你的BACPAC里包含了这个Azure SQL DB的专属属性,但SSMS 2014/2017的DAC框架(用于导入数据层应用的核心组件)在适配旧版本SQL Server时无法识别它,所以抛出了这个报错。

下面是两种可行的修复方案,按操作复杂度排序:

方案1:手动修改BACPAC移除不兼容属性

BACPAC本质就是一个ZIP压缩包,我们可以直接移除这个不被SQL Server 2014识别的属性:

  • 把你的.bacpac文件后缀改成.zip,解压到一个单独的文件夹中
  • 在解压后的文件夹里找到model.xml文件,用文本编辑器(比如VS Code、Notepad++)打开
  • 搜索并删除所有包含CatalogCollation的行,通常是类似这样的内容:
    <Property Name="CatalogCollation" Value="SQL_Latin1_General_CP1_CI_AS" />
    
  • 保存修改后的model.xml,把整个解压文件夹重新压缩成ZIP文件,再改回.bacpac后缀
  • 现在重新用SSMS的「导入数据层应用程序」功能尝试导入,应该就能顺利完成了

方案2:使用SqlPackage.exe命令行工具导入

如果你不想手动修改BACPAC文件,可以用微软官方的SqlPackage.exe工具(属于DACFx框架的一部分),它对跨版本兼容性的处理比SSMS内置工具更灵活:

  1. 下载并安装适配SQL Server 2014的DACFx版本(或最新版DACFx,它支持向下兼容处理这类属性)
  2. 打开命令提示符,运行类似下面的命令(替换成你自己的文件路径和连接字符串):
    SqlPackage.exe /Action:Import /SourceFile:"C:\Downloads\your-database.bacpac" /TargetConnectionString:"Server=.\SQL2014;Database=RestoredDB;Integrated Security=True;"
    
  3. 等待命令执行完成,工具会自动跳过SQL Server 2014不支持的属性,完成数据库导入

额外说明

如果你有条件升级目标SQL Server到2016及以上版本,这个问题会自动消失——因为新版本原生支持CatalogCollation属性,导入BACPAC时不会出现识别错误。但如果必须留在SQL Server 2014,上面的两个方案都能解决你的问题。

内容的提问来源于stack exchange,提问作者gringo_dave

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:15:04