ODBC - несколько подключений из одного приложения к одному источнику данных - PullRequest
3 голосов
/ 28 апреля 2010

Я смутно помню, как где-то читал (в документации MSDN ODBC?), Что одно приложение не может установить более одного соединения с одним источником данных. Мне казалось, что мне нужно одно соединение, которым должны будут делиться все потоки приложения. Я пытался найти эту информацию, но, похоже, больше не могу ее найти. Кто-нибудь знает / помнит, как это работает?
Все это может стать проблемой в нашем приложении, поскольку некоторые его потоки будут динамически подключаться к источникам данных по своему выбору. Я не хочу видеть случайные ошибки подключения, если две из них будут одновременно подключаться к одному источнику, поэтому я хотел дважды проверить эту информацию.

Ответы [ 2 ]

2 голосов
/ 05 мая 2010

Может быть, оператор, на который вы ссылаетесь в документации MSDN , - это тот, который говорит, что только один оператор может быть активен для одного соединения. Там написано:

Несколько активных операторов на соединение

После того как SQL Server получил инструкцию, протокол SQL Server TDS не позволяет принимать какие-либо другие инструкции из этого соединения, пока не произойдет одно из следующих действий:

  • Клиентское приложение обрабатывает весь набор результатов.
  • Клиент отправляет оператору сообщение о том, что он может закрыть оставшуюся часть набора результатов.

Это означает, что, когда приложение ODBC использует набор результатов по умолчанию, SQL Server не поддерживает несколько дескрипторов активных операторов для дескриптора соединения, и в любой момент времени может быть активно обработана только одна инструкция.

Однако, когда приложение ODBC использует серверные курсоры API, драйвер может поддерживать несколько активных операторов в соединении. Когда набор строк для каждой команды курсора получен обратно на клиенте, SQL Server считает оператор выполненным и принимает другой оператор из другого дескриптора оператора над этим дескриптором соединения.

Несколько соединений в порядке. Несколько заявлений на соединение, не так хорошо.

1 голос
/ 29 апреля 2010

Нет, такого ограничения нет в самом ODBC. Возможно, что определенный драйвер может по какой-то причине ограничивать соединения, но я не знаю каких-либо ограничений в соответствии со спецификацией.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...