我在我的数据库中使用索引视图。所以客户端应该有一些会话连接设置来调用它们。我正在使用ado.net连接,命令来调用存储过程。 每次我必须调用一个存储过程时,我都会创建连接(我希望连接池允许我快速执行此操作)并执行命令将这些设置应用于当前连接。支持索引视图的会话设置
// some code to create a new connection
//...
//...
if (connection.State != ConnectionState.Open)
{
connection.Open();
}
using (var cmd = connection.CreateCommand())
{
cmd.CommandType = CommandType.Text;
cmd.CommandText =
@"
SET ANSI_NULLS ON
SET ANSI_PADDING ON
SET ANSI_WARNINGS ON
SET ARITHABORT ON
SET CONCAT_NULL_YIELDS_NULL ON
SET QUOTED_IDENTIFIER ON
SET NUMERIC_ROUNDABORT OFF";
cmd.ExecuteNonQuery();
}
其他想法:存储过程的每一个电话之前添加这些设置:
command.CommandText = 'SET....';
command.CommandText += ' EXEC MyStroredProc @...';
该解决方案将导致一些性能问题,不是吗?
如果我每次都必须创建一个新连接,我该如何避免这么多额外的工作?如何自动应用这些设置?
SOLUTION:
ALTER DATABASE [MyDB]
SET
ANSI_NULLS ON,
ANSI_PADDING ON,
ANSI_WARNINGS ON,
ARITHABORT ON,
CONCAT_NULL_YIELDS_NULL ON,
QUOTED_IDENTIFIER ON,
NUMERIC_ROUNDABORT OFF
你有什么版本的SQL服务器的? – VMAtm
@VMAtm标签加入 – garik