我正在使用 Dapper 从我的 Web 应用程序运行存储过程。我首先从 SSMS 运行相同的存储过程,以确保一切正常。它从 SSMS 运行 1-5 秒。
然后我将我的脚本复制/粘贴到我的应用程序中以通过 Dapper 运行。当我运行我的应用程序并逐步调试我的代码时,存储过程运行了超过 2 分钟并超时。这是完全相同的代码。什么可能导致差异?
这是我从 SSMS 运行的代码:
DECLARE @RC int
DECLARE @ownerId varchar(50)
DECLARE @type varchar(50)
DECLARE @dateFrom datetime
DECLARE @dateTo datetime
DECLARE @offset int
DECLARE @perPage int
SET @ownerId = '990042064'
SET @type = 'voice'
SET @dateFrom = '2018-05-16 00:00:00.000' --'YYYY-MM-DD hh:mm:ss[.nnn]'
SET @dateTo = '2018-08-14 23:59:59.000' --'YYYY-MM-DD hh:mm:ss[.nnn]'
SET @offset = 0
SET @perPage = 50
EXECUTE @RC = dbo.IndexSearch @ownerId
,@type
,@dateFrom
,@dateTo
,@offset
,@perPage
GO
这是从我的应用程序运行的代码:
using (IDbConnection db = new SqlConnection(ConnectionStringHelper.ConnectionString))
{
dbRecs = db.Query<IndexRec>(@"
DECLARE @RC int
DECLARE @ownerId varchar(50)
DECLARE @type varchar(50)
DECLARE @dateFrom datetime
DECLARE @dateTo datetime
DECLARE @offset int
DECLARE @perPage int
SET @ownerId = '990042064'
SET @type = 'voice'
SET @dateFrom = '2018-05-16 00:00:00.000'--'YYYY-MM-DD hh:mm:ss[.nnn]'
SET @dateTo = '2018-08-14 23:59:59.000'--'YYYY-MM-DD hh:mm:ss[.nnn]'
SET @offset = 0
SET @perPage = 50
EXECUTE @RC = dbo.IndexSearch @ownerId
, @type
, @dateFrom
, @dateTo
, @offset
, @perPage
", commandTimeout: 120);
}
我什至尝试在几台不同的机器上运行 SSMS,我总是在 1-5 秒内搞定。我已经多次从应用程序运行相同的查询,但它总是超时。
脚本本身是否会导致执行计划不同?我也使用来自 SSMS 和我的应用程序的相同登录名。
MYYA
拉风的咖菲猫
青春有我
相关分类