SQL Server错误"在列上无效尝试GetBytes"

Rah*_*hul 7 ssms sql-server-2008

小背景:

最近我通过应用来自MS链接的补丁升级了"SQL server management studio 2005" http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=7218

这样,我就可以访问最近构建的SQL Server 2008版本的DB服务器.

我在2008 Db服务器上创建了一个连接到Oracle DB的服务器链接.早些时候我没有遇到任何问题,但每当我使用服务器链接运行查询时应用管理工作室补丁如下所示

select top 10 * from [server]..DBNAME.TABLENAME 
Run Code Online (Sandbox Code Playgroud)

要么

select * from [server]..DBNAME.TABLENAME 
Run Code Online (Sandbox Code Playgroud)

我收到了错误

执行批处理时发生错误.错误消息是:列colname上的GetBytes尝试无效'.GetBytes函数只能用于Text,NText或Image类型的列."

但是,如果我将查询更改为

select top 10 col1,col2 from [server]..DBNAME.TABLENAME 
Run Code Online (Sandbox Code Playgroud)

要么

select distinct col1, col2, col3 from [server]..DBNAME.TABLENAME 
Run Code Online (Sandbox Code Playgroud)

它运行正常没有任何问题.

我不确定,但我相信它与Management Studio...有关...某些设置Management Studio可能导致这个问题.

有没有人有任何想法或以前遇到过这个问题.你能帮忙吗?

编辑:如果我使用sqlcmd它运行问题查询运行正常.

谢谢.

Gil*_*ter 12

在将SQL 2005管理工作室用于SQL 2008服务器并查询其中包含DATE日期类型的表之前,我遇到了这个错误.

从本质上讲,它意味着SSMS无法理解返回给它的一种列数据类型.您说SELECT*不起作用,但SELECT col1,col2,col3可以.表中有多少列?尝试逐列扩展选择列,直到找到令管理工作室混乱的列.然后,您可以在select子句中使用CAST将其转换为Management Studio可以理解的内容.

这里可能发生的是其中一个列从SQL 2008返回为DATE,TIME,DATETIME2或其他一个新的SQL 2008数据类型.虽然Management Studio 2005可以连接到SQL 2008服务器,但它无法理解新数据类型并且无法显示它们.

这是Management Studio的一个限制.

  • 不.这是Management Studio问题.任何形式的查询(如SQLCMD)都不通用.管理工作室特别不知道如何显示列. (2认同)