Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: linked server firebird (mssql x64->firebird)

Задача:
Необходимо иметь возможность выбирать данные из бд firebird в sql server x64!

т.к. открытых и доступны драйверов oledb к сожалению совсем нет-использую драйвер odbc
т.к. sql server релиз=x64 использую единственный доступный х64-odbc драйвер т.е. firebird

подключение настраиваю к firebird-базе через системный dsn (в источниках данных)

в sql server выполняю запрос для подключения через dns

EXEC master.dbo.sp_addlinkedserver @server = N'RCNET', @srvproduct=N'IB', @provider=N'MSDASQL', @datasrc=N'rcnet'

EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'RCNET',@useself=N'False',@locallogin=NULL,@rmtuser=N'test',@rmtpassword='########'



попытка получить список таблиц успешна-вижу имена всех таблиц в firebird-базе

(сообщение [RCNET]...[R_STATUS] не содержит столбцов, которые можно выбрать, либо текущий пользователь не имеет разрешений на этот объект)

попытка выбрать данные:
select * from [RCNET]...[R_STATUS]
также неуспешна
(сообщение Сообщение 7313, уровень 16, состояние 1, строка 1
An invalid schema or catalog was specified for the provider "MSDASQL" for linked server "RCNET".)


помогите как разобратся! как получить возможность "вытягивать" данные из firebird!
Ответ: BlackGnomeГуест, Firebird 2.5 аналогичная ситуация, запросы через openquery выполняются, а через прямой селект - нет.
Скорее всего, это глюк драйвера к Firebird.
Вопрос: Firebird 1.5 и Firebird 3.0 в одной сети

Добрый день.
В сети есть множество программ, которые пользуют Firebird 1.5. Возникла необходимость установить программу под Firebird 3.0. После установки Firebird 3.0 (super server) на локальном компьютере встали колом службы Firebird 1.5 на сервере (просто зависли, причем не смогли перезапуститься до перезагрузки сервера), а все клиенты поотрубались. Как такое может быть, какие - то широковещательные запросы от Firebird 3.0?
Ответ: Dimitry Sibiryakov,
ну, в "условиях задачи" не сказано, что на локальном компе также была установлена старая программа и, соответственно, клиент Firebird 1.5
А ежели так, то да ... "одно неосторожное движение и ты - отец!" (с)
Могло статься и то, что Firebird 3.0 подменил собой клиента 1.5, если тот не лежит рядом со старой программой в том же каталоге или в только старой программе известном каталоге ...
Вопрос: Кэширование таблиц в MySQL

Приветствую участников форума!

Решил обратиться к вам за помощью. MySQL сильно грузит диск на сервере. Исxодные данные...

Сам сервер...
Картинка с другого сайта.

Типы запросов...
Картинка с другого сайта.

Размер баз данныx ~12ГБ.

MySQL пожирает IO, в результате чего на сервере сильно растет LA. При этом большая часть оперативной памяти остается не занятой. Обращался в компанию, специализирующуюся на администрировании и настройке серверов. Провели настройку...
автор
(размеры буферов, кэширование запросов, работу с таблицами, работа с временными таблицами в оперативной памяти)


Проблема осталась. Пробовал сам увеличивать кэш таблиц, запросов, до большиx значений. Улучшений нет. Вопрос: как перенести активность мускула в оперативную память, чтобы он перестал долбить несчастные диски?
Ответ:
miksoft
Вот поэтому и нужно смотреть запросы и индексы.
MyISAM не умеет кэшировать содержимое таблиц, а только индексов. Поэтому запросы желательно строить так, что в содержимое самих таблиц они лазили по минимуму, а лучше совсем не лазили.


Огромное упущение разработчиков. При современныx конфигурацияx серверов, было бы очень кстати.

Как вариант - подумать насчет покрывающих индексов.


Не знал о существовании такиx, так что спасибо за инфу. Попробую что-то сделать в этом направлении.
Вопрос: Как создать такую таблицу в MySQL через командную строку?!

Я болел конспектов нету с командами, а сегодня уже надо сдать...

Вот эту таблицу в MySQL

Сначала там захожу в CMD после назначаю каталог C:\MySQL\bin после подсоединяюсь через команду
-h ip -u user -p pass ввожу
После идёт Welcome и т.д.

А после мне вот надо создать свою БД, а то что то я вчера бился как рыба головой об лёд и нифига говорит что я не подсоединился к БД или что я не создал свою.. А мне надо не к имеющей чьей то подсоединиться мне надо свою создать

Вот такую как на этом скрине
Ответ: Kiber-Net, ну, таблицы создаются при помощи стандартных sql команд. И нет никакой разницы, работаешь ты с базой через командную строку или через какую-то среду (developer/toad/etc). Создание таблицы будет все равно выглядеть одинаково. Просто через консоль менее удобно.
SQL
1
CREATE TABLE products (prod_id NUMBER PRIMARY KEY, prod_name varchar2(25), is_typical varchar2(25));
Вот пример создания первой таблицы. Но тебе надо скорректировать его под свою задачу.
Но прежде чем создавать таблицы, как тебе система и говорит, тебе надо создать новую БД, а уже в ней все остальное.
Вопрос: Иерархия в запросе из трех таблиц в MySQL

Есть три таблицы:
1. table1 (id, t1_name)
2. table2 (id, t2_name, t1_id)
3. table3 (id, t3_name, ..., t1_id, t2_id) здесь поле t2_id - может быть равным NULL.

Как построить запрос для отображения иерархии, вида:

table1.t1_name
..... table2.t2_name (может и не быть в зависимости от t2_id в table3)
........... table3.t3_name, table3.field_1, ...., table3.field_n


Пробовал изначально так:
SELECT *
FROM table3
LEFT JOIN table1 ON table3.t1_id=table1.id
LEFT JOIN table2 ON table3.t2_id=table2.id


p.s.: Саму иерархию отображаю в DBGridEh Delphi, СУБД MySQL.
Ответ: Akina, по поводу циклической ссылки - ее я буду делать программно в Delphi без связей в БД.


Akina
причём отдел ссылается на другую запись той же таблицы (филиал), а для филиала в этом поле NULL.


Вы подразумеваете структуру типа: id, parent_id?

Akina
Впрочем, можете оставаться и в рамках своей структуры, но выборки будут весёлые... типа

Наверное здесь я возможно не правильно понял Ваш запрос, разве он не означает, что филиал тоже может быть пустым?

Повторюсь: Сотрудник в любом случае относится к филиалу, отделы так же в любом случае относятся к филиалу, и сотрудники в свою очередь могут как относится к отделу так и нет, допустим сотрудник - Директор (относится только к филиалу)

/*
SELECT *
FROM
table3 t3 
INNER JOIN table1 t1 ON t3.t1_id=t1.id
LEFT JOIN table2 t2 ON t3.t2_id=t2.id
*/
Вопрос: Создать и заполнить таблицу в Mysql данными

Добрый день!
Как в mysql создать и заполнить бд, чтобы её вес был около 2-х ГБ.
Пробовал с помощь цикла в скрипте(bash), забивать данные командой INSERT, очень медленно заполняется.
Может есть какой-нибудь другой способ?
Ответ:
Сообщение от guymontag
Может есть какой-нибудь другой способ
SQL
1
2
3
INSERT INTO tab2
SELECT *
FROM tab1
Если в таблице tab1 мало строк, то можно использовать декартово произведение.
SQL
1
2
3
4
INSERT INTO tab2
SELECT *
FROM tab1,
      tab1
Вопрос: Как или чем конвертировать таблицы из Firebird в MySQL или наоборот из MySQL в Firebird ?!

Предлагайте все возможные варианты! Заранее при много благодарен!
Ответ: ну коль скоро любые - написать свой daemon
Вопрос: Импорт из Firebird 2.5.3

Импорт происходит из Firebird 2.5.3(диалект 1) WIN1251 в MS SQL SERVER 2012 через ODBC driver.

Проблема следующая, все значения поля таблицы после импорта превращаются в NULL
В исходной таблице firebird тип данных VARCHAR, в MS SQL также создается таблица с типом ntext, но вместо значений туда идут NULL...
Ответ: Glory,

Количество совпадает, данные там только на Русском все, сейчас попробую таблицу с англ. импортировать.
Там где NULL он и импортирует NULL, это правильно, а там где есть данные, там просто пусто, но не NULL.
Вопрос: Интеграция Firebird и MSSQL Server

Здравствуйте.
В ходе работы на проектом возникла следующая задача. В процессе выполнения хранимой процедуры в БД Firebird 2.5 x64 необходимо следующее.
1. Выполнить хранимую процедуру в БД MSSQL Server 2008 и возвращаемый ей набор данных положить во временную таблицу Firebird либо в MemoryDataset (этот вариант предпочтительнее с точки зрения быстродействия). Эти данные должны быть доступны только внутри этого вызова хранимой процедуры Firebird и после завершения занимаемая им память должна быть освобождена.
2. В случае MemoryDataset произвести один или несколько проходов по этому датасету для формирования итогового набора данных и его возврата (suspend) в клиентское приложение.

Вариант с подключением к MSSQL через компоненты FireDAC или ADO отпадает так как стоит сверх-задача сделать получение данных из MSSQL прозрачным с точки зрения клиентского приложения, которое "заточено" на работу с Firebird.

Прошу поделиться мнениями, идеями и ссылками. Ответ "не возможно" не принимается. Позади Сибирь.
Ответ:
Ivan_Pisarevsky
Вариант "все данные в базе ФБ" не рассматривается?

Ну, у них же там "данные в MS SQL меняются в реальном времени". Очевидно, что это делается
приложением ТСа, который смог заставить его работать только с MS SQL.

Почему нельзя переточить "приложение заточенное на Firebird" под MS SQL - непонятно,
вероятно, оно купленное без исходников.

Posted via ActualForum NNTP Server 1.5

Вопрос: OLAP из MySQL в Visual Studio 2010

Добрый день!

Пытаюсь сделать OLAP куб из БД MySQL

Есть:
MySQL 5.7 x64 на вирт.машине (Open Server).
MS Visual Studio pro 2010 sp1 на хосте.
MS SQL Server 2012 Standart на хосте.
Коннекторы MySQL Connector Net 6.9.8 / MySQL for Visual Studio 1.2.6 (установлено через MySQL Installer - Community)

Создал проект:
Bussiness intelligence -> Analysis services

в Data sources:
Создал подключение к БД MySQL, настроек там нет (кроме адреса и учетки) - тест - ОК.

в Data sources views:
Создаю view, выбираю таблицы, подтягиваю related, нажимаю finish, получаю ошибку:
Проблема №1:
MS VS 2010
TITLE: Microsoft Visual Studio
------------------------------

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '[test_db].[branches]' at line 2

------------------------------
BUTTONS:

OK
------------------------------

Какую таблицу бы я не выбирал, ошибка сохраняется, меняется только название таблиц.
Пробовал в MySQL
set global sql_mode=ANSI_QUOTES
не помогло.

Нагуглил решение, в Data source в подключении установить
Sql Server Mode = true
Ставлю.
Заново создаю view - успех - открывается дизайнер!)

Проблема №2:
Но дальше вижу такую картину:
В дизайнере > в таблицах > в ключевых полях
Data type = Int32
А у меня в БД MySQL по факту указано
UInt64 (BIGINT UNSIGNED)
Как следствие не могу связать поля таблиц, потому как НЕ ключевые поля в Дизайнере остались
UInt64
Между Int32 и UInt64 связь создать невозможно.

Перетаскивать все таблицы на
Int32 
я пока не готов, но это все, что я пока могу сделать сам, хотелось бы найти грамотное решение вопроса.

Прошу помощи:
Уже не знаю как гуглить...
Уважаемые знатоки, пожалуйста, направите на путь истинный?
Возможно я не корректно решил проблему №1 и теперь пожинаю такие плоды?
Ответ: Проблема с определением типов решилась!

Из строки определения поля убрал автоинкремент:
<xs:element name="ID" msdata:AutoIncrement="true" msprop:design-time-name="92119ec8-82f7-48da-b967-983ad67d19b2" msprop:DbColumnName="ID" msprop:FriendlyName="ID" type="xs:int" />

После этого в ключевом поле можно указывать любой тип данных и дизайнер корректно его определяет после обновления.

Вот описана эта ситуация:
msdn.microsoft.com
Если тип этого столбца не Int16, Int32, или Int64 при установке этого свойства, свойство DataType приводится к типу Int32.

А у меня UInt64, не Int64... Т.е. в моем случае можно просто убрать признак UNSIGNED в MySQL и все заработает сразу со связями.
Что собственно я и сделаю, чтобы в будущем не тыркать в ручную DSV.

Всем огромное спасибо!