[英]Incomplete Data Transfer from VBA to SQL Server
我在 Azure 中有一個 SQL-Server,我想使用 VBA 通過 VPN 隧道將數據從 Excel 傳輸到其中。 它可以工作,但在 801 個條目中,有時會傳輸 320 個,有時會傳輸 324 個,但始終在 300 到 350 之間的范圍內,再也不會。 它們以正確的順序傳輸,因為它們在 excel 文件中。 我根本沒有收到錯誤。 剛剛在 SQL 表中看到,其中並非所有條目。 我和我的同事也試過幾次,結果也一樣。 我的代碼是:
Sub Importer(ByVal tableName As String, ByVal importQuery As String, pass As String)
Dim con As Object
Set con = CreateObject("ADODB.Connection")
con.Open _
"Driver={ODBC Driver 17 for SQL Server};" & _
"Server=tcp:myServer,1433;" & _
"Database=myDB;" & _
"Uid= admin;" & _
"Pwd=" & pass & ";" & _
"TrustServerCertificate=no;" & _
"Connection Timeout=30;" & _
"Encrypt=yes;"
con.Execute importQuery
con.Close
Set con = Nothing
End Sub
雖然 importQuery 在一個查詢中包含 801 個 INSERT INTO 條目,如下所示:
INSERT INTO dbo.table(Variable1, Variable1, Variable1) Values(", 3)
INSERT INTO dbo.table(Variable1, Variable1, Variable1) Values(", 3)
INSERT INTO dbo.table(Variable1, Variable1, Variable1) Values(", 3)
...
我試圖設置超時但沒有效果。 任何人都知道可能導致問題的原因是什么?
您的偽代碼在語法上不正確,但我想這無關緊要。
當前,您正在以非事務方式執行多個 singleton INSERT
語句。 肯定是您的連接斷開了,或者在代碼執行過程中發生了一些其他問題,導致僅插入了部分數據。
要么圍繞整個INSERT
語句集包裝一個事務。 或者更簡單的方法是將它們轉換為包含多個值的單個INSERT
語句,這將是隱式事務性的並且可能更有效,如下所示:
INSERT INTO dbo.table(Column1, Column2, Column3)
VALUES
(ValueA1, ValueA2, ValueA3),
(ValueB1, ValueB2, ValueB3),
(ValueC1, ValueC2, ValueC3),
(ValueD1, ValueD2, ValueD3),
(ValueE1, ValueE2, ValueE3);
至於您的應用程序遇到的任何錯誤/問題,不幸的是,如果沒有更多詳細信息(例如特定錯誤消息),這是不可取的。 但至少我上面提到的修復將確保所有數據或沒有數據被一致插入。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.