이 일괄 적으로 호출 할 수 없습니다 세션 보안 컨텍스트 "는이 일괄 처리에서 동시에 호출 할 수 없으므로 호출 할 수 없습니다.SQL 예외 :</p> <p>"로 가장 : 동시 배치라고 불렀다 때문에"로 가장 세션 보안 컨텍스트는 "우리의 웹 응용 프로그램에서 SQL Server 2005로 연결을 열 때, 우리는 때때로이 오류가 표시
MARS 및 연결 풀링을 사용합니다.
예외 코드는 다음 장에서 유래 :
protected SqlConnection Open()
{
SqlConnection connection = new SqlConnection();
connection.ConnectionString = m_ConnectionString;
if (connection != null)
{
try
{
connection.Open();
if (m_ExecuteAsUserName != null)
{
string sql = Format("EXECUTE AS LOGIN = {0};", m_ExecuteAsUserName);
ExecuteCommand(connection, sql);
}
}
catch (Exception exception)
{
connection.Close();
connection = null;
}
}
return connection;
}
는 I가 이전의 명령어가 아직 로그인 명령과 EXECUTE하는 것은 전송되기 전에 종료하지 않은 경우 에러가 발생되는 것을 알 수
MS Connect article 알았다. 연결이 방금 열렸 으면 어떻게 될 수 있습니까?
MARS와 이상하게 상호 작용하는 연결 풀링과 관련이 있습니까?
업데이트 : 단기간에 우리는 연결 풀을 제거 할 때마다 연결 풀을 제거하여 불량 연결을 없애고 다른 사용자에게 다시 넘겨주기 때문에 해결 방법을 구현했습니다. (이제는 5 ~ 10 회 하루에 동시 사용자 수가 적기 때문에 상당히 성가시다.) 그러나 다른 사람이 아이디어를 가지고 있다면 우리는 여전히 실제 솔루션을 찾고 있습니다.
답변 해 주셔서 감사합니다. 나는 그것이 MARS와 관련이 있어야한다는 데 동의하지만 확실하게 다중 결과 세트는 연결 단위로 존재합니까? 그리고 이전에 결과 세트를 얻지 못했습니다. 풀을 열었을지라도 새롭습니다. 두 번째 인용구에서 "가장 (impersonation)의 범위가 서버 전체"라고 말하면, 현재 연결에만 해당됩니다. – kasey
@ kasey : 내 생각에 단일 연결에는 많은 세션이 있고 EXECUTE AS는 세션마다 있습니다. 연결이 풀에서 다시 사용되면 컨텍스트 스위치가 설정되어있는 것 같습니다. hhmm. 아마도 그냥 연결 풀링과 EXECUTE AS ... 여기에 흥미로운 질문이 있습니다. :-) – gbn