Связанный SQL Server имеет ошибку при преобразовании типа данных DBTYPE_DBTIMESTAMP - PullRequest
7 голосов
/ 19 ноября 2009

У меня есть SQL Server 2005, который имеет «связанный сервер» с другим SQL Server 2005.

Когда я запускаю простой запрос к одной из таблиц к связанному серверу:

SELECT    TOP 10 [Pat_Id]
FROM   [Prod].[PIS].[dbo].[W_PATIENT]

Эта ошибка возникает:

Msg 8114, Level 16, State 8, Line 1
Error converting data type DBTYPE_DBTIMESTAMP to datetime.
Msg 8114, Level 16, State 8, Line 1
Error converting data type DBTYPE_DBTIMESTAMP to datetime.

Однако, когда я использую OPENQUERY, это работает:

SELECT * FROM OPENQUERY([Prod], 'SELECT TOP 10 [Pat_Id] FROM [PIS].[dbo].[W_PATIENT]')

Таблица W_PATIENT не имеет типизированных полей TIMESTAMP. Он имеет 5 полей DATETIME.

Также важно отметить, что я могу без проблем запрашивать другие таблицы со значениями DATETIME. Проблема сосредоточена на таблице W_PATIENT.

1 Ответ

1 голос
/ 19 ноября 2009

Возможно ли, что некоторые из этих полей DATETIME имеют "неправильные записи", выходят за пределы диапазона и т. Д. Например, если одно из них на самом деле является строкой с некоторым "мусором" внутри? Открытый запрос выполняется на удаленном сервере и возвращаются только результаты; в то время как при выборе, данные передаются, поэтому применяется преобразование данных.

Я бы рассмотрел некоторые данные профилирования в таблице w_patient. Если у вас есть SQL Server 2008, в SSIS есть задача профилирования данных, но вы также можете найти другие инструменты для проверки качества данных.

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