Основной причиной будет драйвер.Используйте ODBC вместо OLE DB. Если вы пытаетесь подключить базу данных oracle с сервера sql
Удалите связанный сервер из SQL Server. Щелкните правой кнопкой мыши папку «Связанные серверы» и выберите «Новый связанный сервер ...».Связанный сервер: введите что угодно .. это будет имя вашего нового связанного сервера. Поставщик: выберите «Поставщик Oracle для OLE DB». Название продукта: введите «Oracle» (без двойных кавычек). Источник данных: введите псевдоним из TNSNAMES.Файл ORA.Строка провайдера: оставьте это поле пустым. Место: оставьте это поле пустым. Каталог: оставьте это поле пустым. Теперь перейдите на вкладку «Безопасность» и щелкните последнюю радиокнопку с надписью «Сделайте, используя этот контекст безопасности:» и введите имя пользователя и пароль для своегоconnection.
У меня была точно такая же проблема с SQL 2014, получающим данные из SQL 2000 через OPENQUERY.Поскольку проблема совместимости с ODBC, мне пришлось сохранить общий OLE DB для драйвера ODBC.Более того, проблема была только с учетной записью без прав администратора SQL.Итак, наконец, решение, которое я нашел, было добавить SET ROWCOUNT 0:
SELECT * FROM OPENQUERY(DWH_LINK, 'SET ROWCOUNT 0 SELECT * FROM TABLEA ')
Кажется, что число строк могло быть изменено где-то через процедуру SQL (или для этого пользовательского сеанса), поэтому установив его в 0, принудительно заставьте еговернуть "все строки".