从public void ConfigureServices(IServiceCollection services)
{
services.AddOptions();
services.Configure<AppSettings>(Configuration.GetSection("AppSettings"));
}
获取一个奇怪的例外,我在网上找不到任何帮助:
无法继续执行,因为会话处于终止状态。
我正在使用SqlConnection / SqlCommand
该命令是一个基本的INSERT INTO ...有105列(和105个参数来设置列数据),然后是SELECT SCOPE_IDENTITY();
我已检查过连接字符串 - 它是正确的,连接已打开。
我甚至不确定这个错误告诉我知道从哪里开始查看这个错误。
那么这个错误究竟意味着什么呢?会话如何从kill状态开始?
代码很简单:
ExecuteScalar()
答案 0 :(得分:7)
发现它!
查询中存在约束违规,导致查询执行失败。而不是在异常中报告该信息 - 它报告说会话处于&#34; kill状态&#34; (我猜)因为查询提前终止了。
我之前从未见过这个错误 - 通常是约束错误,这样在异常中有更多用处。
所以任何人都会收到此错误 - 请务必检查您的查询以确保其有效。
答案 1 :(得分:2)
这可能是由于Always On Availability Group&#39; Failover&#39; ... 每当我有一个正在运行的查询,连接到AG Listener,并且有故障转移时,我得到一个 SqlException ,消息为&#39; 无法继续执行因为会话在杀戮状态。&#39; ...
答案 2 :(得分:1)
您的代码应如下所示:
const string sqlString = "INSERT INTO dbo.Table ( ....) " +
" VALUES ( .... );" +
"SELECT SCOPE_IDENTITY();";
using (conn)
{
using (var cmd = new SqlCommand(sqlString, conn))
{
cmd.Parameters.AddWithValue("@param", param);
cmd.CommandType = CommandType.Text;
conn.Open();
return (int) (decimal) cmd.ExecuteScalar();
}
}
但请注意,某个时候存储过程会更合适