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的实际值比这里显示的要长很多。
tableDocs
中Img64
的实际数据类型是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)
两个不同的服务器,都是 运行ning SQL Server 2008 R2.
在两台服务器上我们 运行 相同的命令:
INSERT INTO Docs(IMG64)
VALUES (CONVERT(VARBINARY(max), '/9j/4AAQSkZJRgABAQAAAQABAAD...')
当然,Img64的实际值比这里显示的要长很多。
tableDocs
中Img64
的实际数据类型是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)