我的情况是我正在调用多个“ALTER DATABASE SET”命令,然后通过C#从sql脚本执行一些表,索引等创建命令: -
How to execute an .SQL script file using c#
string sqlConnectionString = @"Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=ccwebgrity;Data Source=SURAJIT\SQLEXPRESS";
string script = File.ReadAllText(@"E:\Project Docs\MX462-PD\MX756_ModMappings1.sql");
SqlConnection conn = new SqlConnection(sqlConnectionString);
Server server = new Server(new ServerConnection(conn));
server.ConnectionContext.ExecuteNonQuery(script);
ALTER DB命令类似于
ALTER DATABASE [MyDB] SET ANSI_NULL_DEFAULT OFF
GO
ALTER DATABASE [MyDB] SET ANSI_NULLS OFF
GO
ALTER DATABASE [MyDB] SET TRUSTWORTHY OFF
GO
我有大约20个这样的调用,然后调用创建表,索引,键等。
我观察到的是,如果我尝试更改以下任何db属性
HONOR_BROKER_PRIORITY
TRUSTWORTHY
DB_CHAINING
然后我看到在SQL事件探查器中调用了“exec sp_reset_connection”,然后它跳过了从C#代码脚本发送的剩余命令。
这种行为使我的程序无法正常使用C#代码,但SSMS工作正常。
有人可以解释一下这些特定数据库属性后调用sp_reset_connection的行为,因为将来我需要知道在SSMS中工作时这些属性可以从C#中断代码吗?
关于sp_reset_connection关于SO的问题很少,但是那些关于它们被调用或启用/禁用它的原因等等。我找不到这个SP与这三个属性的任何关系。