📄 sqlstateclientmanager.cs
字号:
TempUpdateStateItemShort
- Used when updating a session state with size <= 7000 bytes
TempUpdateStateItemShortNullLong
- Used when updating a session state where original size > 7000 bytes but new size <= 7000 bytes
*/
class SqlStateConnection : IDisposable {
SqlConnection _sqlConnection;
SqlCommand _cmdTempGet;
SqlCommand _cmdTempGetExclusive;
SqlCommand _cmdTempReleaseExclusive;
SqlCommand _cmdTempInsertShort;
SqlCommand _cmdTempInsertLong;
SqlCommand _cmdTempUpdateShort;
SqlCommand _cmdTempUpdateShortNullLong;
SqlCommand _cmdTempUpdateLong;
SqlCommand _cmdTempUpdateLongNullShort;
SqlCommand _cmdTempRemove;
SqlCommand _cmdTempResetTimeout;
SqlCommand _cmdTempInsertUninitializedItem;
SqlPartitionInfo _partitionInfo;
internal SqlStateConnection(SqlPartitionInfo partitionInfo) {
//Debug.Trace("SessionStateConnectionIdentity", "Connecting under " + WindowsIdentity.GetCurrent().Name);
_partitionInfo = partitionInfo;
_sqlConnection = new SqlConnection(_partitionInfo.SqlConnectionString);
try {
_sqlConnection.Open();
}
catch (Exception e) {
SqlConnection connection = _sqlConnection;
SqlException sqlExpt = e as SqlException;
_sqlConnection = null;
if (sqlExpt != null &&
(sqlExpt.Number == SQL_LOGIN_FAILED ||
sqlExpt.Number == SQL_LOGIN_FAILED_2 ||
sqlExpt.Number == SQL_LOGIN_FAILED_3)) {
string user;
SqlConnectionStringBuilder scsb = new SqlConnectionStringBuilder(partitionInfo.SqlConnectionString);
if (scsb.IntegratedSecurity) {
user = WindowsIdentity.GetCurrent().Name;
}
else {
user = scsb.UserID;
}
HttpException outerException = new HttpException(
SR.GetString(SR.Login_failed_sql_session_database, user ), e);
e = outerException;
}
SqlSessionStateStore.ThrowSqlConnectionException(connection, e);
}
try {
//PerfCounters.IncrementCounter(AppPerfCounter.SESSION_SQL_SERVER_CONNECTIONS);
}
catch {
Dispose();
throw;
}
}
internal SqlCommand TempGet {
get {
if (_cmdTempGet == null) {
SqlParameter p;
_cmdTempGet = new SqlCommand("dbo.TempGetStateItem3", _sqlConnection);
_cmdTempGet.CommandType = CommandType.StoredProcedure;
_cmdTempGet.CommandTimeout = s_commandTimeout;
// Use a different set of parameters for the sprocs that support GetLockAge
if ((_partitionInfo.SupportFlags & SupportFlags.GetLockAge) != 0) {
_cmdTempGet.Parameters.Add(new SqlParameter("@id", SqlDbType.NVarChar, ID_LENGTH));
p = _cmdTempGet.Parameters.Add(new SqlParameter("@itemShort", SqlDbType.VarBinary, ITEM_SHORT_LENGTH));
p.Direction = ParameterDirection.Output;
p = _cmdTempGet.Parameters.Add(new SqlParameter("@locked", SqlDbType.Bit));
p.Direction = ParameterDirection.Output;
p = _cmdTempGet.Parameters.Add(new SqlParameter("@lockAge", SqlDbType.Int));
p.Direction = ParameterDirection.Output;
p = _cmdTempGet.Parameters.Add(new SqlParameter("@lockCookie", SqlDbType.Int));
p.Direction = ParameterDirection.Output;
p = _cmdTempGet.Parameters.Add(new SqlParameter("@actionFlags", SqlDbType.Int));
p.Direction = ParameterDirection.Output;
}
else {
_cmdTempGet.Parameters.Add(new SqlParameter("@id", SqlDbType.NVarChar, ID_LENGTH));
p = _cmdTempGet.Parameters.Add(new SqlParameter("@itemShort", SqlDbType.VarBinary, ITEM_SHORT_LENGTH));
p.Direction = ParameterDirection.Output;
p = _cmdTempGet.Parameters.Add(new SqlParameter("@locked", SqlDbType.Bit));
p.Direction = ParameterDirection.Output;
p = _cmdTempGet.Parameters.Add(new SqlParameter("@lockDate", SqlDbType.DateTime));
p.Direction = ParameterDirection.Output;
p = _cmdTempGet.Parameters.Add(new SqlParameter("@lockCookie", SqlDbType.Int));
p.Direction = ParameterDirection.Output;
p = _cmdTempGet.Parameters.Add(new SqlParameter("@actionFlags", SqlDbType.Int));
p.Direction = ParameterDirection.Output;
}
}
return _cmdTempGet;
}
}
internal SqlCommand TempGetExclusive {
get {
if (_cmdTempGetExclusive == null) {
SqlParameter p;
_cmdTempGetExclusive = new SqlCommand("dbo.TempGetStateItemExclusive3", _sqlConnection);
_cmdTempGetExclusive.CommandType = CommandType.StoredProcedure;
_cmdTempGetExclusive.CommandTimeout = s_commandTimeout;
// Use a different set of parameters for the sprocs that support GetLockAge
if ((_partitionInfo.SupportFlags & SupportFlags.GetLockAge) != 0) {
_cmdTempGetExclusive.Parameters.Add(new SqlParameter("@id", SqlDbType.NVarChar, ID_LENGTH));
p = _cmdTempGetExclusive.Parameters.Add(new SqlParameter("@itemShort", SqlDbType.VarBinary, ITEM_SHORT_LENGTH));
p.Direction = ParameterDirection.Output;
p = _cmdTempGetExclusive.Parameters.Add(new SqlParameter("@locked", SqlDbType.Bit));
p.Direction = ParameterDirection.Output;
p = _cmdTempGetExclusive.Parameters.Add(new SqlParameter("@lockAge", SqlDbType.Int));
p.Direction = ParameterDirection.Output;
p = _cmdTempGetExclusive.Parameters.Add(new SqlParameter("@lockCookie", SqlDbType.Int));
p.Direction = ParameterDirection.Output;
p = _cmdTempGetExclusive.Parameters.Add(new SqlParameter("@actionFlags", SqlDbType.Int));
p.Direction = ParameterDirection.Output;
}
else {
_cmdTempGetExclusive.Parameters.Add(new SqlParameter("@id", SqlDbType.NVarChar, ID_LENGTH));
p = _cmdTempGetExclusive.Parameters.Add(new SqlParameter("@itemShort", SqlDbType.VarBinary, ITEM_SHORT_LENGTH));
p.Direction = ParameterDirection.Output;
p = _cmdTempGetExclusive.Parameters.Add(new SqlParameter("@locked", SqlDbType.Bit));
p.Direction = ParameterDirection.Output;
p = _cmdTempGetExclusive.Parameters.Add(new SqlParameter("@lockDate", SqlDbType.DateTime));
p.Direction = ParameterDirection.Output;
p = _cmdTempGetExclusive.Parameters.Add(new SqlParameter("@lockCookie", SqlDbType.Int));
p.Direction = ParameterDirection.Output;
p = _cmdTempGetExclusive.Parameters.Add(new SqlParameter("@actionFlags", SqlDbType.Int));
p.Direction = ParameterDirection.Output;
}
}
return _cmdTempGetExclusive;
}
}
internal SqlCommand TempReleaseExclusive {
get {
if (_cmdTempReleaseExclusive == null) {
/* ReleaseExlusive */
_cmdTempReleaseExclusive = new SqlCommand("dbo.TempReleaseStateItemExclusive", _sqlConnection);
_cmdTempReleaseExclusive.CommandType = CommandType.StoredProcedure;
_cmdTempReleaseExclusive.CommandTimeout = s_commandTimeout;
_cmdTempReleaseExclusive.Parameters.Add(new SqlParameter("@id", SqlDbType.NVarChar, ID_LENGTH));
_cmdTempReleaseExclusive.Parameters.Add(new SqlParameter("@lockCookie", SqlDbType.Int));
}
return _cmdTempReleaseExclusive;
}
}
internal SqlCommand TempInsertLong {
get {
if (_cmdTempInsertLong == null) {
_cmdTempInsertLong = new SqlCommand("dbo.TempInsertStateItemLong", _sqlConnection);
_cmdTempInsertLong.CommandType = CommandType.StoredProcedure;
_cmdTempInsertLong.CommandTimeout = s_commandTimeout;
_cmdTempInsertLong.Parameters.Add(new SqlParameter("@id", SqlDbType.NVarChar, ID_LENGTH));
_cmdTempInsertLong.Parameters.Add(new SqlParameter("@itemLong", SqlDbType.Image, 8000));
_cmdTempInsertLong.Parameters.Add(new SqlParameter("@timeout", SqlDbType.Int));
}
return _cmdTempInsertLong;
}
}
internal SqlCommand TempInsertShort {
get {
/* Insert */
if (_cmdTempInsertShort == null) {
_cmdTempInsertShort = new SqlCommand("dbo.TempInsertStateItemShort", _sqlConnection);
_cmdTempInsertShort.CommandType = CommandType.StoredProcedure;
_cmdTempInsertShort.CommandTimeout = s_commandTimeout;
_cmdTempInsertShort.Parameters.Add(new SqlParameter("@id", SqlDbType.NVarChar, ID_LENGTH));
_cmdTempInsertShort.Parameters.Add(new SqlParameter("@itemShort", SqlDbType.VarBinary, ITEM_SHORT_LENGTH));
_cmdTempInsertShort.Parameters.Add(new SqlParameter("@timeout", SqlDbType.Int));
}
return _cmdTempInsertShort;
}
}
internal SqlCommand TempUpdateLong {
get {
if (_cmdTempUpdateLong == null) {
_cmdTempUpdateLong = new SqlCommand("dbo.TempUpdateStateItemLong", _sqlConnection);
_cmdTempUpdateLong.CommandType = CommandType.StoredProcedure;
_cmdTempUpdateLong.CommandTimeout = s_commandTimeout;
_cmdTempUpdateLong.Parameters.Add(new SqlParameter("@id", SqlDbType.NVarChar, ID_LENGTH));
_cmdTempUpdateLong.Parameters.Add(new SqlParameter("@itemLong", SqlDbType.Image, 8000));
_cmdTempUpdateLong.Parameters.Add(new SqlParameter("@timeout", SqlDbType.Int));
_cmdTempUpdateLong.Parameters.Add(new SqlParameter("@lockCookie", SqlDbType.Int));
}
return _cmdTempUpdateLong;
}
}
internal SqlCommand TempUpdateShort {
get {
/* Update */
if (_cmdTempUpdateShort == null) {
_cmdTempUpdateShort = new SqlCommand("dbo.TempUpdateStateItemShort", _sqlConnection);
_cmdTempUpdateShort.CommandType = CommandType.StoredProcedure;
_cmdTempUpdateShort.CommandTimeout = s_commandTimeout;
_cmdTempUpdateShort.Parameters.Add(new SqlParameter("@id", SqlDbType.NVarChar, ID_LENGTH));
_cmdTempUpdateShort.Parameters.Add(new SqlParameter("@itemShort", SqlDbType.VarBinary, ITEM_SHORT_LENGTH));
_cmdTempUpdateShort.Parameters.Add(new SqlParameter("@timeout", SqlDbType.Int));
_cmdTempUpdateShort.Parameters.Add(new SqlParameter("@lockCookie", SqlDbType.Int));
}
return _cmdTempUpdateShort;
}
}
internal SqlCommand TempUpdateShortNullLong {
get {
if (_cmdTempUpdateShortNullLong == null) {
_cmdTempUpdateShortNullLong = new SqlCommand("dbo.TempUpdateStateItemShortNullLong", _sqlConnection);
_cmdTempUpdateShortNullLong.CommandType = CommandType.StoredProcedure;
_cmdTempUpdateShortNullLong.CommandTimeout = s_commandTimeout;
_cmdTempUpdateShortNullLong.Parameters.Add(new SqlParameter("@id", SqlDbType.NVarChar, ID_LENGTH));
_cmdTempUpdateShortNullLong.Parameters.Add(new SqlParameter("@itemShort", SqlDbType.VarBinary, ITEM_SHORT_LENGTH));
_cmdTempUpdateShortNullLong.Parameters.Add(new SqlParameter("@timeout", SqlDbType.Int));
_cmdTempUpdateShortNullLong.Parameters.Add(new SqlParameter("@lockCookie", SqlDbType.Int));
}
return _cmdTempUpdateShortNullLong;
}
}
internal SqlCommand TempUpdateLongNullShort {
get {
if (_cmdTempUpdateLongNullShort == null) {
_cmdTempUpdateLongNullShort = new SqlCommand("dbo.TempUpdateStateItemLongNullShort", _sqlConnection);
_cmdTempUpdateLongNullShort.CommandType = CommandType.StoredProcedure;
_cmdTempUpdateLongNullShort.CommandTimeout = s_commandTimeout;
_cmdTempUpdateLongNullShort.Parameters.Add(new SqlParameter("@id", SqlDbType.NVarChar, ID_LENGTH));
_cmdTempUpdateLongNullShort.Parameters.Add(new SqlParameter("@itemLong", SqlDbType.Image, 8000));
_cmdTempUpdateLongNullShort.Parameters.Add(new SqlParameter("@timeout", SqlDbType.Int));
_cmdTempUpdateLongNullShort.Parameters.Add(new SqlParameter("@lockCookie", SqlDbType.Int));
}
return _cmdTempUpdateLongNullShort;
}
}
internal SqlCommand TempRemove {
get {
if (_cmdTempRemove == null) {
/* Remove */
_cmdTempRemove = new SqlCommand("dbo.TempRemoveStateItem", _sqlConnection);
_cmdTempRemove.CommandType = CommandType.StoredProcedure;
_cmdTempRemove.CommandTimeout = s_commandTimeout;
_cmdTempRemove.Parameters.Add(new SqlParameter("@id", SqlDbType.NVarChar, ID_LENGTH));
_cmdTempRemove.Parameters.Add(new SqlParameter("@lockCookie", SqlDbType.Int));
}
return _cmdTempRemove;
}
}
internal SqlCommand TempInsertUninitializedItem {
get {
if (_cmdTempInsertUninitializedItem == null) {
_cmdTempInsertUninitializedItem = new SqlCommand("dbo.TempInsertUninitializedItem", _sqlConnection);
_cmdTempInsertUninitializedItem.CommandType = CommandType.StoredProcedure;
_cmdTempInsertUninitializedItem.CommandTimeout = s_commandTimeout;
_cmdTempInsertUninitializedItem.Parameters.Add(new SqlParameter("@id", SqlDbType.NVarChar, ID_LENGTH));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -