SQL 2008 OraOLEDB.Oracle Provider, возвращающий «превышен одновременный лимит SESSIONS_PER_USER» - PullRequest
1 голос
/ 11 ноября 2011

У нас есть задание SQL, которое при запуске от имени обычного пользователя (с соответствующим доступом) возвращает ошибку, указанную в заголовке. Однако, когда мы меняем задание на «sa», оно работает безупречно. Те же параметры передаются в функцию OPENROWSET для подключения к провайдеру OraOLEDB.Oracle (он использует тот же Oracle ID / PW для входа в систему). Это НЕ связанный сервер Oracle; это ad-hoc.

Кто-нибудь когда-нибудь видел что-нибудь подобное раньше?

Запуск Oracle 11g, SQL 2008 R1

1 Ответ

3 голосов
/ 11 ноября 2011

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

Каков предел SESSIONS_PER_USER для рассматриваемого пользователя Oracle

SELECT limit
  FROM dba_profiles p
       JOIN dba_users u ON (p.profile = u.profile)
 WHERE u.username = <<oracle database user name>>
   AND p.resource_name = 'SESSIONS_PER_USER'

Можете ли вы отслеживать таблицу GV$SESSION в Oracle, чтобы увидеть, сколько фактически существует сессий для рассматриваемого пользователяна протяжении всего процесса, чтобы убедиться, что не существует случайного или двух сеансов, которые действительно создают проблему, а не изменение имени пользователя SQL Server, вызывающее и решающее проблему?

SELECT COUNT(*)
  FROM gv$session
 WHERE username = <<oracle database user name>>
...