Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 ADO: Можно ли подсоединиться к существующему соединению?  [new]
Scor
Member

Откуда:
Сообщений: 21
Имеем программу, которая подключена к SQL-базе данных. Вопрос в следующем : можно ли как-то подключиться именно к этому соединению и выполнить в его рамках команду SQL.
Т.е как сделать новое подключение - понятно - типа MyConnection.Open('Driver=..., server=..., ...'), не понятно - можно ли подключиться к уже существующему, зная лишь его параметры и не имея ссылки на объект "Connection".
Спасибо.
5 май 04, 16:03    [663670]     Ответить | Цитировать Сообщить модератору
 Re: ADO: Можно ли подсоединиться к существующему соединению?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37101
автор
не понятно - можно ли подключиться к уже существующему, зная лишь его параметры и не имея ссылки на объект "Connection".

Нет.
5 май 04, 16:37    [663801]     Ответить | Цитировать Сообщить модератору
 Re: ADO: Можно ли подсоединиться к существующему соединению?  [new]
GreenSunrise
Member

Откуда:
Сообщений: 12310
sp_bindsession
sp_getbindtoken

Не совсем то, что вы спрашивали, но, возможно, поможет вам решить вашу задачу.
5 май 04, 16:51    [663862]     Ответить | Цитировать Сообщить модератору
 Re: ADO: Можно ли подсоединиться к существующему соединению?  [new]
Scor
Member

Откуда:
Сообщений: 21
Спасибо за ответы, действительно (sp_bindsession
sp_getbindtoken) потенциально решает часть проблем, однако в случае, если программа захватывает базу в режим Single User, тогда приконнектиться вообще не получается.
5 май 04, 17:26    [663974]     Ответить | Цитировать Сообщить модератору
 Re: ADO: Можно ли подсоединиться к существующему соединению?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37101
автор
если программа захватывает базу в режим Single User, тогда приконнектиться вообще не получается.

А как Вы думаете, зачем был сделан режим Single User? Не для того ли, чтоб никто никак не смог подконнектиться? Похоже на вопрос "У меня нету прав, но я хочу сделать. Как?"
5 май 04, 17:33    [663989]     Ответить | Цитировать Сообщить модератору
 Re: ADO: Можно ли подсоединиться к существующему соединению?  [new]
Scor
Member

Откуда:
Сообщений: 21
Сергей Алексеевич!
Вы совершенно правы, нужно попасть в базу, когда это запрещено разработчиком программы, которая и захватывает базу целиком. Но только на "грязное" чтение, не более того.
Переформулирую немного вопрос - имея все необходимые параметры подключения можно ли получить ссылку на объект типа "Connection", чтобы с помощью этой ссылки выполнять запросы?
5 май 04, 17:40    [664005]     Ответить | Цитировать Сообщить модератору
 Re: ADO: Можно ли подсоединиться к существующему соединению?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37101
автор
Вы совершенно правы, нужно попасть в базу, когда это запрещено разработчиком программы, которая и захватывает базу целиком. Но только на "грязное" чтение, не более того.
Переформулирую немного вопрос - имея все необходимые параметры подключения можно ли получить ссылку на объект типа "Connection", чтобы с помощью этой ссылки выполнять запросы?

Вряд ли это возможно в принципе. Иначе смысл в SINGLE_USER? Попросите разработчиков, чтоб они ограничивали базу в RESTRICTED_USER, если, конечно, возможно.
5 май 04, 17:53    [664055]     Ответить | Цитировать Сообщить модератору
 Re: ADO: Можно ли подсоединиться к существующему соединению?  [new]
Latuk
Member

Откуда: N 54°38', E 037°35'
Сообщений: 7310
Просто мысли:

объект типа "Connection" это место в памяти
заполненное неким особым образом с помощью специальной процедуры из библиотеки

Очевидно что эта область памяти заполняется
схожими для разных "Connection" данными
Используя свои тестовые объекты и зная ссылки на них
вычисляем эту общую для всех объектов этого типа сигнатуру
и ее смещение от начала объекта

Запускаем прогу убедившись что никакие другие проги
никаких "Connection" не открывают
и лучше сразу после перезагрузки чтобы не нарватся на "мусор"

Ищем сигнатуру.
Отступаем от сигнатуры на вычисленное смещение
Вуаля - адрес открытого к базе конекта

Осталось найти смещение в этом блоке для передачи управления
методу Execute
сделать это можно примерно таким-же способом
хотя для начала стоит напролом попытатся выполнить вызов стандартным способом

для успешного вызова Execute
следует убедится что на момент
вызова "родная" для конекта прога его не юзает.
5 май 04, 18:28    [664177]     Ответить | Цитировать Сообщить модератору
 Re: ADO: Можно ли подсоединиться к существующему соединению?  [new]
НатальяNT
Member

Откуда: Донецк
Сообщений: 12
>Вы совершенно правы, нужно попасть в базу, когда это запрещено >разработчиком программы, которая и захватывает базу целиком. Но только >на "грязное" чтение, не более того.
>Переформулирую немного вопрос - имея все необходимые параметры >подключения можно ли получить ссылку на объект типа "Connection", чтобы с >помощью этой ссылки выполнять запросы?
А почему нельзя сделать бекап рабочей базы, подключить его к тестовой и там производить не только "грязное" чтение, а все ,что угодно?
Отлаживать все запросы в любом случае нужно на тестовой базе, а то потом
проблем не оберешься и только после полной уверенности ,что они правильные ,нужно подключать их к рабочей базе, и то предварительно сделав бекап.
6 май 04, 09:57    [664814]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить