Azure的數據廠擁有Stored Procedure task可能做到這一點。它在policy
部分有一個timeout
屬性,該屬性是可選的。如果你離開它,它默認爲無限:
"policy": {
"concurrency": 1,
"retry": 3
},
如果在創建活動時,指定超時爲0,你會看到它消失的時候,你準備在門戶網站中的任務。您也可以嘗試在1天(24小時)指定超時時間,例如"timeout": "1.00:00:00"
,但我沒有正確測試超時。
你也可以將超時設置爲0的連接字符串中雖然再次我沒有測試過該選項,例如
{
"name": "AzureSqlLinkedService",
"properties": {
"type": "AzureSqlDatabase",
"typeProperties": {
"connectionString": "Server=tcp:<servername>.database.windows.net,1433;Database=<databasename>;User ID=<username>@<servername>;Password=<password>;Trusted_Connection=False;Encrypt=True;Connection Timeout=0"
}
}
}
我會認爲這是比Azure的自動化更簡單,但這是一個個人的選擇。也許試試這兩個選項,看看哪個最適合你。
我同意一些其他意見正在對該MERGE
時間太長了記錄該卷。我懷疑你的表沒有合適的索引來支持MERGE
,或者你的服務層運行得太低。你在哪個服務層上運行,例如Basic,Standard,Premium(P1-P15)。考慮用包含索引和一些示例數據,MERGE語句和服務層的表的DDL提出一個單獨的問題,我相信這可以加快速度。
作爲測試/快速修復,您可以隨時將MERGE重構爲適當的INSERT
/UPDATE
/DELETE
- 我敢打賭它會更快。讓我們知道。
Azure的數據工廠和天青之間的連接數據庫應該是穩定的。如果不是,你可以籌集支持票。然而,對於雲架構(及任何真正的架構),你需要做良好的設計決策允許的事情出錯的可能性。這意味着在架構上,您必須設計連接丟失的可能性,或者失敗的工作。例子是確保你的工作可以從故障點重新啓動,確保錯誤報告是好的,等等。
另外,從經驗來看,考慮到你的數據量(我認爲這很低)長。它必須有一個問題或設計。我強烈建議您嘗試解決此問題。
任何機會,你可以把它分解成更小的處決?一次可能有50,000個。 –
如果您在40M行表上運行MERGE語句,則需要大量時間,並且很難在塊中分解,這很複雜。我想找到這個簡單的解決方案。另外,它取決於你的數據庫有多強大,數據庫在哪一層? –
最有可能你做什麼 - SQL Server將只要檢測到連接已關閉終止您的程序執行(是的,BeginExecuteNonQuery將保持連接打開)。 – Evk