2017-12-21 7 views
0

コマンドラインを使用してPervasiveSQLでデータベースを作成する方法を教えてください。コマンドラインからPervasiveSQLでデータベースを作成する

私はControl Center経由でそれを行う方法を知っていますが、コマンドラインから作成したいと思います。私が取り組んでいるプロジェクト用のPervasiveSQLボックスのスタンドアップを自動化するために取り組んでいます。私はサーバを静かにインストールし、RegKeyのインポートを使ってサーバ設定を調整しています。

これで、データベースの作成をスクリプトするだけで済みます。新しいデータベースは、すでにサーバーにコピーされている既存のデータベースファイルを使用します。

私はfound hereを使用しています:dbMaint(264ページ)というユーティリティがありますが、それは仕事をするようですが、私のサーバーにそのツールがないようです。

ご協力いただきありがとうございます。

答えて

1

dbMaintはLinuxのPSQLにのみ提供されています。分散チューニングインターフェイス(DTI)または分散チューニングオブジェクト(DTO)を使用してデータベースを作成するユーティリティを記述する方法があります。 PSQLのドキュメントにリンクすることはできませんが、これらのAPIの使用方法を説明するPSQL v11ドキュメントのダウンロードにPSQL_DTI_GUIDE.pdfとPSQL_DTO_Guide.pdfがあります。

C#サンプルが見つかりました。 Pervasive DTOライブラリを参照として追加する必要があります。これはCOMオブジェクトです。簡単なサンプルは次のとおりです。

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

答えは私が望んでいたが、回答は無かったと思っていた。私の次の質問は、Linuxマシンのツールを使ってWindowsマシンにDBを作成することができますか? – Sage

+0

ドキュメントを見ると、リモートDB名の作成に使用することはできません。私はDTI/DTOを使って小さなサンプルを持っていましたが、見つけたら見てみましょう。 – mirtheil

+0

これまでにDTI \ DTOを使用してそのサンプルを見つけることができましたか? – Sage

関連する問題