Ошибка SQL Server «Недопустимая попытка GetBytes для столбца» - PullRequest
7 голосов
/ 28 июля 2011

Маленький фон:

Недавно я обновил «SQL Server Management Studio 2005», применив патч от MS link http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=7218

Так что я могу получить доступ к недавно созданному серверу БД, который находится в версии SQL Server 2008.

У меня есть серверная ссылка, созданная на сервере Db 2008, который подключается к БД Oracle. раньше я не сталкивался с какими-либо проблемами, но после применения патча студии управления всякий раз, когда я запускаю запрос, используя ссылку на сервер, как показано ниже

select top 10 * from [server]..DBNAME.TABLENAME 

OR

select * from [server]..DBNAME.TABLENAME 

Я получаю ошибку

Произошла ошибка при выполнении пакета. Сообщение об ошибке: неверно Попытка GetBytes на столбце colname '. GetBytes Функция может использоваться только для столбцов типа Text, NText или Image. "

Но если я изменю запрос на

select top 10 col1,col2 from [server]..DBNAME.TABLENAME 

OR

select distinct col1, col2, col3 from [server]..DBNAME.TABLENAME 

Работает нормально, без проблем.

Я не уверен, но я верю, что это как-то связано с Management Studio ... некоторые настройки в Management Studio, вероятно, вызывают эту проблему.

Кто-нибудь имеет какие-либо идеи или сталкивался с этой проблемой раньше. Не могли бы вы помочь.

EDIT: если я запускаю проблемный запрос, используя sqlcmd, он работает нормально.

Спасибо.

Ответы [ 3 ]

12 голосов
/ 28 июля 2011

Я уже сталкивался с этой ошибкой при использовании среды управления SQL 2005 на сервере SQL 2008 и запросе таблицы с типом даты DATE.

По сути это означает, что SSMS не понимает одну извозвращаемые к нему типы данных столбца.Вы сказали, что SELECT * не работает, но SELECT col1, col2, col3 работает.Сколько столбцов в таблице?Попробуйте расширять столбец выборки за столбцом, пока не найдете тот, который сбивает с толку Management Studio.Затем вы можете использовать CAST в предложении select, чтобы превратить его в то, что Management Studio действительно понимает.

Вероятно, здесь происходит то, что один из столбцов возвращается из SQL 2008 как DATE, TIME, DATETIME2 или один издругие новые типы данных SQL 2008.Хотя Management Studio 2005 может подключаться к серверу SQL 2008, он не понимает новые типы данных и не может отображать их.

Это ограничение Management Studio.

0 голосов
/ 27 февраля 2014

Я нашел решение. Пожалуйста, попробуйте запросить таблицу sql2008, содержащую поле DATE, таким образом (при условии, что field3 является полем DATE):

select field1, field2, convert(datetime,field3) from tablename
0 голосов
/ 28 июля 2011

как сказал @GilaMonster, это и есть причина проблемы.

Опять же, проблема в SSMS, а не в общем, например, если я запускаю запрос, используя sqlcmd как

sqlcmd -S <servername> -U login -P password -d dbname -Q "select top 10 * from [server]..DBNAME.TABLENAME" 

работает без ошибок.

Решение:

Unistall SSMS 2005 и установка SQL Server 2008 R2 Management Studio, которая решит проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...