Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 OPENROWSET из БД SQLite  [new]
=Сергей=
Member

Откуда:
Сообщений: 329
Возможно ли подключиться к данным из БД SQLite через OPENROWSET?
Помогите плиз.
6 май 14, 15:40    [15980698]     Ответить | Цитировать Сообщить модератору
 Re: OPENROWSET из БД SQLite  [new]
Glory
Member

Откуда:
Сообщений: 104760
=Сергей=
Возможно ли подключиться к данным из БД SQLite через OPENROWSET?

OPENROWSET все равно куда подключаться
Потому что подключаться будет драйвер, который вы укажете
6 май 14, 15:42    [15980723]     Ответить | Цитировать Сообщить модератору
 Re: OPENROWSET из БД SQLite  [new]
=Сергей=
Member

Откуда:
Сообщений: 329
Glory
OPENROWSET все равно куда подключаться
Потому что подключаться будет драйвер, который вы укажете

Я установил SQLIte драйвер ODBC, зарегистрировал DSN, но никак не пойму, что писать в параметры OPENROWSET, в частности, название провайдера.
6 май 14, 15:52    [15980833]     Ответить | Цитировать Сообщить модератору
 Re: OPENROWSET из БД SQLite  [new]
Glory
Member

Откуда:
Сообщений: 104760
=Сергей=
Я установил SQLIte драйвер ODBC


provider_name '
Is a character string that represents the friendly name (or PROGID) of the OLE DB provider as specified in the registry. provider_name has no default value.

Для доступа через ODBC нужно использовать Microsoft OLE DB Provider for ODBC
6 май 14, 15:56    [15980875]     Ответить | Цитировать Сообщить модератору
 Re: OPENROWSET из БД SQLite  [new]
=Сергей=
Member

Откуда:
Сообщений: 329
Glory
Для доступа через ODBC нужно использовать Microsoft OLE DB Provider for ODBC

Вот так, кажется, что-то пытается делать:
select * from openrowset('MSDASQL','Driver={SQLite3 ODBC Driver};Database=c:\mydata.gmdb','select * from Details')

но возникает ошибка:
OLE DB provider "MSDASQL" for linked server "(null)" returned message "unknown error (7)".
Cannot execute the query "select * from Details" against OLE DB provider "MSDASQL" for linked server "(null)".
6 май 14, 16:15    [15981051]     Ответить | Цитировать Сообщить модератору
 Re: OPENROWSET из БД SQLite  [new]
Glory
Member

Откуда:
Сообщений: 104760
=Сергей=
'Driver={SQLite3 ODBC Driver};Database=c:\mydata.gmdb'

Вот эту строку подключения вы откуда взяли ?
6 май 14, 16:21    [15981106]     Ответить | Цитировать Сообщить модератору
 Re: OPENROWSET из БД SQLite  [new]
=Сергей=
Member

Откуда:
Сообщений: 329
Glory
=Сергей=
'Driver={SQLite3 ODBC Driver};Database=c:\mydata.gmdb'

Вот эту строку подключения вы откуда взяли ?

Название драйвера посмотрел в закладке Драйверы Администратора источников данных ODBC.
Складывается впечатление, что в этом месте более-менее корректно, так как если в запросе написать заведомо несуществующую таблицу или указать заведомо несуществующую БД, то ругается "no such table".
6 май 14, 16:31    [15981195]     Ответить | Цитировать Сообщить модератору
 Re: OPENROWSET из БД SQLite  [new]
Glory
Member

Откуда:
Сообщений: 104760
=Сергей=
Название драйвера посмотрел в закладке Драйверы Администратора источников данных ODBC.
Складывается впечатление, что в этом месте более-менее корректно, так как если в запросе написать заведомо несуществующую таблицу или указать заведомо несуществующую БД, то ругается "no such table".

Создайте файл с расширением UDL. Настройте в нем коннект. Потом откройте в текстовом редакторе. И сравните
6 май 14, 16:33    [15981210]     Ответить | Цитировать Сообщить модератору
 Re: OPENROWSET из БД SQLite  [new]
=Сергей=
Member

Откуда:
Сообщений: 329
Glory
Создайте файл с расширением UDL. Настройте в нем коннект. Потом откройте в текстовом редакторе. И сравните

Большое спасибо за совет, не знал ничего про UDL-файлы.
Файл создал, там в качестве провайдера используется MSDASQL.1 и указано некоторое количество дефолтных опций.
Сделал как указано там, но получил ошибку "The provider ran out of memory".
6 май 14, 16:51    [15981360]     Ответить | Цитировать Сообщить модератору
 Re: OPENROWSET из БД SQLite  [new]
Glory
Member

Откуда:
Сообщений: 104760
=Сергей=
Сделал как указано там, но получил ошибку "The provider ran out of memory".

Ваш запрос выбирает слишком много данных
6 май 14, 16:55    [15981387]     Ответить | Цитировать Сообщить модератору
 Re: OPENROWSET из БД SQLite  [new]
=Сергей=
Member

Откуда:
Сообщений: 329
Glory
Ваш запрос выбирает слишком много данных

Да там и данных немного, около 400 тыс. строк.
Этот запрос также не работает:
select * from Details where id = 5

Хотя из оболочки для SQLite все скрипты выполняются.
6 май 14, 17:02    [15981453]     Ответить | Цитировать Сообщить модератору
 Re: OPENROWSET из БД SQLite  [new]
Glory
Member

Откуда:
Сообщений: 104760
=Сергей=
Да там и данных немного, около 400 тыс. строк.

Для linked server-ов используется отдельный кусок памяти. А не общий пул памяти, доступный mssql

=Сергей=
Этот запрос также не работает:
select * from Details where id = 5

Начните с запросов к еще более маленьким таблицам
6 май 14, 17:04    [15981478]     Ответить | Цитировать Сообщить модератору
 Re: OPENROWSET из БД SQLite  [new]
=Сергей=
Member

Откуда:
Сообщений: 329
Перезагрузился и всё заработало!
Glory, большое Вам спасибо!!!
Если кому понадобится, то это:
select * from openrowset('MSDASQL.1','Driver={SQLite3 ODBC Driver};Database=c:\mydata.gmdb','select * from Details')

точно работает!
6 май 14, 17:42    [15981785]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить