Ich versuche, eine Bulk-Insert-Anweisung mithilfe einer Pass-Through-Abfrage auszuführen. Ich habe den folgenden Code:Fehler 3146: ODBC - Aufruf fehlgeschlagen mit Pass-Through-Masseneinfügung
sSQL = "BULK INSERT tbl_Name "
sSQL = sSQL & "FROM 'C:\Users\UserName\Desktop\File.txt' "
sSQL = sSQL & "WITH "
sSQL = sSQL & "("
sSQL = sSQL & "FIELDTERMINATOR = ',', "
sSQL = sSQL & "ROWTERMINATOR='\n'"
sSQL = sSQL & ");"
Set db = CurrentDb
Set qdf = db.CreateQueryDef("")
qdf.Connect = db.TableDefs("dbo_tbl_Name").Connect
qdf.ReturnRecords = False
qdf.SQL = sSQL
qdf.Execute dbFailOnError
Set qdf = Nothing
Set db = Nothing
Der Fehler, den ich bekommen ist: 3146
mit einer Beschreibung der ODBC--call failed.
Wenn ich die sSQL Anweisung in einer INSERT-Anweisung oder eine SELECT-Anweisung zu ändern, führt die Abfrage nur in Ordnung.
Warum funktioniert mein BULK INSERT nicht im PASS durch Abfrage? Ich drucke meine sSQL-Zeichenfolge aus, um sicherzustellen, dass es korrekt ist, und es scheint zu sein:
Auf eine Randnotiz: Sie können das erste Stück Code schreiben als: 'sSQL =" BULK INSERT tbl_Name & _' Zeilenumbruch 'mehr Code hier". Oder siehe https://msdn.microsoft.com/en- us/library/ba9sxbw4.aspx –
@Tom - Danke, ich werde das definitiv versuchen. – NLMDEJ