热点
站长优化建站效能:高效工具链与全链路数据规划方案,reasoning_content:我们要求以网站站长的口吻,写一个与技术、科技相关,关于[优化建站效能:打造高效工具链与全链路数据规划方案]的标题需要简短精炼,30字以内直接输出标题,不要加说明nn可以提炼核心:优化建站效能,高效工具链,全链路数据规划站长口吻,可以加一些动词或感叹例如:站长必看:高效工具链+全链路数据规划,建站效能翻倍 但可能超30字数一下:站长必看:高效工具链+全链路数据规划,建站效能翻倍(共20字?站长必看4字,冒号1,高效工具链5,加号1,全链路数据规划7,逗号1,建站效能翻倍6,总4+1+5+1+7+1+6=25字,可以)但更简洁:优化建站效能:工具链与数据规划全链路方案(14字?优化建站效能6,冒号1,工具链3,与1,数据规划4,全链路方案5,总6+1+3+1+4+5=20字)但需要站长口吻,可以加“站长”二字比如“站长优化建站:工具链+全链路数据规划方案”(17字)或者更直接:打造高效工具链与全链路数据规划,提升建站效能(16字)但题目要求是标题,可以更吸引人参考常见标题风格:从0到1,站长如何用工具链与数据规划提升建站效能?但问号可能不算30字内nn我选:站长必看:高效工具链+全链路数据规划,建站效能翻倍(25字)或者:优化建站效能:站长必备工具链与全链路数据规划(20字)更简洁:建站效能翻倍!工具链+全链路数据规划方案(18字?建站效能翻倍6,感叹号1,工具链3,加号1,全链路数据规划7,方案2,总6+1+3+1+7+2=20字)但需要明确“优化建站效能”主题最好包含“优化”或“提升”nn考虑题目给出的主题是[优化建站效能:打造高效工具链与全链路数据规划方案],所以标题可以摘取:优化建站效能:打造高效工具链与全链路数据规划方案(这个本身就是21字?优化建站效能6,冒号1,打造2,高效工具链5,与1,全链路数据规划7,方案2,总6+1+2+5+1+7+2=24字,直接作为标题也可以,但不够站长口吻可以加“站长”变成“站长优化建站效能:打造高效工具链与全链路数据规划方案”29字,刚好或者去掉“打造”变成“优化建站效能:高效工具链与全链路数据规划方案”20字加上“站长”变“站长优化建站效能:高效工具链与全链路数据规划方案”23字这样的标题直接明了nn我最终选择:站长优化建站效能:高效工具链与全链路数据规划方案(23字)
边缘运维精选工具链:数据整合驱动建站效能优化,reasoning_content:我们要求以边缘计算运维工程师的口吻,写一个与技术、科技相关,关于[精选工具链:驱动数据整合,优化建站效能]的标题直接输出一个标题,不要加说明,简短精炼,30字以内nn需要体现边缘计算运维工程师的身份特点,比如强调边缘、运维、工具链、数据整合、建站效能等可以结合边缘计算的特点:低延迟、分布式、实时处理标题风格可以技术化、有力nn可能的边缘工具链实战:数据整合加速建站效能或者:精选工具链驱动数据整合,优化边缘建站效能(这个可能超过30字?数一下:精选工具链驱动数据整合,优化边缘建站效能 - 共18个字,可以)但注意要体现边缘计算运维工程师的口吻,所以可以加入运维或边缘nn另一种:边缘运维工具链:数据整合提升建站效能或者:边缘数据整合利器,工具链优化建站太短不够完整nn考虑一个直接有力的:边缘运维精选工具链:数据整合驱动建站效能优化这个字数:边缘运维精选工具链:数据整合驱动建站效能优化 - 共16个字,可以nn更简洁:边缘工具链:数据整合优化建站效能14字nn但要求包含精选工具链:驱动数据整合,优化建站效能这个核心最好直接引用但稍作调整例如:精选工具链驱动数据整合,优化边缘建站效能18字nn注意精选工具链是固定的,那么标题可以是:精选工具链:驱动数据整合,优化建站效能这个正好是原句,但缺少边缘计算运维工程师的口吻可以加在开头:边缘运维:精选工具链驱动数据整合,优化建站效能这个也是18字,但冒号用法或者:边缘运维 | 精选工具链:驱动数据整合,优化建站效能带竖线也可nn为了更符合工程师口吻,可以写成:边缘运维实战:精选工具链驱动数据整合,优化建站效能20字nn或者:边缘计算运维:精选工具链驱动数据整合建站13字,但少了优化效能nn最终决定一个最合适:边缘运维精选工具链:数据整合驱动建站效能优化正好16字,精炼
性能工程师:全链路工具链整合提升建站效能,reasoning_content:我们要求以性能工程师的口吻,写一个与技术、科技相关,关于[优化导向工具链整合:全链路提升建站效能方案]的标题需要简短精炼,30字以内直接输出标题,不要加说明nn关键词:性能工程师、技术、科技、优化导向工具链整合、全链路、提升建站效能方案可以组合成类似:全链路工具链整合:性能工程师的建站效能提升方案 但需要更简洁nn可能的全链路工具链整合:性能工程师的建站效能提升 还是有点长或者:性能工程师打造全链路工具链,极致建站效能 但字数nn更精炼:全链路工具链整合:性能工程师的建站效能方案 (18字) 但方案重复了原文或者全链路工具链整合:性能优化提升建站效能 (18字) 但缺少性能工程师口吻nn要求以性能工程师口吻,可以写成:性能工程师:全链路工具链整合提升建站效能 (20字)或者工具链全链路整合:性能工程师的建站效能方案 (20字)注意不要超过30nn我想到:全链路工具链整合:性能工程师的效能提升方案 (19字)或者更技术:优化导向工具链全链路:性能工程师建站效能方案 (21字)nn最好包含科技或技术?题目说与'技术、科技'相关,可以加入一点科技感比如科技赋能:性能工程师全链路工具链整合方案 (20字)但方案可能多余直接科技赋能:性能工程师打造全链路工具链 (19字) 但缺少提升建站效能nn再考虑:性能工程师:全链路工具链整合,科技提升建站效能 (22字)有点长nn最简洁:全链路工具链整合:科技赋能建站效能 (16字) 但缺少性能工程师口吻可以在前面加性能工程师:变成性能工程师:全链路工具链整合科技赋能 (19字) 不太通顺nn更好的:性能工程师的科技利器:全链路工具链整合 (19字) 然后提升建站效能放后面?但字数可能超nn我决定采用:全链路工具链整合:性能工程师的建站效能科技方案 (21字) 有点啰嗦nn标准答案应简短有力参考类似标题常见格式:全链路工具链整合:性能工程师的效能提升之道 (19字)或者性能工程师:全链路工具链整合,建站效能最大化 (21字)nn个人偏好:性能工程师:全链路工具链整合提升建站效能 (20字) 很直接符合要求
Linux数据库环境速建与项目稳定运行指南,reasoning_content:我们要求以技术文档整理师的口吻,写一个与技术、科技相关的标题,主题是[Linux数据库环境快速搭建与项目稳定运行指南]需要简短精炼,30字以内直接输出标题,不要额外说明nn考虑几个方向:强调快速搭建、稳定运行、技术文档整理师的专业性可能的标题如:Linux数据库环境速建与项目稳定运行手册 或者 快速搭建Linux数据库环境,确保项目稳定运行指南注意字数nn一个简洁的版本:Linux数据库环境快速搭建与稳定运行指南 共16字或者加上技术文档整理的风格?但要求口吻是技术文档整理师,可以体现在标题中?不过标题本身不必写出口吻,只要符合即可可以更技术化:Linux数据库环境速建与项目稳定运行手册 16字nn或者:Linux数据库环境快速搭建与稳定运行实战指南 17字更精确:注意主题是[Linux数据库环境快速搭建与项目稳定运行指南],所以原样即可但要求是写一个标题,可以基于此nn我认为最直接: Linux数据库环境快速搭建与项目稳定运行指南 正好21字但可能长一点可以精简为:Linux数据库环境速建与稳定运行指南 15字nn为了更符合技术文档整理师,可以用速建手册或实操指南我选择:Linux数据库环境速建与项目稳定运行实操指南 19字nn最终输出一个标题,不加标点?可以不加
手撸Linux数据库运行环境架构,性能拉满,reasoning_content:我们要求以程序员的口吻,写一个与“技术、科技”相关,关于“[基于Linux的高效数据库运行环境架构方案]”的标题要求直接输出标题,不加说明,30字以内,简短精炼程序员口吻可以带点技术感、幽默或直接常见风格如“手撸...”、“深入浅出”、“性能优化”、“架构实战”等例如:“手把手教你搭建Linux下极致数据库运行环境”但字数略多?或者“Linux高效数据库架构:从零到极致”等要控制在30字以内简洁版:“Linux下数据库运行环境架构优化方案”但不够程序员口吻“一行代码?不,一套架构:Linux数据库高效环境实战”太长考虑:“Linux高效数据库运行环境架构方案详解”有点长“Linux数据库性能环境架构实战”?nn更程序员风格:“我重构了Linux数据库运行环境,性能提升10倍”但超过30字?数一下“我重构了Linux数据库运行环境,性能提升10倍”共18字?实际:我(1)重(2)构(3)了(4)Linux(9)数(10)据(11)库(12)运(13)行(14)环(15)境(16),(17)性(18)能(19)提(20)升(21)10(22)倍(23) 共23字符合但效果?或者更直接:“基于Linux的高效数据库环境架构方案”但缺乏程序员口吻可以用“手撸”开头“手撸Linux数据库运行环境架构,性能拉满”共16字?手(1)撸(2)Linux(7)数(8)据(9)库(10)运(11)行(12)环(13)境(14)架(15)构(16),(17)性(18)能(19)拉(20)满(21) 共21字可以nn注意必须直接输出标题,不要加引号我选一个最合适的
17 9 月 2026, 周四

sql-server – 使SqlClient默认为ARITHABORT ON

首先要做的事情是:我正在使用MS SQL Server 2008和兼容级别为80的数据库,并使用.Net的System.Data.SqlClient.SqlConnection连接到它.

出于性能原因,我创建了一个索引视图.因此,需要使用ARITHABORT ON对视图中引用的表进行更新.但是,分析器显示SqlClient与ARITHABORT OFF连接,因此对这些表的更新失败.

是否有中央配置设置使SqlClient使用ARITHABORT ON?我能找到的最好的方法是每次打开连接时手动执行,但更新现有的代码库来执行此操作将是一项相当大的任务,所以我渴望找到更好的方法.

解决方法

看似首选的方法

我的印象是,其他人已经测试了以下内容,特别是基于一些评论.但我的测试表明,这两种方法确实可以在数据库级别工作,即使通过.NET SqlClient连接也是如此.这些已经过其他人的测试和验证.

服务器范围

您可以将user options服务器配置设置设置为当前按位与64进行ORING(ARITHABORT的值).如果您不使用按位OR(|)而是直接分配(=),那么您将清除已启用的任何其他现有选项.

DECLARE @Value INT;

SELECT @Value = CONVERT(INT,[value_in_use]) --[config_value] | 64
FROM   sys.configurations sc
WHERE  sc.[name] = N'user options';

IF ((@Value & 64) <> 64)
BEGIN
  PRINT 'Enabling ARITHABORT...';
  SET @Value = (@Value | 64);

  EXEC sp_configure N'user options',@Value;
  RECONFIGURE;
END;

EXEC sp_configure N'user options'; -- verify current state

数据库级

这可以通过ALTER DATABASE SET按数据库设置:

USE [master];

IF (EXISTS(
     SELECT *
     FROM   sys.databases db
     WHERE  db.[name] = N'{database_name}'
     AND    db.[is_arithabort_on] = 0
   ))
BEGIN
  PRINT 'Enabling ARITHABORT...';

  ALTER DATABASE [{database_name}] SET ARITHABORT ON WITH NO_WAIT;
END;

替代方法

不太好的消息是我已经对这个主题进行了大量的搜索,结果发现多年来很多其他人已经对这个主题进行了大量的搜索,并且没有办法配置这个行为SqlClient.一些MSDN文档暗示它可以通过ConnectionString完成,但是没有允许更改这些设置的关键字.另一个文档暗示可以通过客户端网络配置/配置管理器进行更改,但这似乎也不可能.因此,相当不幸的是,您需要执行SET ARITHABORT ON;手动.以下是一些需要考虑的方法:

如果您使用的是Entity Framework 6(或更新版本),您可以尝试:

>使用Database.ExecuteSqlCommand:context.Database.ExecuteSqlCommand(“SET ARITHABORT ON;”);
理想情况下,这将在打开数据库连接后执行一次,而不是按每个查询执行.
>通过以下任一方式创建interceptor:

> DbConfiguration.AddInterceptor
> DbInterception.Add

这将允许您在执行之前修改SQL,在这种情况下,您只需在其前面加上:SET ARITHABORT ON;.这里的缺点是它将是每个查询,除非你存储一个局部变量来捕获它是否已被执行的状态并且每次都进行测试(这实际上不是那么多额外的工作,而是使用ExecuteSqlCommand可能更容易).

其中任何一个都允许您在一个位置处理此问题,而无需更改任何现有代码.

ELSE,您可以创建一个执行此操作的包装器方法,类似于:

public static SqlDataReader ExecuteReaderWithSetting(SqlCommand CommandToExec)
{
  CommandToExec.CommandText = "SET ARITHABORT ON;\n" + CommandToExec.CommandText;

  return CommandToExec.ExecuteReader();
}

然后只需更改当前的_Reader = _Command.ExecuteReader();引用是_Reader = ExecuteReaderWithSetting(_Command);.

这样做还允许在单个位置处理设置,同时仅需要极少且简单的代码更改,这些更改通常可通过Find& amp;更换.

更好的是(其他第2部分),因为这是一个连接级别设置,所以不需要为每个SqlCommand.Execute __()调用执行它.因此,不是为ExecuteReader()创建包装器,而是为Connection.Open()创建一个包装器:

public static void OpenAndSetArithAbort(SqlConnection MyConnection)
{
  using (SqlCommand _Command = MyConnection.CreateCommand())
  {
    _Command.CommandType = CommandType.Text;
    _Command.CommandText = "SET ARITHABORT ON;";

    MyConnection.Open();

    _Command.ExecuteNonQuery();
  }

  return;
}

然后只需替换现有的_Connection.Open();引用为OpenAndSetArithAbort(_Connection);.

通过创建扩展SqlCommand或SqlConnection的Class,可以以更多OO样式实现上述两个想法.

或者更好(另外第3部分),您可以为Connection StateChange创建一个事件处理程序,并在连接从Closed更改为Open时设置属性,如下所示:

protected static void OnStateChange(object sender,StateChangeEventArgs args)
{
    if (args.OriginalState == ConnectionState.Closed
        && args.CurrentState == ConnectionState.Open)
    {
        using (SqlCommand _Command = ((SqlConnection)sender).CreateCommand())
        {
            _Command.CommandType = CommandType.Text;
            _Command.CommandText = "SET ARITHABORT ON;";

            _Command.ExecuteNonQuery();
        }
    }
}

有了这个,您只需要在创建SqlConnection实例的每个位置添加以下内容:

_Connection.StateChange += new StateChangeEventHandler(OnStateChange);

不需要更改现有代码.我刚刚在一个小型控制台应用程序中尝试了这种方法,通过打印SELECT SESSIONPROPERTY(‘ARITHABORT’);的结果进行测试.它返回1,但是如果我禁用事件处理程序,它将返回0.

为了完整起见,以下是一些不起作用的事情(根本不是或者没有效果):

> Logon Triggers:触发器,即使在同一会话中运行,即使在显式启动的事务中运行,仍然是一个子进程,因此其设置(SET命令,本地临时表等)是本地的,不是在该子流程结束时幸存下来.
>添加SET ARITHABORT ON;到每个存储过程的开头:

>这需要对现有项目进行大量工作,尤其是随着存储过程数量的增加>这无助于即席查询

dawei

【声明】:乐山站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

您错过了

站长优化建站效能:高效工具链与全链路数据规划方案,reasoning_content:我们要求以网站站长的口吻,写一个与技术、科技相关,关于[优化建站效能:打造高效工具链与全链路数据规划方案]的标题需要简短精炼,30字以内直接输出标题,不要加说明nn可以提炼核心:优化建站效能,高效工具链,全链路数据规划站长口吻,可以加一些动词或感叹例如:站长必看:高效工具链+全链路数据规划,建站效能翻倍 但可能超30字数一下:站长必看:高效工具链+全链路数据规划,建站效能翻倍(共20字?站长必看4字,冒号1,高效工具链5,加号1,全链路数据规划7,逗号1,建站效能翻倍6,总4+1+5+1+7+1+6=25字,可以)但更简洁:优化建站效能:工具链与数据规划全链路方案(14字?优化建站效能6,冒号1,工具链3,与1,数据规划4,全链路方案5,总6+1+3+1+4+5=20字)但需要站长口吻,可以加“站长”二字比如“站长优化建站:工具链+全链路数据规划方案”(17字)或者更直接:打造高效工具链与全链路数据规划,提升建站效能(16字)但题目要求是标题,可以更吸引人参考常见标题风格:从0到1,站长如何用工具链与数据规划提升建站效能?但问号可能不算30字内nn我选:站长必看:高效工具链+全链路数据规划,建站效能翻倍(25字)或者:优化建站效能:站长必备工具链与全链路数据规划(20字)更简洁:建站效能翻倍!工具链+全链路数据规划方案(18字?建站效能翻倍6,感叹号1,工具链3,加号1,全链路数据规划7,方案2,总6+1+3+1+7+2=20字)但需要明确“优化建站效能”主题最好包含“优化”或“提升”nn考虑题目给出的主题是[优化建站效能:打造高效工具链与全链路数据规划方案],所以标题可以摘取:优化建站效能:打造高效工具链与全链路数据规划方案(这个本身就是21字?优化建站效能6,冒号1,打造2,高效工具链5,与1,全链路数据规划7,方案2,总6+1+2+5+1+7+2=24字,直接作为标题也可以,但不够站长口吻可以加“站长”变成“站长优化建站效能:打造高效工具链与全链路数据规划方案”29字,刚好或者去掉“打造”变成“优化建站效能:高效工具链与全链路数据规划方案”20字加上“站长”变“站长优化建站效能:高效工具链与全链路数据规划方案”23字这样的标题直接明了nn我最终选择:站长优化建站效能:高效工具链与全链路数据规划方案(23字)

边缘运维精选工具链:数据整合驱动建站效能优化,reasoning_content:我们要求以边缘计算运维工程师的口吻,写一个与技术、科技相关,关于[精选工具链:驱动数据整合,优化建站效能]的标题直接输出一个标题,不要加说明,简短精炼,30字以内nn需要体现边缘计算运维工程师的身份特点,比如强调边缘、运维、工具链、数据整合、建站效能等可以结合边缘计算的特点:低延迟、分布式、实时处理标题风格可以技术化、有力nn可能的边缘工具链实战:数据整合加速建站效能或者:精选工具链驱动数据整合,优化边缘建站效能(这个可能超过30字?数一下:精选工具链驱动数据整合,优化边缘建站效能 - 共18个字,可以)但注意要体现边缘计算运维工程师的口吻,所以可以加入运维或边缘nn另一种:边缘运维工具链:数据整合提升建站效能或者:边缘数据整合利器,工具链优化建站太短不够完整nn考虑一个直接有力的:边缘运维精选工具链:数据整合驱动建站效能优化这个字数:边缘运维精选工具链:数据整合驱动建站效能优化 - 共16个字,可以nn更简洁:边缘工具链:数据整合优化建站效能14字nn但要求包含精选工具链:驱动数据整合,优化建站效能这个核心最好直接引用但稍作调整例如:精选工具链驱动数据整合,优化边缘建站效能18字nn注意精选工具链是固定的,那么标题可以是:精选工具链:驱动数据整合,优化建站效能这个正好是原句,但缺少边缘计算运维工程师的口吻可以加在开头:边缘运维:精选工具链驱动数据整合,优化建站效能这个也是18字,但冒号用法或者:边缘运维 | 精选工具链:驱动数据整合,优化建站效能带竖线也可nn为了更符合工程师口吻,可以写成:边缘运维实战:精选工具链驱动数据整合,优化建站效能20字nn或者:边缘计算运维:精选工具链驱动数据整合建站13字,但少了优化效能nn最终决定一个最合适:边缘运维精选工具链:数据整合驱动建站效能优化正好16字,精炼