sp_setapprole: Für den aktuellen Befehl ist ein schwerwiegender Fehler aufgetreten. Löschen Sie eventuelle Ergebnisse.

21/12/2007 - 00:45 von Lutz Elßner | Report spam
Ein WebService verbindet sich zu einem SQL Server 2005 Express.
Bei jedem WebRequest wird eine neue SqlConnection erzeugt und mit USING /
END USING, jedoch nicht mit Close, wieder geschlossen.
Der Connection String ist immer gleich und verwendet integrierte Sicherheit.
Nach dem Öffnen der Connection wird mit einer ApplicationRole die Identitàt
gewechselt.

Dann kann ich ein oder zweimal die selbe WebMethod vom Client erfolgreich
aufrufen.

Spàtestens beim dritten Aufruf des Webservice kommt der untere Fehler, beim
vierten Mal funktioniert es dann wieder..

Was ist falsch?
Vertràgt er nicht mehrere Anmeldungen nacheinander mit der selben
Application Role?
Obwohl die vorige Connection beendet ist.

Lutz


Me.mCon.Open()
With New SqlCommand("sp_setapprole", Me.mCon)
.CommandType = CommandType.StoredProcedure
.Parameters.AddWithValue("@rolename", user.Name)
.Parameters.AddWithValue("@password", password)
.ExecuteNonQuery()
End With


Für den aktuellen Befehl ist ein schwerwiegender Fehler aufgetreten. Löschen
Sie eventuelle Ergebnisse.
bei System.Data.SqlClient.SqlConnection.OnError(SqlException exception,
Boolean breakConnection)
bei System.Data.SqlClient.SqlInternalConnection.OnError(SqlException
exception, Boolean breakConnection)
bei
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObjec
t stateObj)
bei System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand
cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet
bulkCopyHandler, TdsParserStateObject stateObj)
bei System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds,
RunBehavior runBehavior, String resetOptionsString)
bei System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior
cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
bei System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior
cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method,
DbAsyncResult result)
bei System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult
result, String methodName, Boolean sendToPipe)
bei System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
 

Lesen sie die antworten

#1 Lutz Elßner
21/12/2007 - 12:05 | Warnen spam
Ich habe das Gefühl, dass der schwerwiegende Fehler immer auftritt, wenn die
Webanwendung eine vorhandene Connection aus dem Connection Pool bekommt, die
vorher mit einer Application Role in eine andere Identitàt umgeschaltet war.

Ist das Problem bekannt?
Wie kann man es lösen, ohne das Connectionpooling ganz abzuschalten?

Lutz

Ähnliche fragen