Вставка в таблицу из представления создать с помощью сервера ссылок - PullRequest
0 голосов
/ 16 октября 2018

Я создал представление, которое включает представление со связанного сервера, и я вставляю его в таблицу.когда я запрашиваю таблицу, она не возвращает данных, когда оператор where ссылается на данные из таблицы linkserver.Однако он извлекает все данные, когда не используется оператор where.почему это так, у меня нет большого опыта работы с LinkedServers.

Вот код, который я использовал для построения своего представления, которое я использую для заполнения своей таблицы.

ALTER VIEW [dbo].[weightsDashboard]
AS
    SELECT * 
    FROM [dbo].[weightsYak]

    UNION ALL 

    SELECT * 
    FROM OPENQUERY([10.3.50.62\AGJET], 'SELECT * FROM [CheckWeigher]. 
 [dbo].[weightsSs]')

Затем я запустил эточтобы создать набор данных, о котором я хочу сообщить.

select * 
into Dataset_SaleSummary
from  [dbo].[weightsDashboard]

Заранее спасибо.

1 Ответ

0 голосов
/ 17 октября 2018

Основной причиной будет драйвер.Используйте 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, принудительно заставьте еговернуть "все строки".

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