2009-06-22 8 views
0

Ich habe eine Konsolenanwendung, die zwei Batch-Dateien verwendet, um eine ZIP-Datei zu dekomprimieren, nehmen Sie die xls dekomprimiert konvertieren Sie es in CSV und BCP die Daten in eine SQL-Tabelle. Ich möchte diese Konsolen-App so planen, dass sie einmal am Tag ausgeführt wird. Ich habe Windows Taskplaner eingerichtet, um diese App auszuführen. Ich versuche, die Aufgabe "zu testen" und bekomme keinen Fehler. Ich habe die App in eine TXT-Datei schreiben, wenn Ausnahmen abgefangen werden, und ich bekomme einen Fehler nach dem Muster "Die xls-Datei, die Sie verwenden möchten, wird von einem anderen Prozess verwendet".Windows Taskplaner kann keine geplante Konsolenanwendung ausführen

HINWEIS: Ich weiß, dass es effizientere Möglichkeiten gibt, den Import von xls nach SQL durchzuführen, aber es ist für einen Client, der zu billig ist, um eine FULL-Version von SQL SERVER zu kaufen.

+0

könnten Sie Ihre Skripte posten? – Grzenio

+0

Die erste Batchdatei wird mit 7zip (7z.exe x C: \ BCP \ RFSR.zip-aoa -oC: \ BCP \ -ppassword) del c: \ BCP \ RFSR.csv *. */Q –

+0

der zweite ausgeführt Batch verwendet BCP, um eine CSV in eine SQL DB zu kopieren. (BCP server.dbo.test in C: \ BCP \ RFSR.csv -F2 -t, -C -S-Server -U Benutzername -P Passwort) –

Antwort

1

Etwas hat nicht freigegeben, es hält die XML-Datei. Sie müssen herausfinden, welches andere Programm diese Ressource verwendet und sicherstellen, dass die Verbindungen geschlossen sind. Es kann sein, dass Sie in Ihrem Testlauf Ihre Verbindung nicht schließen, und später, wenn die Aufgabe ausgeführt wird, gibt es einen anderen Prozess (die frühere Instanz Ihrer Anwendung), der die Ressource nicht freigegeben hat.

1

klingt wie Sie sind triying die XML-Datei verwenden, bevor es vollständig dekomprimiert ist. Überprüfen Sie auch die Möglichkeit, dass rie819 zuvor erwähnt wurde.

Wir könnten Ihnen besser helfen, wenn Sie Ihre Skripte posten.

+0

Imports System Imports System.Diagnostics Imports Microsoft.Office.Interop Imports System.Data.SqlClient Imports System.Data.OleDb Imports System.IO Imports System.Text Module Module1 Dim CURRENTDIR As String = System.Environment.CurrentDirectory.ToString Sub main() callRFSRDecompressBatch() ExcelToCVS() callBCPCSVBatch() Ende Unter –

+0

Sub ExcelToCVS() Dim StrConn As String Dim DA As New OleDbDataAdapter Dim DS As New DataSet Dim Str As String Dim Spaltenanzahl As Integer Dim OuterCount As Integer Dim InnerCount As Integer Dim RowCount As Integer Versuchen StrConn = „Provider = Microsoft.Jet.OLEDB.4.0; Datenquelle = c: \ BCP \ RFSR.XLS; Erweiterte Eigenschaften = Excel 8.0; " –

+0

Dim objConn als neue OleDbConnection (StrConn) Versuchen Sie objConn.Open() Wenn objConn.State = ConnectionState.Geschlossen Dann Else End If Fang ex As Exception logError (ex) Exit Sub End Try Dim objCmd As New OleDbCommand ("select * from [rfsr $]", objConn) objCmd.CommandType = CommandType.Text Dim ObjStreamWriter Wie Stream ObjStreamWriter = new Stream ("c: \ BCP \ RFSR.CSV") –

0

Ich fand einen Weg, um die Ergebnisse zu produzieren, die ich brauchte. Ich habe die zwei Batch-Dateien aus der Konsolen-App genommen. Ich habe jetzt eine Aufgabe geplant, um einen Stapel, die Konsolen-App und den letzten Stapel auszuführen. Beide Antworten, die ich erhielt, waren richtig, es gab das XML nicht frei, weil sich die Konsolenfenster mitten in der Ausführung öffneten. Seit sie entfernt wurden, habe ich keine Fehler mehr. Danke für die Hilfe. -Z