【发布时间】:2021-05-26 18:32:30
【问题描述】:
这似乎很可能是某种 Azure SQL 问题,但我不知道发生了什么。我有一些代码可以从这样的 SQL 函数中读取数据:
using SqlConnection myConnection = new SqlConnection(connstr);
myConnection.Open();
using SqlCommand command = new SqlCommand(@"SELECT * FROM [dbo].[function] (@param)", myConnection);
command.Parameters.Add(new SqlParameter("@param", param));
using SqlDataAdapter da = new SqlDataAdapter(command);
DataTable dt = new DataTable();
da.Fill(dt);
我在这里使用该函数,因此我不需要在 C# 代码中编写相当复杂的 SQL 查询。当我通过 SSMS 运行该功能时,它会在几秒钟内运行。上周从 C# 运行时也是如此。然而,由于某种原因,今天早上,即使通过 SSMS 运行,该功能最初也很慢,运行时间超过 2 分钟。自今天早上以来,它已在 SSMS 中正常化,但通过 C# 运行时超时。 Azure SQL 数据库是无服务器的,最小 0.5 到最大 4 个 vCore。发生了什么以及如何解决此问题?
编辑:我可能已经找到了解决方案。该问题与 SQL Server 中的参数嗅探有关。我通过添加分配给函数参数的本地参数来使函数工作,因此函数参数实际上不会在任何查询中使用。我必须看看这是否继续有效,如果它没有中断,我会将其标记为答案。
【问题讨论】:
标签: c# azure-sql-database