相关疑难解决方法(0)

SQL Server ARITHABORT

我正在与刚刚从SQL 2000升级到SQL 2008的客户端一起工作,他们的查看查询时间也增加了很多.

我看了一下这些观点,看不出它们有多大的错误.当我直接在服务器上运行视图时,时间还可以.当我通过Management Studio远程运行时,时间从2秒到大约30秒.

所以,我已经尝试通过将ARITHABORT设置为ON(基于一些文章)对测试副本进行实验,并且时间也会远程下降.

因此,设置ARITHABORT似乎是答案,但在应用于实时DB之前,我想了解原因.我认为它与零鸿沟的严重程度有关,但为什么它应该有助于查看查询时间?

sql t-sql sql-server sql-server-2008

12
推荐指数
1
解决办法
1万
查看次数

从DotNet执行存储过程需要很长时间,但在SSMS中它是立即的

我在SQL Server 2000上有一个存储过程,它有3个参数.当我使用SqlCommand.ExecuteReader()从DotNet调用存储过程时,大约需要28秒.

当我在SSMS中直接运行相同的查询时,它会立即返回.

当我从存储过程中取出查询并使用DotNet直接运行时,它也会立即返回.

这些是SQL事件探查器会话的结果

SP内部网点

  • 持续时间:28030
  • 阅读:2663365
  • 写道:0

SP内部SSMS

  • 持续时间:450
  • 阅读:23535
  • 写道:65

直接在Dot Net内部查询

  • 持续时间:360
  • 阅读:24865
  • 写道:57

以下事情对我来说很突出:

  • SSMS中的统计数据和Dot Net中的直接查询非常相似
  • Dot Net SP可以进行大量读取,但不会写入
  • 另外两个读取很少,但有几个写入

任何帮助,将不胜感激.

这是SP的略微观察版本:

我怀疑它是一个查询计划问题,因为即使我从DotNet反复运行它,我总是得到相同的结果.

这是SP的一个版本,由于IP问题而略有改变.我希望它仍然有意义:

SELECT 
t1.pkiOrderID,
t1.fkiBasketId,
t1.sOriginBasketCode,
t1.dtDateCreated,
t1.sOrderCode,
t1.fkiUserCde,
t1.fkiOrgCde,
t1.sApprovalPerson,
t1.dtDateApproved,
t1.sRequestNo,
t1.dtRequiredDate,
t1.Requestor,
t1.OnBehalfOf,
t1.OrderDesc,
t1.OrderTypeId,
t1.fkiAgentID,
t1.fkiAgentRegionID,
stat.iStatus,
count(oi.pkiOrderItemId) as OrderItems,
count(wf.fkiOrderId) as WorkflowCount,
t1.Currency_Id,
t1.ExchangeRate,
t1.ref_odr_idn,
t2.sOrderCode as ref_odr_cde,
t1.ref_rfq_nbr,
t1.ref_rfs_nbr,
t1.ref_doc_nbr,
t1.ref_rsn,
t1.ref_forip_cde,
t1.ref_fa_nbr,
t1.odr_sub_typ
FROM    tbl1 t1 INNER JOIN 
tbl1Status stat ON
t1.pkiOrderID = stat.fkiOrderID AND …
Run Code Online (Sandbox Code Playgroud)

.net c# sql-server ado.net sql-server-2000

7
推荐指数
1
解决办法
5693
查看次数

从代码运行时存储过程超时,但不从查询工具运行

我试图弄清楚为什么存储过程调用在SQL Server express查询窗口中需要几秒钟,但是当我运行时,在代码中调用存储过程查询TIMES OUT.我们正在使用sql server 2008.我知道很难在没有看到存储过程的情况下确切地说明发生了什么.我只是希望这是一个已知的问题.任何指导都非常感谢.

在SQL Server express查询窗口中调用"STORED_PROCEDURE_X"并在2秒内运行的SQL查询:

EXEC STORED_PROCEDURE_X '07/01/2010', '07/31/2010', 0, '', 'true','', 'Top 20'
Run Code Online (Sandbox Code Playgroud)

调用"STORED_PROCEDURE_X"和TIMES OUT的代码:

SqlConnection connSQL = null;
SqlCommand sqlCmd = null;
SqlDataAdapter sqlDataAdpater = null;
DataTable returnData = null;

try
{
    returnData = new DataTable();
    connSQL = new SqlConnection(sqlConnection);
    sqlCmd = new SqlCommand("STORED_PROC_X", connSQL);
    if (connSQL.State == ConnectionState.Closed)
    {
        connSQL.Open();
    }
    sqlCmd.CommandType = CommandType.StoredProcedure;
    sqlCmd.CommandTimeout = 600;
    sqlCmd.Parameters.Add("@StartDate", SqlDbType.NVarChar).Value = "07/01/2010";
    sqlCmd.Parameters.Add("@EndDate", SqlDbType.NVarChar).Value = "07/31/2010";

    sqlCmd.Parameters.Add("@AuditType", SqlDbType.Int).Value = "0";

    sqlCmd.Parameters.Add("@SortBy", SqlDbType.NVarChar).Value = ""; …
Run Code Online (Sandbox Code Playgroud)

c# sql-server stored-procedures

6
推荐指数
3
解决办法
2万
查看次数