我们有一个SQL作业,当以标准用户(具有适当的访问权限)运行时,返回标题中看到的错误。但是,当我们将作业更改为“sa”时,它可以完美地运行。相同的参数被传递给OPENROWSET函数以连接到OraOLEDB.Oracle提供程序(它使用相同的Oracle ID / PW登录)。它不是链接的Oracle服务器;它是临时的。
有没有人见过这样的事情?
运行Oracle 11g,SQL 2008 R1
答案 0 :(得分:3)
该错误表示根据应用程序连接的Oracle数据库用户的SESSIONS_PER_USER
限制,创建的数据库会话数多于允许的数据库会话数。这旨在限制特定Oracle数据库用户在任何时候都可以打开的会话数。我很难想象为什么运行作业的SQL Server用户会影响创建的Oracle数据库会话的数量。
有问题的Oracle用户的SESSIONS_PER_USER
限制是什么
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'
您是否可以监控Oracle中的GV$SESSION
表,以查看整个过程中有问题的用户实际存在多少个会话,以确保没有真正创建问题的一两个错误会话而不是SQL Server用户名更改导致和解决问题?
SELECT COUNT(*)
FROM gv$session
WHERE username = <<oracle database user name>>