支持索引视图的会话设置

Posted

技术标签:

【中文标题】支持索引视图的会话设置【英文标题】:Session setting to support indexed views 【发布时间】:2011-11-11 22:34:56 【问题描述】:

我在我的数据库中使用索引视图。所以客户端应该有一些会话连接设置来调用它们。我正在使用 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 @...'; 

这个解决方案会导致一些性能问题,不是吗?

如果我每次都必须创建一个新连接,我该如何避免额外的工作?如何自动应用这些设置?

解决方案:

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-server? 【参考方案1】:

根据documentation,您可以在数据库级别设置这些设置:

使用 ALTER DATABASE 设置的数据库设置仅在数据库级别有效,并且只有在显式设置后才生效。数据库设置会覆盖使用 sp_configure 设置的实例选项设置。

你试过了吗?

很遗憾,这个属性不能在连接字符串中设置,所以使用这个sql:

ALTER DATABASE dbname SET ANSI_NULLS ON
-- etc

【讨论】:

@garik 祝你的项目好运

以上是关于支持索引视图的会话设置的主要内容,如果未能解决你的问题,请参考以下文章

在表或视图上设置索引?

如何设置视图超时?

hadoop Hive 的建表 和导入导出及索引视图

mongodb 设置自动删除过期数据

在底部导航视图中设置最初选择的项目索引/id

在我的表格视图中设置单元格时索引超出范围