2017-12-21 4 views
0

Wie erstelle ich eine Datenbank in PervasiveSQL über die Befehlszeile.Datenbank in PervasiveSQL über die Befehlszeile erstellen

Ich weiß, wie man es über Control Center macht, aber ich würde es lieber über die Befehlszeile erstellen. Ich arbeite daran, den Stand einer PervasiveSQL-Box für ein Projekt, an dem ich arbeite, zu automatisieren. Ich habe die Server-Installation im Hintergrund durchgeführt und ich bin die Anpassung der Server-Konfiguration mit einem RegKey-Import.

Jetzt muss ich nur die Erstellung der Datenbank Skript. Die neue Datenbank verwendet vorhandene Datenbankdateien, die bereits auf den Server kopiert wurden.

In der Dokumentation, die ich verwende found here: Es gibt ein Dienstprogramm namens dbMaint (Seite 264), die scheint, wie es die Arbeit tun würde, aber ich habe dieses Tool nicht auf meinem Server zu haben.

Vielen Dank im Voraus für Ihre Hilfe.

Antwort

1

dbMaint wird nur für PSQL unter Linux bereitgestellt. Es gibt eine Möglichkeit, ein Dienstprogramm mit dem Distributed Tuning Interface (DTI) oder dem Distributed Tuning Object (DTO) zu erstellen, um die Datenbank zu erstellen. Ich kann nicht mit der PSQL-Dokumentation verlinken, aber es gibt eine PSQL_DTI_GUIDE.pdf und PSQL_DTO_Guide.pdf im Download der PSQL v11-Dokumentation, die beschreibt, wie diese APIs verwendet werden.

Gefunden eine C# -Probe, die ich vor einiger Zeit zusammengestellt habe. Die Pervasive DTO-Bibliothek muss als Referenz hinzugefügt werden. Es ist ein COM-Objekt. Das einfache Beispiel ist:

using System; 
using DTOLib; 

namespace dtoTest 
{ 
    class Class1 
    { 
     [STAThread] 
     static void Main(string[] args) 
     { 
      string compName = null; 
      string userName = null; 
      string password = null; 
      string dbname = null; 
      string ddflocation = null; 
      string datalocation = null; 
      dtoDbFlags dbflags = DTOLib.dtoDbFlags.dtoDbFlagDefault; 

      DTOLib.dtoResult result; 
      if (args.LongLength < 1) 
      { 
       Console.WriteLine("Invalid options.\n"); 
       Console.WriteLine("Usage: dtoDBN.EXE <computername> <username> <password> <dbname> <ddf location> <data location> <DBFlage>"); 
       Console.WriteLine("NOTE: locations must be relative to the computer where the PSQL engine is running."); 
       Console.WriteLine("DB Flags must be passed as integer in this example with these values: "); 
       Console.WriteLine(" P_DBFLAG_BOUND = 1; (* bound database - must have P_DBFLAG_CREATE_DDF too *)"); 
       Console.WriteLine(" P_DBFLAG_RI = 2; (*relational integrity *)"); 
       Console.WriteLine(" P_DBFLAG_CREATE_DDF = 4; (*create ddf flag *)"); 
       Console.WriteLine(" P_DBFLAG_NA = 2147483648; (*not applicable *)"); 
       Console.WriteLine(" P_DBFLAG_DEFAULT = (P_DBFLAG_BOUND or P_DBFLAG_RI); "); 

       return; 
      } 
      if (args.LongLength == 7) 
      { 
       compName = args[0].ToString(); 
       userName = args[1].ToString(); 
       password = args[2].ToString(); 
       dbname = args[3].ToString(); 
       ddflocation = args[4].ToString(); 
       datalocation = args[5].ToString(); 
       dbflags = (dtoDbFlags)Convert.ToInt32(args[6]); 
      } 
      Console.WriteLine("Create Pervasive Database using DTO and C#"); 
      DtoSession mDtoSession = new DTOLib.DtoSession(); 
      try 
      { 
       result = mDtoSession.Connect(compName, userName, password); 
       if (result != 0) 
       { 
        Console.WriteLine("Error connecting to server. Error code:"); 
       } 
       else 
       { 
        //Create a Database name here. 
        DtoDatabase db = new DtoDatabase(); 
        db.Name = dbname; 
        db.DdfPath = ddflocation; 
        db.DataPath = datalocation; 
        db.Flags = dbflags; 
        result = mDtoSession.Databases.Add(db); 
        if (result !=0) 
        { 
         Console.WriteLine(string.Format("Error creating the datbase ({0}). Error code: {1}", dbname, result.ToString())); 
        } 
        else 
        { 
         Console.WriteLine(string.Format("Database ({0}) created. ", dbname)); 

        } 

        result = mDtoSession.Disconnect(); 
        Console.ReadLine(); 
       } 
      } 
      catch (Exception e1) 
      { 
       Console.WriteLine(e1.Message.ToString()); 
      } 
     } 
    } 
} 
+0

Nicht die Antwort, auf die ich gehofft hatte, aber die Antwort, die ich nicht erwartet hatte. Meine nächste Frage ist, kann ich dieses Tool von einem Linux-Rechner verwenden, um eine DB auf einem Windows-Rechner zu erstellen? – Sage

+0

Wenn Sie sich die Dokumentation ansehen, scheint es nicht, dass Sie damit entfernte DB-Namen erstellen können. Ich hatte früher eine kleine Probe mit DTI/DTO, lass mich sehen, ob ich es finden kann. – mirtheil

+0

konnten Sie dieses Beispiel mit DTI \ DTO finden? – Sage

Verwandte Themen