Я извлекаю данные на SQL Server из базы данных коболов, которая связана как связанный сервер. мы столкнулись с плохими данными в одной из наших таблиц, и я пытаюсь отследить запись оскорбления. в частности, у нас есть письмо, введенное в поле года, когда SQL извлекает данные по нему, пытается преобразовать этот столбец в числовой тип данных.Плохие данные в связанной таблице
Я считаю, что мне нужна комбинация openquery и cast для выбора всех столбцов с по крайней мере определенным столбцом в качестве varchar, чтобы я мог получить конкретную запись о нарушении и иметь отдел. исправить ошибку.
Я пробовал следующие два синтаксиса, но оба они вызывают ошибку.
select * from [incode]...ctvehl
where VEH_YEAR like '992D'
select * from openquery (incode, 'select cast(* as nvarchar) from ctvehl')
для ясности
linked server name = incode
table name = CTVEHL
Specific offending column = VEH_YEAR
помощь с этим было бы весьма признателен.
Благодаря
с помощью выбора в заявление? –
Я бы использовал что-то вроде 'INSERT INTO local_WorkTable (col1, col2, col3) SELECT col1, col2, col3 FROM openquery (incode, 'select col1, col2, col3 from from ctvehl')'. Тем не менее, вы даже можете попытаться пропустить WorkTable, используя 'INSERT INTO local_RealTable (col1, col2, col3) SELECT col1, col2, cast (col3 как varchar (23)) FROM openquery (incode, 'select col1, col2, col3 from от ctvehl ') '. Openquery передает ваш запрос системе Cobol, которая, похоже, не может обрабатывать 'cast', это заставит' cast' запускать локально на SQL Server. –
нормально с этим кодом 'Создать таблицу local_tempTable ( VEH_VEHICLE_CODE INT, VEH_YEAR VARCHAR (23) ) INSERT INTO local_TempTable (VEH_VEHICLE_CODE, VEH_YEAR) ВЫБРАТЬ VEH_VEHICLE_CODE, литая (VEH_YEAR, как VARCHAR (23)) из OPENQUERY (INCODE" выберите VEH_VEHICLE_CODE, VEH_YEAR из ctvehl ') 'Я все еще вижу эту ошибку провайдера OLE DB« MSDASQL »для связанного сервера« incode »возвращенное сообщение« [TOD] [ODBC] [GENESIS] VISION: поле преобразования ошибки VEH_YEAR string' 992D 'to числовой». Msg 7330, уровень 16, состояние 2, строка 6 Невозможно получить строку от поставщика OLE DB «MSDASQL» для связанного сервера «incode». –