powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Тормоза openquery
14 сообщений из 39, страница 2 из 2
Тормоза openquery
    #40030409
Петр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
запрос:
Код: sql
1.
SELECT ID FROM SGMRGD.SGMRGD..TEST



ошибка
Код: sql
1.
2.
3.
4.
5.
6.
Поставщик OLE DB "MSDASQL" для связанного сервера "SGMRGD" вернул сообщение "[ODBC Firebird Driver][Firebird]Dynamic SQL Error
SQL error code = -104
Token unknown - line 1, column 23
.".
Сообщение 7306, уровень 16, состояние 2, строка 2
Не удалось открыть таблицу ""SGMRGD"."TEST"" через поставщик OLE DB "MSDASQL" для связанного сервера "SGMRGD". 



вариант с OPENQUERY работает
Код: sql
1.
select * from openquery(SGMRGD,'SELECT ID FROM TEST')
...
Рейтинг: 0 / 0
Тормоза openquery
    #40030411
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Петр,

А
Код: sql
1.
openquery(SGMRGD,'SELECT ID FROM "SGMRGD"."TEST"')

тоже работает?
...
Рейтинг: 0 / 0
Тормоза openquery
    #40030413
Петр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
env
Петр,

А
Код: sql
1.
openquery(SGMRGD,'SELECT ID FROM "SGMRGD"."TEST"')

тоже работает?


Нет. А почему должно работать? Сервер FireBird ничего не знает про SGMRGD.
SGMRGD - это же линк сервер и алиас ODBC драйвера
...
Рейтинг: 0 / 0
Тормоза openquery
    #40030417
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Петр,

Тогда зачем вы заставляете драйвер читать из несуществующей таблицы?
...
Рейтинг: 0 / 0
Тормоза openquery
    #40030418
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Петр
Код: sql
1.
SELECT ID FROM SGMRGD.SGMRGD..TEST

Второй SGMRGD зачем? На всякий случай?

Так попробуйте
Код: sql
1.
SELECT ID FROM SGMRGD...TEST
...
Рейтинг: 0 / 0
Тормоза openquery
    #40030420
Петр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invm
Петр
Код: sql
1.
SELECT ID FROM SGMRGD.SGMRGD..TEST

Второй SGMRGD зачем? На всякий случай?

Так попробуйте
Код: sql
1.
SELECT ID FROM SGMRGD...TEST


вот почему второй - картинка

Код: sql
1.
2.
3.
4.
SELECT ID FROM SGMRGD...TABLE

Сообщение 7313, уровень 16, состояние 1, строка 1
Указан недопустимый каталог или схема для поставщика "MSDASQL" для связанного сервера "SGMRGD".
...
Рейтинг: 0 / 0
Тормоза openquery
    #40030426
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Петр,

Тогда так, в соответствии с принципом "нормальные герои всегда идут в обход" (с)
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
if object_id('tempdb..#t', 'U') is not null
 drop table #t;

select * into #t from openquery(SGMRGD, 'SELECT * FROM TEST where 1 = 0');

insert into #t
 exec('SELECT * FROM TEST where ID = ?', 160285601) at SGMRGD;

select * from #t;
...
Рейтинг: 0 / 0
Тормоза openquery
    #40030437
Петр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да временная таблица особо не нужна если выборка только по таблице линксервера

достаточно
Код: sql
1.
2.
3.
create procedure usp_DataSet @ID int 
as
exec('SELECT * FROM TEST where ID = ?', @ID) at SGMRGD



но вот если этот датасет из процедуры надо связать с таблицей из БД SQL сервера как быть. Только через временную таблицу
или можно еще както?
...
Рейтинг: 0 / 0
Тормоза openquery
    #40030453
Петр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
openquery можно использовать при связке типа
Код: sql
1.
2.
3.
select * 
from	openquery(SGMRGD,'SELECT ID, NAME FROM TEST WHERE ID = 12345678') m
		left outer join TEST2 p on p.kid = m.id



т.е. придется вьюшки заменить на хранимые процедуры.

если кто-то предложит правильную конструкцию обращения к firebird напрямую к таблице типа (SELECT ID FROM SGMRGD.SGMRGD..TEST), буду признателен.
...
Рейтинг: 0 / 0
Тормоза openquery
    #40030466
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Петр
или можно еще както?
CLR-функция
...
Рейтинг: 0 / 0
Тормоза openquery
    #40030492
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Петр
если кто-то предложит правильную конструкцию обращения к firebird напрямую к таблице типа (SELECT ID FROM SGMRGD.SGMRGD..TEST), буду признателен.

Для начала следует попробовать в настройках драйвера отбить всю "поддержку" схем, чтобы он честно отвечал "схемы не поддерживаются". Или можно использовать драйвер с https://github.com/aafemt/firebird-odbc-driver где эта поддержка отбита принудительно.

Потом включается трассировка ODBC и смотрится как именно SQL Server с ним работает.
...
Рейтинг: 0 / 0
Тормоза openquery
    #40030509
Петр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для начала следует попробовать в настройках драйвера отбить всю "поддержку" схем, чтобы он честно отвечал "схемы не поддерживаются". Или можно использовать драйвер с https://github.com/aafemt/firebird-odbc-driver где эта поддержка отбита принудительно.

Потом включается трассировка ODBC и смотрится как именно SQL Server с ним работает.

в настройка ODBC пробовал ничего не меняется. Схема отключена

по поводу альтернативного драйвера ODBC - вы пользовались им?
...
Рейтинг: 0 / 0
Тормоза openquery
    #40030826
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во-первых, это не "альтернативный драйвер", а немного поправленный форк официального. Во-вторых, я его сделал.
...
Рейтинг: 0 / 0
Тормоза openquery
    #40030828
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
Во-вторых, я его сделал.
...
Рейтинг: 0 / 0
14 сообщений из 39, страница 2 из 2
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Тормоза openquery
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]