读书人

[急]Remoting + MSSQL 服务端程序[疑难

发布时间: 2012-02-29 16:44:10 作者: rapoo

[急]Remoting + MSSQL 服务端程序[疑难杂症]?
//启动Remoting
HttpChannel MyHttpChannel = new HttpChannel(50001);
ChannelServices.RegisterChannel(MyHttpChannel, false);
RemotingConfiguration.RegisterWellKnownServiceType(Type.GetType( "Service ", true, false), "MyServer ", WellKnownObjectMode.SingleCall);


//调用MSSQL

public int Address_Degree(string S_NAME, string M_NAME, int A_PART)
{
SqlParameter[] Parameters = { new DB.Server().S_NAME, new DB.Movie().M_NAME, new DB.Address().A_PART };
Parameters[0].Value = S_NAME;
Parameters[1].Value = M_NAME;
Parameters[2].Value = A_PART;
return new MSSQL(new DB().Connstring).ProcedureRun( "Address_Degree ", Parameters);
}

/// <summary>
/// 处理 Microsoft Sql Server 2000 的数据类。
/// </summary>
public class MSSQL
{
private SqlConnection Conn;

public MSSQL(string ConnString)
{
Conn = new SqlConnection(ConnString);
}

#region Error_Handler
public void Error_Handler(string cmdText, Exception e)
{
try
{
File.AppendAllText(System.Environment.CurrentDirectory + @ "\ " + DateTime.Now.ToString( "yyyyMMdd ") + ".txt ", DateTime.Now.ToString() + " " + cmdText + " " + e.Message + Environment.NewLine);


}
catch (Exception)
{

}
}
#endregion

#region ExecuteReader
public ArrayList ExecuteReader(string cmdText)
{
SqlCommand cmd = new SqlCommand(cmdText, Conn);
ArrayList Arr = new ArrayList();
try
{
cmd.Connection.Open();
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
Arr.Add(dr[0]);
}
dr.Close();
}
catch (SqlException e)


{
Error_Handler(cmdText, e);
}
finally
{
cmd.Dispose();
cmd.Connection.Close();
}
return Arr;
}
#endregion

//Int

#region ProcedureRun
public int ProcedureRun(string ProcedureName)
{
SqlCommand cmd = new SqlCommand(ProcedureName, Conn);
int row = 0;
try
{
cmd.Connection.Open();
cmd.CommandType = CommandType.StoredProcedure;
row = cmd.ExecuteNonQuery();


}
catch (SqlException e)
{
Error_Handler(ProcedureName, e);
}
finally
{
cmd.Dispose();
cmd.Connection.Close();
}
return row;

}
#endregion

//DataSet

#region ProcedureRun
public DataSet ProcedureRun(string ProcedureName, string TablenName)
{
SqlDataAdapter cmd = new SqlDataAdapter(ProcedureName, Conn);
cmd.SelectCommand.CommandType = CommandType.StoredProcedure;
DataSet ds = new DataSet();
try
{
Conn.Open();


cmd.Fill(ds, TablenName);
}
catch (System.Data.SqlClient.SqlException e)
{
Error_Handler(ProcedureName, e);
}
finally
{
cmd.Dispose();
Conn.Close();
}
return ds;

}
#endregion

//Object

#region GetSingle
/// <summary>
/// 执行查询,并返回查询所返回的结果集中第一行的第一列。忽略其他列或行。
/// </summary>
/// <param name= "SQLString "> </param>
/// <returns> </returns>
public object GetSingle(string ProcedureName, SqlParameter[] Parameters)
{
SqlCommand cmd = new SqlCommand(ProcedureName, Conn);
object Temp = null;


try
{
cmd.Connection.Open();
cmd.Parameters.AddRange(Parameters);
cmd.CommandType = CommandType.StoredProcedure;
Temp = cmd.ExecuteScalar();
if ((Object.Equals(Temp, null)) ¦ ¦ (Object.Equals(Temp, System.DBNull.Value)))
{
return null;
}
}
catch (System.Data.SqlClient.SqlException e)
{
Error_Handler(ProcedureName, e);
}
finally
{
cmd.Dispose();
cmd.Connection.Close();


}
return Temp;
}
#endregion

//ArrayList

#region ProcedureRun
public ArrayList ProcedureRun(string ProcedureName, bool IsField)
{
SqlCommand cmd = new SqlCommand(ProcedureName, Conn);
ArrayList Arr = new ArrayList();

cmd.CommandType = CommandType.StoredProcedure;

try
{
cmd.Connection.Open();
SqlDataReader dr = cmd.ExecuteReader();
if (IsField)
{
#region Field
while (dr.Read())
{


Arr.Add(dr[0].ToString());
}
#endregion
}
else
{
#region Row
if (dr.Read())
{
for (int i = 0; i < dr.FieldCount; i++)
{
Arr.Add(dr[i]);
}
}


#endregion
}
dr.Close();
}
catch (SqlException e)
{
Error_Handler(ProcedureName, e);
}
finally
{
cmd.Dispose();
cmd.Connection.Close();
}
return Arr;

}
#endregion
}

说明:
用户人数300以上;
MSSQL设置:全部默认设置

症状:
运行一定时间后出现 "超时时间已到。在操作完成之前超时时间已过或服务器未响应。 ",一旦出现错误后服务端程序再也不能进行服务了,所有操作将报同样错误.把服务端程序重新启动下又OK了。



[解决办法]
mark
我正考虑用remorting,就怕出现这个问题,期待解决,关注
[解决办法]
看看是不是数据库处理不过来的问题
[解决办法]
mark
[解决办法]
自定义负载平衡试试

读书人网 >C#

热点推荐