Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/55: Рейтинг темы: голосов - 55, средняя оценка - 4.55
16 / 1 / 0
Регистрация: 01.08.2013
Сообщений: 121
Записей в блоге: 1

Как обеспечить взаимодействие MS SQL Server и MySQL

03.09.2014, 15:19. Показов 11166. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть база access типа файл-файл
Вот-вот таблицы переедут на SQL сервер, а запросы будут переделаны на запросы к серверу. И будет файл-сервер.
Сервер - это обычный комп (разве что мощнее немного остальных), который к локальной сети подключён.

А теперь о сути вопроса: есть необходимость на сайте сделать страничку, где при вводе, например, номера паспорта и ещё чего-нибудь будет осуществляться поиск по базе и выводиться определённый результат туда же - на сайт.
Причём не хочется хранить на MySQL все таблицы, а только те, по которым поиск будет вестить и результат выводиться.

Так вот - как быть? Если тут SQLServer, а там MySQL. Как связать? Как наладить? Что вообще делать и с чего начинать? Какая идея и принцип?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.09.2014, 15:19
Ответы с готовыми решениями:

Как обеспечить взаимодействие EntityFramework 4.1 c SQL Server Express
Здравствуйте. Очень прошу помочь. Осваиваюсь в сабже. В основном по хорошей книге ASP NET MVC 3 Все прекрасно понятно но на этапе...

Взаимодействие C# и SQL Server
Парни подскажите пожалуйста, как можно сделать в Си-шарпе через консольное приложение, чтобы программа написаная через консоль связывалась...

Как обеспечить взаимодействие JavaScript и C#
Господа, Есть в JavaScript карта гугловская, на ней из SQL маркеры. Отображается в опере или подобном. Нужно нажатие на маркер...

15
 Аватар для Ice_and_Fire
512 / 298 / 37
Регистрация: 22.06.2011
Сообщений: 929
03.09.2014, 16:20

Не по теме:

файл-файл
Вот-вот
Вы из Баден-Бадена?


Линкованный сервер
OpenRowSet
http://connectionstrings
1
16 / 1 / 0
Регистрация: 01.08.2013
Сообщений: 121
Записей в блоге: 1
03.09.2014, 21:11  [ТС]
Перелапатил десяток бесплатных хостингов с MySQL, но ни к одной из этих бах подключиться не могу...
В строчке Сервер нужно же указывать адрес база дынных типа kzkzkz.com?
нифига не выходит.
Где можно гарантированно законектиться?

Добавлено через 3 часа 26 минут
Ice_and_Fire,

Спасибо за ссылки. Удалось найти хостинг с MySQL, который поддреживает удалённый доступ к базе.
Скачал драйвер для ODBC. Подключил MySQL успешно.
Создал в SQL SERVER связанный сервер.
Попробовал написать запрос к серверу:

SQL
1
SELECT *  FROM OPENROWSET('MSDASQL.1','DSN=Site;PWD=мой пароль;UID=имя пользователя;', 'select * from Autumn ')
но ничего не выходит. пишет:
Кликните здесь для просмотра всего текста
Сообщение 15281, уровень 16, состояние 1, строка 1
SQL Server заблокировал доступ к STATEMENT "OpenRowset/OpenDatasource" компонента "Ad Hoc Distributed Queries", поскольку он отключен в результате настройки конфигурации безопасности сервера. Использование "Ad Hoc Distributed Queries" может быть разрешено администратором при помощи хранимой процедуры sp_configure. Дополнительные сведения о включении "Ad Hoc Distributed Queries" см. в разделе "Настройка контактной зоны" в электронной документации по SQL Server.


Как быть?(

Добавлено через 18 минут
Ice_and_Fire,

заработало другое:
SELECT * FROM OPENquery(My_SQL, 'Select * from Autumn')

А как добавить данные в таблицу? Причём не из MySQL, а из SQLServer, которая на компьютере?
Т.е. добавить, например, из базы base из таблицы Клиент все поля ИД_Клиента в базу mysql (связанные сервер под именем My_SQL) в таблицу autumn в поле ИД.
Причём не совсем добавить, а обновить новыми значениями, а старые оставить?
0
 Аватар для Ice_and_Fire
512 / 298 / 37
Регистрация: 22.06.2011
Сообщений: 929
04.09.2014, 10:17
А как добавить данные в таблицу? Причём не из MySQL, а из SQLServer, которая на компьютере?
SQL
1
2
INSERT openquery(My_sql, 'SELECT [список полей] FROM [имя таблицы на my_SQL_сервере]')
        VALUES ([значения полей])
Причём не совсем добавить, а обновить новыми значениями, а старые оставить?
Update какой-нибудь, не знаю my_sql. Что-то там было типа INSERT ON DUPLICATE KEY UPDATE

Добавлено через 14 минут
"MERGE openquery" попробуй вместо "INSERT openquery". Не пробовал для линка
0
16 / 1 / 0
Регистрация: 01.08.2013
Сообщений: 121
Записей в блоге: 1
04.09.2014, 12:20  [ТС]
Ice_and_Fire,

SQL
1
2
INSERT openquery(My_sql, 'SELECT [список полей] FROM [имя таблицы на my_SQL_сервере]')
        VALUES ([значения полей])
Ну, а как мне добавить поля не из MySQL, а из SQL Server, который на компе?

SQL
1
SELECT [список полей] FROM [имя таблицы на my_SQL_сервере]
Это куда добавлять.

SQL
1
VALUES ([значения полей])
а это откуда. А как добавить из SQL SERVER?

а про merge - это здорово)
0
 Аватар для Ice_and_Fire
512 / 298 / 37
Регистрация: 22.06.2011
Сообщений: 929
04.09.2014, 15:23
Ну, а как мне добавить поля не из MySQL, а из SQL Server, который на компе?
Этот код выполняется на MS SQL сервере
[имя таблицы на my_SQL_сервере]
Это таблица mySq КУДА вставляешь
0
16 / 1 / 0
Регистрация: 01.08.2013
Сообщений: 121
Записей в блоге: 1
04.09.2014, 15:33  [ТС]
Ice_and_Fire, Пишу:
SQL
1
2
INSERT openquery(My_SQL, 'SELECT [Фамилия] FROM [Autumn]')
VALUES (dbo.Клиент.Фамилия)
Хочу вставить на MySQL в таблицу Autumn в поле Фамилия все фамилии из SQL Server из таблицы dbo.Клиент из поля Фамилия.
Не работает.
0
 Аватар для Ice_and_Fire
512 / 298 / 37
Регистрация: 22.06.2011
Сообщений: 929
04.09.2014, 15:48
SQL
1
2
INSERT openquery(My_SQL, 'SELECT [Фамилия] FROM [Autumn]')
VALUES (SELECT Фамилия FROM  dbo.Клиент)
0
16 / 1 / 0
Регистрация: 01.08.2013
Сообщений: 121
Записей в блоге: 1
04.09.2014, 15:51  [ТС]
Ice_and_Fire,

неа...

Сообщение 156, уровень 15, состояние 1, строка 2
Неправильный синтаксис около ключевого слова "SELECT".
Сообщение 102, уровень 15, состояние 1, строка 2
Неправильный синтаксис около конструкции ")".
0
 Аватар для Ice_and_Fire
512 / 298 / 37
Регистрация: 22.06.2011
Сообщений: 929
04.09.2014, 16:13
INSERT openquery(My_SQL, 'SELECT [Фамилия] FROM [Autumn]')
(SELECT Фамилия FROM dbo.Клиент)
0
16 / 1 / 0
Регистрация: 01.08.2013
Сообщений: 121
Записей в блоге: 1
04.09.2014, 16:15  [ТС]
Ice_and_Fire, то же самое... =_=
что-то старнное с жтим SQL..
0
3614 / 2135 / 756
Регистрация: 02.06.2013
Сообщений: 5,169
04.09.2014, 17:09
Цитата Сообщение от autumnrustle Посмотреть сообщение
что-то старнное с жтим SQL..
Все нормально с SQL, если сначала читать документацию.
T-SQL
1
2
INSERT openquery(My_SQL, 'SELECT [Фамилия] FROM [Autumn]')
SELECT Фамилия FROM dbo.Клиент
1
16 / 1 / 0
Регистрация: 01.08.2013
Сообщений: 121
Записей в блоге: 1
04.09.2014, 17:18  [ТС]
invm, спасибо)

заработало без скобок квадратных:

SQL
1
2
INSERT openquery(My_SQL, 'SELECT Фамилия FROM Autumn')
SELECT Фамилия FROM dbo.Клиент
Добавлено через 5 минут
invm,

может подскажете ещё в одном деле...
Для простоты (просто до этого я пытался самостоятельно разобраться) я писал не к MySQL, а просто к SQL SERVER.
Короче. Может скажете, как быть:

Есть запрос:

SQL
1
2
3
4
5
6
7
SELECT Обращения.ИД_Обращения, Заказанные_гены.ИД_Аллеля, Аллели.Аллель, Обращения.Дата_поступления, Обращения.Готов, Заказанные_гены.[Считать?], Аллель2 =
CASE
WHEN Аллели.Аллель = '-' THEN '1'
ELSE '0'
END
FROM Обращения INNER JOIN (Аллели INNER JOIN Заказанные_гены ON Аллели.ИД_Аллеля = Заказанные_гены.ИД_Аллеля) ON Обращения.ИД_Обращения = Заказанные_гены.ИД_Обращения
WHERE (((Обращения.Готов)= '0' ) AND ((Заказанные_гены.[Считать?])='1'));
Он выводит 1 в отдельном столбце, если Аллель равен -. Если вписано что-то другое, то пишет 0. Это нужно для того, чобы посчитать потом остаток работ для каждого обращения каждого клиента.
Так вот. А как мне теперь в другом запросе вызвать этот запрос, вставить Аллель2 и просуммировать его?
0
3614 / 2135 / 756
Регистрация: 02.06.2013
Сообщений: 5,169
04.09.2014, 17:26
Цитата Сообщение от autumnrustle Посмотреть сообщение
А как мне теперь в другом запросе вызвать этот запрос
Создать представление и использовать его в нужных местах.
1
16 / 1 / 0
Регистрация: 01.08.2013
Сообщений: 121
Записей в блоге: 1
04.09.2014, 23:01  [ТС]
invm,

мг. Не знал о таком) Спасибо.

И ещё вопрос - можно ли будет результат запроса с ипользованием представления, записать потом в таблицу в определённое поле?

Добавлено через 5 часов 30 минут
invm,

создал представление count_ost

SQL
1
2
3
4
5
6
7
SELECT dbo.Обращения.ИД_Обращения, dbo.Заказанные_гены.ИД_Аллеля, dbo.Аллели.Аллель, dbo.Обращения.Дата_поступления, dbo.Обращения.Готов, 
dbo.Заказанные_гены.[Считать?], CASE WHEN Аллели.Аллель = '-' THEN 1 ELSE 0 END AS Expr1
FROM dbo.Обращения INNER JOIN
dbo.Аллели INNER JOIN
dbo.Заказанные_гены ON dbo.Аллели.ИД_Аллеля = dbo.Заказанные_гены.ИД_Аллеля ON 
dbo.Обращения.ИД_Обращения = dbo.Заказанные_гены.ИД_Обращения
WHERE (dbo.Обращения.Готов = '0') AND (dbo.Заказанные_гены.[Считать?] = '1')
Запрос на добавление на связанном сервере MySQL


SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
USE base;
GO
 
INSERT openquery(My_SQL, 'SELECT ИД_Клиента, ИД_Обращения, Имя, Фамилия, Номер_образца, Дата_поступления, Осталось, ДНК, Паспорт, Протокол FROM Autumn')
SELECT Клиент.ИД_Клиента, Обращения.ИД_Обращения, Клиент.Имя, Клиент.Фамилия, Обращения.Номер_образца, Обращения.Дата_поступления, 
SUM(count_ost.Expr1) AS Остлось, CASE WHEN Обращения.ДНК = '1' THEN 'Да' ELSE 'Нет' END AS 'ДНК?', 
CASE WHEN Обращения.Паспорт = '1' THEN 'Да' ELSE 'Нет' END AS 'Паспорт?', 
CASE WHEN Обращения.Протокол = '1' THEN 'Да' ELSE 'Нет' END AS 'Протокол?'
FROM Клиент INNER JOIN
Обращения ON Клиент.ИД_Клиента = Обращения.ИД_Клиента INNER JOIN
count_ost ON Обращения.ИД_Обращения = count_ost.ИД_Обращения
GROUP BY Клиент.ИД_Клиента, Обращения.ИД_Обращения, Клиент.Имя, Обращения.Номер_образца, Обращения.Дата_поступления, Обращения.ДНК, 
Обращения.Паспорт, Обращения.Протокол, Клиент.Фамилия
Вот только первые три поля он обрезает - вставляет нули в числовые значения, а в Имя - пусто. Хотя сам запрос SELECT работает нормально. В чём дело?
0
0 / 0 / 0
Регистрация: 05.04.2015
Сообщений: 2
05.04.2015, 01:44
всем здравствуйте

подскажите - дибильный может быть вопрос - бьюсь третий час - не могу создать связанный сервер в ms sql
пишет такую ошибку

ЗАГОЛОВОК: Microsoft SQL Server Management Studio
------------------------------

Ошибка соединения со связанным сервером.

------------------------------
ДОПОЛНИТЕЛЬНЫЕ СВЕДЕНИЯ:

При выполнении инструкции или пакета Transact-SQL возникло исключение. (Microsoft.SqlServer.ConnectionInfo)

------------------------------

Не удалось проинициализировать объект источника данных поставщика OLE DB "MSDASQL" для связанного сервера "LINKED_MYSQL".
Поставщик OLE DB "MSDASQL" для связанного сервера "LINKED_MYSQL" вернул сообщение "[Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию". (Microsoft SQL Server, ошибка: 7303)

Чтобы получить справку, щелкните: http://go.microsoft.com/fwlink... nkId=20476

------------------------------
КНОПКИ:

ОК
------------------------------


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

Добавлено через 1 час 36 минут
вроде как создать корректно получилось - теперь другая беда

ЗАГОЛОВОК: Microsoft SQL Server Management Studio
------------------------------

Ошибка соединения со связанным сервером.

------------------------------
ДОПОЛНИТЕЛЬНЫЕ СВЕДЕНИЯ:

При выполнении инструкции или пакета Transact-SQL возникло исключение. (Microsoft.SqlServer.ConnectionInfo)

------------------------------

Поставщик OLE DB "MySQL_LINK" не зарегистрирован. (Microsoft SQL Server, ошибка: 7403)

Чтобы получить справку, щелкните: http://go.microsoft.com/fwlink... nkId=20476

------------------------------
КНОПКИ:

ОК
------------------------------


причем вроде как регистрацию выполнил как по этой сцылке
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.04.2015, 01:44
Помогаю со студенческими работами здесь

Как обеспечить взаимодействие Windows Forms и Webservice
Создаю проект Windows Application. Добавляю ссылку на Web-сервис (мой.jpg). Но сервис не работает. В чужом приложении (чужой.jpg)...

Microsoft SQL Server Management studio 17 не подключается к mysql server 5.7
Проще говоря studio его вообще не видит, пишу чтобы подключился (имя указываю то, которое вводил при установки сервера), вообще список...

Взаимодействие веб-сервиса asmx и SQL Server 2005
привет! извиняюсь, что данное сообщение находится на другом форуме, т.к. так мне было легче тут отписаться)) , и там в сообшении есть...

Как подключиться к базе данных MySQL через Microsoft SQL Server Management Studio 18
База данных находиться на удаленном сервере. Microsoft SQL Server Management Studio 18 на личном ПК. Админка на сервере ISPManager. ...

ComboBox и поля синхронного просмотра. Взаимодействие через ADO с БД MS SQL Server
Здравствуйте! Пишу первую программу на C# с использованием технологии ADO. Загрузил данные в таблицу DataGridView. Эта таблица отображает...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru