我正在使用 JOB 来持续观察表数据。在 JOB 内部,我调用 SQLCLR SP。SQLCLR SP 将运行。在 while 循环之前,我将打开 SQL 连接。在 for 循环中,我将仅在一个连接中访问数据库 1000-10000 次。在我的工作完成之前,我不会关闭数据库连接。
SqlConnection connection = null;
try
{
using (connection = new SqlConnection("context connection=true"))
{
connection.Open();
DataTable dt;
SqlDataAdapter adp=new SqlDataAdapter("select * from tableName",CnStr);
DataSet ds=new DataSet();
adp.Fill(ds,"TableName");
dt= ds[0];
//dt.Rows.count may be range from 1000-10000
for(i=0;i<dt.Rows.count;i++)
{
int id = int.Parse(dt.Rows[i][0].ToString());
SqlCommand command = new SqlCommand("select * from table1 where IsParsed=0 and Id=" + id, connection);
SqlDataReader r1 = command.ExecuteReader();
SqlCommand command = new SqlCommand("Insert into table2 (values)", connection);
int r2 = command.ExecuteNonQuery();
//Always get table1 data which has IsParsed=0. Get those rows manipulate those rows data and
// insert into datatable table2 and update those rows to IsParsed=1
SqlCommand command = new SqlCommand("Update table1 set IsParsed=1 where id=@id", connection);
int r3 = command.ExecuteNonQuery();
// Run the Billing Logic here
// Insert into Billing Table
SqlCommand command = new SqlCommand("Insert into Billing(values)", connection);
int r2 = command.ExecuteNonQuery();
}
}
}
catch (Exception ex)
{
}
finally
{
connection.close();
}
这种方法有什么问题让我知道吗?使用这样的连接有什么问题吗?提供适当的建议..
我浏览了文章 更好的方法来在单个连接中执行多个命令
在这里,我使用上下文连接并在单个连接中执行数千个命令。上下文连接中有没有考虑连接池..?每个连接的单个命令执行与单个连接的多个命令执行的性能如何?
另外我想知道在上下文连接和常规连接等两种情况下都会产生相同的结果?因为 SP 部署在 DB 本身中。如果我错了,请纠正我。