从命令行在 PervasiveSQL 中创建数据库
Create Database in PervasiveSQL from Command Line
如何使用命令行在 PervasiveSQL 中创建数据库。
我知道如何通过控制中心来创建它,但我更愿意通过命令行来创建它。我正在努力为我正在从事的项目自动化 PervasiveSQL 框的站立。我的服务器安装是静默进行的,我正在使用 RegKey 导入调整服务器配置。
现在我只需要编写创建数据库的脚本。新数据库将使用已复制到服务器的现有数据库文件。
在我使用的文档中 found here:有一个名为 dbMaint 的实用程序(第 264 页),它似乎可以完成这项工作,但我的服务器上似乎没有该工具。
预先感谢您的帮助。
dbMaint 仅在 Linux 上为 PSQL 提供。有一种方法可以使用分布式调整接口 (DTI) 或分布式调整对象 (DTO) 编写实用程序来创建数据库。我无法 link PSQL 文档,但 PSQL v11 文档下载中有 PSQL_DTI_GUIDE.pdf 和 PSQL_DTO_Guide.pdf 描述了如何使用这些 API。
找到了我不久前整理的 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());
}
}
}
}
如何使用命令行在 PervasiveSQL 中创建数据库。
我知道如何通过控制中心来创建它,但我更愿意通过命令行来创建它。我正在努力为我正在从事的项目自动化 PervasiveSQL 框的站立。我的服务器安装是静默进行的,我正在使用 RegKey 导入调整服务器配置。
现在我只需要编写创建数据库的脚本。新数据库将使用已复制到服务器的现有数据库文件。
在我使用的文档中 found here:有一个名为 dbMaint 的实用程序(第 264 页),它似乎可以完成这项工作,但我的服务器上似乎没有该工具。
预先感谢您的帮助。
dbMaint 仅在 Linux 上为 PSQL 提供。有一种方法可以使用分布式调整接口 (DTI) 或分布式调整对象 (DTO) 编写实用程序来创建数据库。我无法 link PSQL 文档,但 PSQL v11 文档下载中有 PSQL_DTI_GUIDE.pdf 和 PSQL_DTO_Guide.pdf 描述了如何使用这些 API。
找到了我不久前整理的 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());
}
}
}
}