相关疑难解决方法(0)

SqlDataAdapter.Fill方法慢

为什么在SQL Server Management Studio中运行<1秒时,使用此代码返回具有9列,89行的表的存储过程需要60秒才能执行(.NET 1.1)?它在本地计算机上运行,​​因此很少/没有网络延迟,快速开发机器

Dim command As SqlCommand = New SqlCommand(procName, CreateConnection())
command.CommandType = CommandType.StoredProcedure
command.CommandTimeout = _commandTimeOut
Try
   Dim adapter As new SqlDataAdapter(command)
   Dim i as Integer
   For i=0 to parameters.Length-1
      command.Parameters.Add(parameters(i))
   Next
   adapter.Fill(tableToFill)
   adapter.Dispose()
Finally
   command.Dispose()
End Try
Run Code Online (Sandbox Code Playgroud)

我的参数数组是打字的(对于这个SQL,它只是一个参数)

parameters(0) = New SqlParameter("@UserID", SqlDbType.BigInt, 0, ParameterDirection.Input, True, 19, 0, "", DataRowVersion.Current, userID)
Run Code Online (Sandbox Code Playgroud)

存储过程只是一个select语句,如下所示:

ALTER PROC [dbo].[web_GetMyStuffFool]
   (@UserID BIGINT)
AS
SELECT Col1, Col2, Col3, Col3, Col3, Col3, Col3, Col3, Col3
FROM [Table]
Run Code Online (Sandbox Code Playgroud)

vb.net sql-server .net-1.1

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

在C#Web应用程序中插入查询时间,从SQL Server Management Studio运行正常

我正在尝试从我的C#Web应用程序运行插入查询.当我从SQL Server Management Studio运行查询时,插入查询大约需要五分钟才能完成.从应用程序运行时,它会在30分钟后超时(是分钟,而不是秒).

我从VS调试器中获取了实际的SQL语句并从Mgmt Studio运行它并且工作正常.

所有这些都是从我的开发环境运行,而不是生产环境.查询正在进行时,没有其他SQL Server活动.我正在使用SQL Server 2008 R2进行开发.MS VS 2010 Express,Asp.Net 4.0.SQL Server Mgmt Studio 10.

有一个类似的问题从未得到解答:来自C#.NET的SQL server timeout 2000

这是来自以下的SET选项:dbcc useroptions

Option                  MgtStudio      Application
----------------------- -------------- --------------
textsize                2147483647     -1
language                us_english     us_english
dateformat              mdy            mdy
datefirst               7              7
lock_timeout            -1             -1
quoted_identifier       SET            SET
arithabort              SET            NOT SET
ansi_null_dflt_on       SET            SET
ansi_warnings           SET            SET
ansi_padding            SET            SET
ansi_nulls              SET            SET
concat_null_yields_null SET            SET
isolation level         read committed read committed
Run Code Online (Sandbox Code Playgroud)

只有文本化和arithabort是不同的.

任何想法为什么在查询执行时间有这么大的差异,以及我可以做些什么来缩小这种差异?

我不确定查询会有多大用处,特别是因为包含模式会太多.无论如何,这里是:

INSERT INTO …
Run Code Online (Sandbox Code Playgroud)

c# sql-server asp.net

14
推荐指数
1
解决办法
976
查看次数

SQL Server查询突然变慢

我有一个SQL数据库查询的问题突然(但通常大约每三周)变得缓慢.

安装程序如下:

  • Windows Server 2008(不是R2)64位,8 GB RAM
  • SQL Server Express 2008 R2
  • 数据库的大小为6 GB(文件大小为mdf)
  • Orders查询主要选择的表()有大约24000条记录,其他五条连接表小(100条或更少)
  • 该表Orders有一个包含二进制数据(PDF文档)的varbinary(MAX)Report,平均大小约为200到300 kB(但有时可能高达2 MB).这24000个订单中超过90%的列填充了此列,其他的则是NULL,即6 GB数据库大小的90%以上是二进制数据.

有问题的查询具有以下结构:

SELECT TOP (30) [Project2].[OrderID] AS [OrderID]
                -- around 20 columns more
FROM ( SELECT [Project2].[OrderID] AS [OrderID],
              -- around 20 columns more
              row_number() OVER (ORDER BY [Project2].[OrderID] ASC) AS [row_number]
       FROM ( SELECT [Filter1].[OrderID] AS [OrderID]
              -- around 20 columns more
              FROM ( SELECT [Extent1].[OrderID] AS [OrderID]
                     -- around …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server sql-server-express sql-server-2008-r2

6
推荐指数
1
解决办法
6859
查看次数

过程从ADO.NET中超时,但在SSMS中没有

我有一个存储过程给我一个SqlException,因为我从代码运行它时超时(超时设置为30).当我直接在Management Studio中运行该过程时,它会在1秒内执行.我也只在针对特定数据库运行时获得超时.当我使用其他数据库时,它可以快速完成而不会出现错误.这是完整的错误消息:

System.Data.SqlClient.SqlException (0x80131904): Timeout expired.  The timeout period elapsed prior to completion of the operation or the server is not responding.
   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
   at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()
   at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
   at System.Data.SqlClient.SqlDataReader.ConsumeMetaData()
   at System.Data.SqlClient.SqlDataReader.get_MetaData()
   at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
   at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior …
Run Code Online (Sandbox Code Playgroud)

ado.net ssms timeout sql-server-2005 sqlexception

3
推荐指数
1
解决办法
6029
查看次数