发布含SQL Server 2017数据库的网站时遇Sql140DatabaseSchemaProvider无效内部错误
解决SQL Server数据库发布时的Sql140DatabaseSchemaProvider无效问题
我之前也碰到过类似的Schema Provider加载异常,结合你的环境配置,给你几个针对性的排查和修复方向:
1. 确认SSDT组件与SQL Server 2017的兼容性
虽然你提到安装了最新版SSDT,但VS2019的SSDT可能存在组件关联问题。你可以:
- 打开VS2019的「扩展管理」,找到「SQL Server Data Tools」,确认其版本明确支持SQL Server 2017(对应Sql140版本);
- 如果版本没问题但异常依旧,尝试卸载重装SSDT,注意选择适配VS2019的安装包,安装时确保勾选「SQL Server 2017数据库支持」组件。
2. 手动指定数据库平台服务的完整类型名
错误提示里提到可以提供完整类型名来绕过自动加载问题,你可以在项目的发布配置文件(.pubxml)中添加以下配置:
<PropertyGroup> <DatabaseSchemaProvider>Microsoft.Data.Tools.Schema.Sql.Sql140DatabaseSchemaProvider, Microsoft.Data.Tools.Schema.Sql, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</DatabaseSchemaProvider> </PropertyGroup>
或者在VS发布向导的「设置」选项卡中,找到数据库配置区域,手动填入上述完整类型字符串。
3. 清理VS缓存并重建项目
VS的缓存文件偶尔会导致组件加载异常,你可以:
- 关闭VS,删除项目根目录下的隐藏文件夹
.vs; - 清空项目的
bin和obj文件夹; - 重新打开VS,执行「清理解决方案」→「生成解决方案」,之后再尝试发布。
4. 检查数据库兼容性级别
即使服务器是SQL Server 2017,目标数据库的兼容性级别可能被设置为更低版本。你可以在SMSS中执行以下查询确认:
SELECT name, compatibility_level FROM sys.databases WHERE name = '你的数据库名称';
如果兼容性级别不是140(对应SQL Server 2017),执行以下语句修改:
ALTER DATABASE 你的数据库名称 SET COMPATIBILITY_LEVEL = 140;
内容的提问来源于stack exchange,提问作者Marcel Vogel
相关产品推荐
相关产品推荐

