在某些特定的alter db属性之后调用“exec sp_reset_connection”并导致脚本失败

时间:2016-09-01 07:39:52

标签: sql-server

我的情况是我正在调用多个“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与这三个属性的任何关系。

0 个答案:

没有答案