SQL Server 2008 R2 - 将 Varchar(max) 值转换为 varbinary(max)

SQL Server 2008 R2 - Converting Varchar(max) value to varbinary(max)

两个不同的服务器,都是 运行ning SQL Server 2008 R2.

在两台服务器上我们 运行 相同的命令:

INSERT INTO Docs(IMG64) 
VALUES (CONVERT(VARBINARY(max), '/9j/4AAQSkZJRgABAQAAAQABAAD...')

当然,Img64的实际值比这里显示的要长很多。

tableDocsImg64的实际数据类型是VARCHAR(MAX)

在服务器 X 上,我们收到以下错误:

Explicit conversion from data type text to varbinary(max) is not allowed. (SQLSTATE=22018) (529) (Severity=16) (MsgState=2)

在服务器 Y 上,完全相同的语句完全相同 table,没有收到错误。

我们已经尝试根据服务器 X 的 table 构建在服务器 Y 上重建 table,但无济于事。

我们已经尝试 运行在同一个 table 版本的 SQL 服务器上使用相同的 SQL 语句,包括 2005、2008 和 2014 , 没有问题。

任何人都可以帮助我了解导致此问题的原因吗?任何帮助将不胜感激。

注意:两个服务器(2008R2)的兼容性级别都设置为90。其他服务器(2005、2008、2014)的兼容性分别适当设置为每个不同的实例。

这两台服务器上的数据库是否使用不同的兼容级别

某些转换函数的行为会有所不同,具体取决于您的数据库的兼容级别。例如,兼容级别 80(SQL Server 2000) 不会 像 SQL 中引入的 varchar(max)varbinary(max) 等数据类型服务器 2005(兼容级别 90)