Announcement

Collapse
No announcement yet.

Problem beim Abarbeiten eines durch C#-Code erzeugtem Batch-File

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Problem beim Abarbeiten eines durch C#-Code erzeugtem Batch-File

    Hallo alle zusammen,
    <br>
    ich möchte mir anhand meines Programms ein Batch-File, sowie ein Sql-File generieren und anschließend das erzeugte Sql-File als Input-File für das Kommando "osql" in dem Batch-File zur Verfügung stellen.
    <br>
    Ich erzeuge mit folgendem Code die zwei Dateien "attachDB.sql" und "setup.bat":
    <br>
    AttachAtpDBFile = File.CreateText(.. + "attachDB.sql");
    AttachAtpDBFile.AutoFlush = true;
    AttachAtpDBFile.WriteLine("CREATE DATABASE {0}", DatabaseName);
    AttachAtpDBFile.WriteLine("ON PRIMARY (FILENAME = '{0}')", AtpMdfFilePath);
    AttachAtpDBFile.WriteLine("FOR ATTACH");
    AttachAtpDBFile.WriteLine("go");
    AttachAtpDBFile.WriteLine("USE ATP");
    AttachAtpDBFile.WriteLine("go");
    AttachAtpDBFile.Close();
    <br>
    SetupBatchFile = File.CreateText(.. + "setup.bat");
    SetupBatchFile.AutoFlush = true;
    SetupBatchFile.WriteLine("@echo off");
    SetupBatchFile.WriteLine("scm.exe -Action 1 -Silent 1 -Service MSSQLServer");
    SetupBatchFile.WriteLine(@"osql -E -i {0} > c:\log.txt", .. + "attachDB.sql");
    SetupBatchFile.WriteLine("@echo on");
    SetupBatchFile.Close();
    <br>
    Anschließend führe ich das Batch-File mit folgendem Code aus:
    <br>
    System.Diagnostics.Process proc = new System.Diagnostics.Process();
    proc.EnableRaisingEvents=false;
    proc.StartInfo.FileName=.. + "setup.bat";
    proc.StartInfo.Arguments="";
    proc.Start();
    proc.WaitForExit();
    <br>
    Das Problem ist jetzt leider nur, dass das Batch-File ausgeführt wird, jedoch von osql die folgende Fehlermeldung erhalte:
    <br>
    Eingabedatei attachDB.sql kann nicht ge”ffnet werden
    Datei oder Verzeichnis nicht vorhanden
    <br>
    Wenn ich das Batch-File nach der fehlerhaften Abarbeitung des Programms manuell ausführe, wird die Datenbank korrekt erzeugt (also die Datei attachDB.sql wird dann gefunden)!
    <br>
    Weiß jemand was ich falsch mache, bzw. was ich evtl. noch beachten muss?
    <br>
    Mit freundlichen Grüßen
    <br>
    David R.

  • #2
    Hallo,

    wenn nach dem -i das SQL-Script als vollständiger Pfadname (so wie später auch bei der Ausgabeumleitung in die Log-Datei) an osql übergeben wird, sollte der Spuk verschwinden. Da das Arbeitsverzeichnis des abgespalteten Prozesses nicht definiert wird, kann die übergebene SQL-Scriptdatei nicht gefunden werden, wenn nur ein relativer Dateiname (ohne Pfadangabe) übergeben wird

    Comment

    Working...
    X