SQL Server 2019跨库同名表内连接报错,SQL Server 2000正常,求数据库级解决办法
问题解答
首先明确:没有专门的数据库级配置选项可以单独禁用这个同名表的别名检查。这个报错是因为SQL Server 2005及以后版本对T-SQL语法的解析规则做了严格化调整,而SQL Server 2000的语法容忍度更高,允许这种不带别名的跨库同名表连接。
不过可以尝试通过调整数据库兼容性级别来模拟SQL Server 2000的行为,具体操作如下:
- 执行以下语句将当前数据库的兼容性级别设置为80(对应SQL Server 2000):
ALTER DATABASE [你的数据库名] SET COMPATIBILITY_LEVEL = 80; - 注意:降低兼容性级别会导致数据库无法使用后续版本的新特性(比如分区表、新内置函数等),需要评估业务影响后再操作。
如果调整兼容性级别不可行,那么只能通过给表添加别名的方式修改SQL语句。针对数千条语句的情况,可以编写批量替换脚本(比如用PowerShell、Python或SQL Server自带的脚本工具)自动处理,示例修改后的SQL如下:
select C1.Category FROM Category C1 INNER JOIN TEST123.dbo.Category C2 ON C1.CategoryRef=C2.CategoryRef
内容的提问来源于stack exchange,提问作者Carl Harrison
相关产品推荐
相关产品推荐

