- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
好的,为了将我的应用程序移至云中,我已将本地 SQL 数据库移至 Azure SQL。问题是与新的 Azure SQL 数据库的连接非常“不稳定”,我打算将其带回内部。
任务是循环并在数据库中创建总共约 481K 条记录。
连接字符串是
"Server=tcp:xxx,1433;Initial Catalog=xx;Persist Security Info=False;User ID=xx;MultipleActiveResultSets=True;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;ConnectRetryCount=255;"
它每次运行的SQL查询并不复杂。只需将三个值插入三列即可。 (更改列和值以保护某些内部工作)
Insert Into TheTable (C1, C2, C3) VALUES ('V1', 'V2', 'V3')
但在随机点它会抛出这个。
System.ComponentModel.Win32Exception (0x80004005): 等待操作超时执行超时已过期。操作完成之前超时时间已过,或者服务器未响应。在System.Data.SqlClient.SqlConnection.OnError(SqlException异常, bool breakConnection,Action1wrappCloseInAction)在System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, bool callerHasConnectionLock, bool asyncClose)
1 完成,字符串 methodName, bool 值 sendToPipe,Int32 超时, bool 值&usedCache, bool 值 asyncWrite, bool 值 inRetry) 在 System.Data.SqlClient.SqlCommand.ExecuteNonQuery() 位于 D:\PATHOFTHEFILE 中的 XX:第 420 行
在System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior,SqlCommand cmdHandler,SqlDataReader dataStream,BulkCopySimpleResultSetbulkCopyHandler,TdsParserStateObject stateObj,Boolean&dataReady)
在 System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(字符串方法名称, bool 异步,Int32 超时, bool asyncWrite)
在 System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource
请注意
1) 每次创建记录并在下一步中关闭它时,我都会打开和关闭连接。
2)除了我之外没有其他人访问数据库。
3) 为S1设置数据库服务。
4) 是的 - 讽刺的是,程序在第 420 行崩溃了。我正在尝试寻找对代码进行药物测试的方法。
问题
1) 我的连接字符串有问题吗?该文档指出,在连接到 Azure SQL 数据库时,我应该使用 30 的超时。坦率地说,当我将超时设置为 0 时,代码运行得更好(或者至少生命周期更长)。
2) 首先,我尝试使用单个连接来处理整个 481K INSERT 语句的循环。这是一个糟糕的设计吗? Azure SQL 可靠性将保持连接多长时间?
3) 我对在 Azure SQL 上构建坚如磐石的应用程序的能力没有一种温暖的模糊感觉。有人可以给我指点一个关于本地 SQL 构建与 Azure SQL 构建之间差异的好引用吗?我已经查遍了所有能找到的东西,但似乎没有那么多。
4) 我喜欢可以使用 MMC 连接到 Azure SQL。但(一般来说)我无法再从 MMC 获取各种监控信息。任何人都有一个链接,可以帮助我真正了解数据库中发生的情况,而无需使用那个可怕的 Azure 门户
更新#1
被指控有罪
public static void RunSQL(string SQLString)
{
int a = 0;
SqlCommand Command = new SqlCommand(SQLString, TheConnection);
try
{
a = Command.ExecuteNonQuery();
}
catch (Exception ex)
{
Notifications.EventLogging.ProcessEvent(SQLString + " go boom " + ex.InnerException + ex.Message + ex.StackTrace);
Notifications.EventLogging.ProcessEvent("Time Of Death" + DateTime.Now);
Console.ReadKey();
}
最佳答案
Azure SQL 实例托管在共享基础架构上。 Azure 将限制请求以确保服务器上的所有实例都能满足最低 SLA。在这一生中,死亡和纳税是有保障的,但 Azure SQL 连接却不然。
为了解决这个问题,您需要自动重试。多年来,Microsoft 提供了一些选项,从现已弃用的 ReliableSqlConnection 类开始。如今与 Azure SQL 交互的首选方式是使用 Entity Framework 6.x,它内置了自动重试功能。
实际上,流量较小且零星的 Azure SQL 数据库很少会遇到限制事件。我有一些开发人员 friend ,他们部署了访问 Azure SQL 数据库的生产代码,使用原始 SqlConnections 和 SqlCommands,当我告诉他们无法保证连接时,他们似乎真的感到惊讶。他们绝对不会遇到它!但如果你的服务器崩溃了(就像你正在做的那样),我已经看到这种情况的发生足以引起人们的注意。
编辑 12-6-2018:过去几个月我自己也遇到过这个问题。梳理日志后,罪魁祸首是数据库流量激增,超出了我的 SQL Server 的 DTU 限制。在这种情况下,重试不一定是足够的解决方案,因为自动重试会有效地阻塞 SQL DB。要检查并查看您是否成为 DTU 限制的受害者,请转到 Azure SQL DB 的“概述”选项卡,查看资源利用率图表,并确保选择“最大值”作为指标。它默认为 Avg,这可以隐藏 DTU 流量中的峰值。
编辑 2019 年 8 月 6 日:如果您的 DTU 已达到上限并想知道是什么原因造成的,可以在 Azure 门户中的 Azure SQL 管理边栏选项卡上查看以下几个位置:
这应该为您提供良好(甚至很好)的错误指示。
关于sql-server - Azure SQL 连接超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42381052/
似乎有很多方法可以在 Azure 中自动使用 PowerShell。由于 ARM 模板是最新的,Azure 中的其他 PowerShell 选项是否已过时?这些工具/脚本之间有什么区别: Azure
我正在开发一个将托管在 Azure 中的 Web API。我想使用 Azure 诊断将错误记录到 Azure 表存储中。在经典门户中,我可以将日志配置为转到 Azure 表存储。 Classic Po
Azure 文件存储事件可以触发 Azure WebJob 或 Azure Function 吗? 例如,在文件夹“/todo/”中创建文件时。 最佳答案 我们目前没有任何 Azure 文件绑定(bi
我需要创建一个逻辑应用程序,我的要求是,我需要从 azure data Lake Gen2 文件夹迁移 json 文件,并根据某些值需要将该 json 转换为 xml,然后将其发送到 SQL。 因此,
我使用 VS Code 创建了 1 个 node.js 和 1 个 java Azure Function 当我使用 VS Code 将这两个函数部署到 Azure 时,我最终获得了这么多 Azure
收集 Azure 诊断数据时,暂存槽是否也会将诊断数据发送到 WadPerformanceCounters 表? 如果是这样,我该如何关闭它?或者在阅读诊断信息时如何区分暂存/生产。 我不想显示有关我
您好,我是 Azure 的新手。我有 VS 2012 和 Azure SDK 2.1,当我使用模拟器运行我的 Web 应用程序时一切正常。但是当我在 azure 上部署时出现错误消息: Could n
我很难区分 Azure 订阅和 Azure 租户有何不同?我尝试使用示例来弄清楚,但每次我得出的结论是它们在某种程度上是相同的?如果租户是组织在注册 Microsoft 云服务时接收并拥有的 Azur
如果我想在 Azure Insights 中设置自定义指标集合,并以(近)实时的方式可视化其中一些指标,并查看聚合的历史数据,我应该使用 Azure Metrics Explorer 还是 Azure
我想了解具有以下配置的 Azure 数据工厂 (ADF) 的现实示例/用例: Azure 集成运行时 (AIR) 默认值 自托管集成运行时(SHIR) 其他问题: 这两种配置(AIR 和 SHIR)是
请参阅下面来自 Azure 服务总线的指标。想要识别请求数量中的背景噪音|流量较低时的响应。假设振荡请求| session 中 amqp 握手的响应是潜在的。只是不明白这是什么类型的握手?从总线接收的
此问题与 Azure 事件中心和 Azure 服务总线之间的区别无关。 问题如下: 如果您将Azure Events Hub添加到您的应用程序中,那么您会注意到它依赖于Azure Service Bu
这两个事情是完全不同的,还是它们能完成的事情大致相同/相似? 最佳答案 Azure 辅助角色是“应用程序场”中您自己的一组虚拟机。您可以以分布式方式在它们上运行任何代码。通常,您编写业务代码以在这些服
我目前正在使用 Windows Azure 虚拟机来运行 RStudio, 我的虚拟机是 Windows Server R2 2012,它是 Azure 上的一项附加服务。 我还有一个 Azure 存
我们正在寻找托管一个网站(一些 css、js、一个 html 文件,但不是 aspx、一个通用处理程序)。 我们部署为: 1) Azure 网站 2) Azure 云服务 两种解决方案都有效。但有一个
我想从 Azure 表创建 blob。 AzCopy 支持此功能,但我找不到任何说明数据移动 API 也支持它的文档。此选项可用吗? https://azure.microsoft.com/en-us
This article表示 Azure 订阅所有者有权访问订阅中的所有资源。但是,要访问 Azure 数据库,必须是数据库中的用户,或者是 Azure Admin AD 组的成员。 无论 SQL 安
我尝试使用以下代码将 XML 文件上传到 Azure FTP 服务器: https://www.c-sharpcorner.com/article/upload-and-download-files-
除了 Azure 服务总线使用主题而 Azure 事件中心基于事件 - Azure 事件中心和 Azure 服务总线之间是否有任何根本区别? 对我来说,事件和消息之间没有真正的区别,因为两者只是不同类
我有一个通过虚拟网络网关连接到 Azure 虚拟网络的 Windows VPN 客户端。目标#1 是使用其内部 IP 地址连接到我的虚拟机。这有效。 第二个目标是使用其内部计算机名称进行连接(因为 I
我是一名优秀的程序员,十分优秀!