Отложенная подготовка не может быть завершена, 3 сервера SQL
У меня есть 3 сервера SQL, и я получаю странное поведение с OpenRowset.
Дано:
- Сервер 1 = 192.168.1.1,
- Сервер 2 = 192.168.1.2,
- Сервер 3 = 192.168.1.3,
- Сервер 4 = 192.168.1.4
SQL:
SELECT a.*
FROM OPENROWSET('SQLOLEDB',
'Data Source=192.168.1.1;Persist Security
Info=True;uid=sa;pwd=password',
'SELECT * FROM dfs_database.dbo.dfs_vehicledata ') AS a;
Вот странная часть: если я запускаю приведенный выше оператор SQL на серверах.3 и.4, все работает нормально.
Однако, если я запускаю инструкцию SQL на сервере.2, я получаю:
Поставщик OLE DB "SQLNCLI11" для связанного сервера "(null)" вернул сообщение "Отложенная подготовка не может быть завершена".
Msg 8180, уровень 16, состояние 1, строка 7
Заявление (я) не может быть подготовлено.Сообщение 208, Уровень 16, Состояние 1, Строка 7
Неверное имя объекта 'dfs_database.dbo.dfs_vehicledata'.
Так что может заставить одни отношения не работать, когда другие работают нормально? Есть идеи? Все они SQL Server Express, и все отчеты имеют поставщиков SQLNCLI11.
2 ответа
С помощью OpenRowSet
это выглядит так:
sp_configure 'Show Advanced Options', 1
GO
RECONFIGURE
GO
sp_configure 'Ad Hoc Distributed Queries', 1
GO
RECONFIGURE
GO
OPENROWSET('SQLNCLI',
'Server=ipHere\ExtentionNameifHas;Database=DBName;Uid=userName;PWD=Password;'
,'SET FMTONLY OFF;SET NOCOUNT ON;SELECT * FROM
dfs_database.dbo.dfs_vehicledata'
Из журнала ошибок попробуйте изменить имя поставщика OLE DB с "SQLOLEDB" на "SQLNCLI11", а также проверьте местоположение объекта. Обязательно укажите полное местоположение с базой данных, таблицей и т. Д.