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

Откуда:
Сообщений: 4
Здравствуйте, господа :)

Зарегался тут по очень важному и животрепещущему для меня вопросу. Надеюсь на вашу информационную поддержку :)

В общем в рамках дипломной работы, помимо множества проблем, я столкнулся с одной еще более изощренной. Опишу суть кратко:
Есть приложение - сервер, который выступает в качестве посредника между клиентами и БД MSSQL. Т.е. этот сервер-"агент", как я его называю, выполняет функции балансировки нагрузки (это в общем-то задумка, но из-за проблемы, которую я тут описываю, я пока к ней не могу приблизиться) на кластер MSSQL. В общем для начала, я хочу организовать т.н. "проксирование" трафика sql. Т.е. не парсить sql запросы от клиентов, а пока что напрямую передавать (перенаправлять) пакеты данных на MSSQL инстанс. Без изменения их структуры. Ну т.е. я хочу коннектиться из sql management studio (для начала) к моему серверу-"агенту", и совершать некие "простейшие" действия хотя бы.

Вопрос о том, как передавать данные у меня не стоит - самый близкий для меня уровень сейчас - сокеты. Коннектиться к порту MSSQL сервера через сокеты и передавать байты.

Вот собственно и корень проблемы: возможно ли соединиться с sql сервером через сокеты, чтобы передавать и получать от него пакеты данных? Возможно ли вообще это? Я имею в виду, если работать с байтами по протоколу MS-TDS (да, я в курсе про него).
Если это возможно, может кто-нибудь подсказать (если вас это не затруднит :)) какой-нибудь алгоритм, или рассказать более детально, как происходит пошагово соединение и получение данных от сервера?

Я вот тут задал вопрос (Link), где описал аналогичные действия. Там мне дали ссылку на аналогичный вопрос, в котором автор пытался соединиться к серверу через сокеты тоже. Но он передавал там т.н. connectionString, когда в таком случае необходимо обмениваться байтами (ну по-крайней мере не теми, которыми обменивался он :)).

Есть некая подобная реализация - sqlrelay. Но по исходникам ядра серверной части - соединение идет с помощью SqlDriverConnect и т.п. мишуре, т.е. идет парсинг запросов. А я пока хочу работать с трафиком напрямую.

Извините за большой текст, просто хотел подробно описать проблему :).
18 окт 14, 13:07    [16724766]     Ответить | Цитировать Сообщить модератору
 Re: C++ + sockets + SQL  [new]
skynet_v
Member

Откуда:
Сообщений: 4
Прошу прощения, не нашел кнопки редактирования сообщения.
Забыл сказать, что пишу на C++ с использованием либы boost.

П.С. Возможно я ошибся веткой форума. :(
18 окт 14, 13:12    [16724775]     Ответить | Цитировать Сообщить модератору
 Re: C++ + sockets + SQL  [new]
aleks2
Guest
1. MS SQL не принимает "абы какие пакеты".
2. Шоб MS SQL начал "принимать" - надо исполнить танец "аутентификация".
3. Невозможно исполнить танец "аутентификация" просто передавая пакеты от ДРУГОГО компутера ибо это означало бы наличие жуткой дыры в системе "аутентификация".

ЗЫ. Но выход есть! Надо поднять роутер TCP\IP на "посреднике" и объявить его "прокси".
18 окт 14, 13:33    [16724814]     Ответить | Цитировать Сообщить модератору
 Re: C++ + sockets + SQL  [new]
skynet_v
Member

Откуда:
Сообщений: 4
aleks2,

Имеешь в виду изменять адрес назначения в пакете на sql'евский?
18 окт 14, 13:39    [16724823]     Ответить | Цитировать Сообщить модератору
 Re: C++ + sockets + SQL  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
"у меня не стоит - самый близкий для меня"

Студент, специалист по сокетам решил сделать нечто, от чего Microsoft стало бы стыдно
18 окт 14, 14:10    [16724862]     Ответить | Цитировать Сообщить модератору
 Re: C++ + sockets + SQL  [new]
skynet_v
Member

Откуда:
Сообщений: 4
+ Лол
Winnipuh, Жгу xD. Не заметил отсутствие запятой))
18 окт 14, 14:14    [16724871]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить