我们有一个 SQL 作业,当作为标准用户(具有适当的访问权限)运行时,会返回标题中看到的错误。但是,当我们将作业更改为以“sa”运行时,它可以完美运行。相同的参数被传递给 OPENROWSET 函数以连接到 OraOLEDB.Oracle 提供程序(它使用相同的 Oracle ID/PW 登录)。它不是链接的 Oracle 服务器;它是临时的。
有没有人见过这样的东西?
运行 Oracle 11g、SQL 2008 R1
我们有一个 SQL 作业,当作为标准用户(具有适当的访问权限)运行时,会返回标题中看到的错误。但是,当我们将作业更改为以“sa”运行时,它可以完美运行。相同的参数被传递给 OPENROWSET 函数以连接到 OraOLEDB.Oracle 提供程序(它使用相同的 Oracle ID/PW 登录)。它不是链接的 Oracle 服务器;它是临时的。
有没有人见过这样的东西?
运行 Oracle 11g、SQL 2008 R1
该错误表明正在创建的数据库会话数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>>