• 在COBOL程序中,如何通过DBMaster的DCI将NULL插入CHAR类型字段?(DBMR2557)
    用户可使用以下三个DCI配置变量将NULL插入CHAR类型字段: Ÿ   DCI_NULL_ON_SPACE_CHAR Ÿ   DCI_NULL_ON_ILLEGAL_DATE Ÿ   DCI_NULL_ON_ILLEGAL_DATA 此外,用户还可以使用以下语句动态设置这三个变量。 CALL "DCI_SETENV" USING "DCI_NULL_ON_ILLEGAL_DATA" "1" CALL "DCI_SETENV" USING "DCI_NULL_ON_ILLEGAL_DATE" "1"CALL "DCI_SETENV" USING "DCI_NULL_ON_SPACE_CHAR" "1"CALL "DCI_SETENV" USING "DCI_NULL_ON_ILLEGAL_DATA" "0"CALL "DCI_SETENV" USING "DCI_NULL_ON_ILLEGAL_DATE" "0"CALL ...
  • 在Linux平台,如何在MF COBOL 4.1中使用DCI_WHERE_CONSTRAINT?(DBMR2553)
    DBMaster的DCI对DCI_WHERE_CONSTRAINT的支持始于2014年1月底之后编译的DBMaster版本。用户可通过对DCI_SET_WHERE的调用使用DCI_WHERE_CONSTRAINT。在Linux平台,若要在MF COBOL 4.1中使用DCI_WHERE_CONSTRAINT,有以下两种方法供用户选择:一是复制新的lib文件libdmmfcbl.a到目录~DBMaster/5.2/lib下,使用新的DCI;二是修改makefile,并执行make rtsbmf命令,例如,将“cob -vgxo rtsdbmf -e "" +F DBMAKERINTF +F DCI_SETENV +F DCI_GETENV +F DCI_DISCONNECT\”修改为“cob -vgxo rtsdbmf -e "" +F DBMAKERINTF +F DCI_SETENV +F ...
  • 在UNIX系统下连接到成功编译的EC程序时,为什么ESQL/C会报错?
    因为对于Redhat9或者以后的版本,被用于连接EC程序的libdmapic.a需要在Redhat9 下重新编译。我们会为客户创建新的版本。 ...
  • 在JDBA中可以进行锁超时设定吗?
    可以。您可以通过使用以下的代码达到您的目的: Class.forName("dbmaster.sql.JdbcOdbcDriver"); Connection con = DriverManager.getConnection( "jdbc:dbmaster://127.0.0.1:2453/dbsample4;CTIMO=30;","sysadm",""); ...
  • 在Windows系统下,为什么错误信息会是乱码呢?
    当用户连接他们的ODBC程序时,我们建议用户连接dmapi4X.lib。否则,如果数据库没有很好得被配置,用户就有可能看见乱码的错误信息。 ...
  • 在执行dropping table 和loading table后,分别使用update statistics table和update statistics,为什么后一个的执行时间短于前一个呢?在DBMaster中这两种处理方法是不同的吗?执行update statistics 时,除了systablespace的数据之外,还有别的systemcatalog 被更新吗?
    update statistics 和 update statistics table处理方法是不同的。因为update statistics将会更新所有的表的字段,索引等等。所以为了节约资源,当累积一定数量的数据时它才更新统计。结果,用户会觉得update statistics节约时间。 用户可以使用以下语法强迫DBMaster更新所有统计: update statistics sample=100 update statistics将更新表,字段,索引。所以所有包括这些的系统表都将被更新。 ...
  • 在PHP程序中,如何改变SFO的文件扩展名?
      请看下例: $conn=odbc_connect("nba","SYSADM","");    if($conn)          {               error_reporting(0);               odbc_do($conn,"drop table php_fotest");               error_reporting(7);          $res1=odbc_do($conn,                        "create table php_fotest(c1 int,c2 file)");           if($res1){                              $res=odbc_prepare($conn,                                      "insert into php_fotest values(?,?)");                     odbc_exec($conn, "set extname to ...
  • 在执行dropping table 和loading table后,分别使用update statistics table和update statistics,为什么后一个的执行时间短于前一个呢?在DBMaster中这两种处理方法是不同的吗?执行update statistics 时除了systablespace的数据之外,还有别的系统表被更新吗?
    update statistics 和 update statistics table处理方法是不同的。因为update statistics将会更新所有表的字段,索引等。所以为了节约资源,当有累积一定数量的数据时才执行更新统计。结果,用户会觉得update statistics节约时间。 用户可以使用以下语法强迫DBMaster更新所有统计: update statistics sample=100 update statistics将更新表,字段,索引。所以所有包括这些的系统表都将被更新。 ...
  • 在执行更新操作时,如果新数据大于之前的数据,DBMaster如何操作?
    如果页面剩余空间可以存储新数据,DBMaster会首先删掉旧数据,然后在同样的地方存储新数据。如果页面剩余空间不够存储新数据,DBMaster在删除旧数据后,将新数据设置为间接数据。间接数据需要更多的I/O,可能引起性能下降,为避免产生间接数据,请在创建表时设置合适的FILLFACTOR值。 ...
  • 在ESQL应用程序中使用cursor update,为什么发生错误?
    例如: 表模式如下: dmSQL> def table card1; create table SYSADM.CARD1 (  NUM  SERIAL(1),  DD  INTEGER not null,  EE  CHAR(1) not null,  FIRSTNAME  VARCHAR(30) not null,  LASTNAME  VARCHAR(30) not null  ,  TITLE  VARCHAR(30) default null ,  BMP  ...
  • 在Orcale中,用户可以通过下面的语句将date类型转换为char类型,那么在DBMaster中如何实现呢?
    select * from QMDVFCMDBS where sts_tkystr <= to_char(sysdate,'yyyymmdd') and sts_tkyend >= to_char(sysdate,'yyyymmdd')   DBMaster提供了转换函数,在DBMaster路径 \DBMaster\x.x\shared\udf下有两个转换函数todate 和 datetostr。不过用户需要先创建这个UDF。 或者,通过下面的语句实现: select replace(cast(curdate() as char(10)),'-','') as new_char; 假设有一个表的模式如下: create table SYSADM.B (  STS_TKYSTR  CHAR(10) default null ...
  • 在CONCAT函数中如果一个字符串表达示包含一个NULL值时,将会返回什么值?
    语法的设置决定了返回什么样的值决定于该语法的设置:      SET CONCAT NULL RETURN { NULL | STRING } 此选项用于通过CONCAT内置函数或者连接谓词(||)进行字符串与NULL的连接时。 默认设置为NULL,如果此选项设定为NULL,那么任何字符串与Null值连接都将返回NULL。 如果此选项设定为STRING,那么任何字符串与Null值连接都返回这个字符串,因为这个空值会被当做空的字符串处理。 例如: dmSQL> select concat ('aaa', null);                     CONCAT ('AAA', NULL)                               =================================================================== NULL                             1 rows selected dmSQL> set concat null return string; dmSQL> select concat ...
  • 在DBMaster中,UID/Password的加密方式是什么?(From DBMR1717)
    DBMaster使用的这种加密技术是DES和RSA的混合DBMaster使用的这种加密技术是DES和RSA的混合 ...
  • 在经过高版本的DBMaster启动后,为什么用以前的DBMaster版本无法启动了?怎么解决此问题。(From DBMR1747)
    一旦用更高版本的DB启动数据库,一些文件版本或者系统表就被修改,更高级的数据库不能降级到低版本或更早版本。所以它再也不能用以前的版本启动了。 但是,可以使用dmSQL工具先卸载DB,然后重新装载它到以前的DBMaster版本里。 ...
  • 在Windows平台,当最小化dmserver窗口时,为什么内存占有减小?(From 1748)
    这应该是Windows的行为。不仅仅是dmserver存在这种现象,别的程序像Outlook或者IE也存在此情况。如果你最小化dmserver到系统托盘区或者作为一种服务启动DB,这种情况将不会发生。 ...
  • 在Windows平台手动安装DBMaster客户端和DSN通常有哪些步骤?(From DBMR1783; Version: DBMaster 4.16)
    一般地,安装DBMaster客户端和DSN有如下四个步骤(以4.16为例): 步骤1:复制文件,确保以下的文件在正确的路径下 路径 文件 Windows 路径 (如C:\Windows\, C:\Winnt) dmconfig.ini dmerr41.tab DMSQL.INI Windows 系统路径 (如C:\Windows\system32\,   C:\Winnt\system32) dmapi41.dll DMSQL.INI (DBMaster 根目录) \4.1\ COPYRIGHT EVALUATION grammar.sql README.TXT (DBMaster 根目录) \4.1\bin\ dmdttut.dll dmjdbaut.dll dmjdbc20.jar dmjdbc20xa.jar dmjdbc30.jar dmjsvrut.dll dmppc32.exe dmppcc.exe dmset.dll dmsql32.exe dmxtm.dll dmxtm.jar dmxtt.dll dmxtt.jar expat.dll icudt22l.dll icuin22.dll icuuc22.dll jcfgditor.ico jdatatran.ico jdbatool.ico jh.jar jhelp.jar jmonitor.ico jsvrmanager.ico jtools.jar startup.jar xerces-c_2_1_0.dll xtm.ico xtm.jar xtt.ico xtt.jar (DBMaster 根目录) \4.1\include\   dmxtm.h dmxtt.h eqmacro.h eqspincl.h esqlda.h esqlincl.h esqlprot.h esqltype.h jni.h jni_md.h libudf.h odbc.h sql.h sqlca.h sqlext.h sqlopt.h sqltypes.h sqlucode.h sqlunix.h XMLTransfer.hpp XTMTransfer.hpp (DBMaster根目录) \4.1\jre\ All files (DBMaster根目录) \4.1\lib\ dmapi41.lib dmxtm.lib dmxtt.lib (DBMaster根目录) \4.1\   shared\errtab\ dmisql.tab dmJdbc.properties dmjtool.tab (DBMaster根目录) \4.1\   shared\codepage\ dmB5LToU.map dmB5UToL.map dmCyrillicLToU.map dmCyrillicUToL.map dmGBKLToU.map dmGBKUToL.map dmGreekLToU.map dmGreekUToL.map dmJISLToU.map dmJISUToL.map dmLatin1LToU.map dmLatin1UToL.map dmLatin2LToU.map dmLatin2UToL.map But for other JAVA Tools, creating shortcut is used to ...
  • 在Windows平台手动安装DBMaster驱动和DSN通常有哪些步骤?(From DBMR1783; 版本: DBMaster 4.16)
    一般地,安装DBMaster客户端和DSN有如下四个步骤,(以4.16为例): 步骤1:复制文件,确保以下的文件在正确的路径下 路径 文件 Windows 主路径 (如 C:\Windows\, C:\Winnt) dmconfig.ini dmerr41.tab Windows 系统路径 (如:C:\Windows\system32\, C:\Winnt\system32) dmapi41.dll dmjdbc41.dll (DBMaster 根目录) \4.1\ COPYRIGHT EVALUATION README.TXT (DBMaster根目录) \4.1\bin\ dmjdbc20.jar dmjdbc20xa.jar dmjdbc30.jar dmset.dll (DBMaster 根目录) \4.1\   shared\errtab\   dmJdbc.properties (DBMaster 根目录) \4.1\   shared\codepage\ dmB5LToU.map dmB5UToL.map dmCyrillicLToU.map dmCyrillicUToL.map dmGBKLToU.map dmGBKUToL.map dmGreekLToU.map dmGreekUToL.map dmJISLToU.map dmJISUToL.map dmLatin1LToU.map dmLatin1UToL.map dmLatin2LToU.map dmLatin2UToL.map 步骤2:配置dmconfig.ini文件      [DBSAMPLE4]      DB_PTNUM = 2453      DB_SVADR = 192.16.0.121   ; address of the server ...
  • 在DBMaster内部如何处理ALTER TABLE这个语句?(From DBMR1740)
    1. 在DBMaster4.1x之前(包括4.1x),”ALTER TABLE”语句将复制另一个内部表(select into),所以它会占据双倍的磁盘空间并写入日志(请注意日志满的问题)  2. 在DBMaster4.2x之后的版本(包括4.2x),仅在表的尾部添加一个字段并且默认值为null就能够非常轻松地进行ALTER TABLE(仅修改表模式,与表中的数据关系不大)。除了这种情况,所有的‘ALTER TABLE’SQL命令也需要占据双倍磁盘空间并写日志文件(也请注意日志满的问题)。  3. 解决的办法是:创建一个新的内部表-> 从修改的源表中选择数据库到新的内部表-> 删除已修改的表-> 重命名新的内部表-> 标记内部表为public。  4. SELECT...INTO也会写入日志文件,它会占有巨大的日志文件空间。在对一个大表执行'ALTER TABLE'之前,请检查日志文件空间是否充足。 ...
  • 在一个表中有两个Unicode记录,一个是简体中文,一个是日文。当执行一个查询,为什么它会返回所有的记录,而不是根据搜索条件正确的那个呢?(Version: 4.2)
    当在DBMaster4.2版本中设置DB_LCODE的值为1时,SIGNATURE TEXT INDEX将会返回所有,但是IVF TEXT INDEX将返回正确的那个。现在SIGNATURE TEXT INDEX不支持Unicode,IVF TEXT INDEX支持。所以,我们建议删除SIGNATRUE TEXT INDEX,建立 IVF TEXT INDEX来解决此问题。 请参考以下的示例: dmSQL>create table test_srh (ID serial,Name char(30),TextBlock NCLOB); dmSQL>create  text index IDXTEXTBLOCK on test_srh ...
  • 在DBMaster存储过程中,如果使用临时表来保存结果集,怎样处理临时表?什么时候删掉?(From DBMR 1800)
    临时表仅存在于当前会话,DBMaster在推出会话时会自动删除临时表。所以在存储过程中如果使用临时表来保存结果集,用户不必在得到结果之后删除临时表。 如果在当前会话中执行了多次存储过程,那么第二次将会显示错误:这个表已经存在。为了避免这样的情况,应该在存储过程开头添加“drop table table_name”语句。 在 “$ begin code section;”语句的后面,请添加如下的两个语句: $ WHENEVER SQLERROR CONTINUE; $ drop table temporanea;   ...
  • 在网络系统里使用UTF-8字符集时,在以下的情况中怎样避免垃圾字符?(From DBMR 1847) 1. Web AP插入/选择UTF-8数据。 2. Web AP通过Ms Access插入数据和更新数据等等。 3. MS Access或dmSQL插入数据到DB然后Web AP选择数据。
    1. Web AP运行UTF-8数据是没有问题的,DBMaster只支持U16LE。 2. 如果对nclob/nvarchar/nchar等类型的数据进行排序,客户可以使用ODBC驱动管理器来通过MS Access来访问数据。 3. 用户能够创建如nclob/nvarchar/nchar的字段类型来存储Unicode数据,但是应该通过它们自身的插入/获取功能从U8转换成U16LE。 4. 在通过dmSQL插入数据之前,首先应转换数据为Unicode,然后使用'xxxx'u 插入数据。这就意味不能直接通过dmSQL插入UTF-8,在插入之前应该将UTF-8转换为UTF-16,然后插入UTF-16数据。 这有两种方法: A). DBMaster提供客户端UDF—U8toU16/U16toU8来帮助用户转换数据,当时它们的字段类型应该是如nclob/nchar/nvarchar这样的。 select u8tou16(c1) from t1; 这样数据将会是正确的,并且没有垃圾字符,dmSQL不懂这些易读的数据。 B). 像SQL Server一样,存储UTF8到二进位字段类型。但是不能使用数据库搜索功能(like...etc),这就是SQLServer的解决方法。 使用UDF应该更改它们的程序,但是使用二进制存储不需要更改。 ...
  • 在ESQL/C里怎样为主变量使用NCHAR (unicode)数据类型?
    请如下所示检查esqltype.h定义的NCHAR。 typedef char    nchar;             /* for unicode #004 */ typedef varchar nvarchar;          /* for unicode #004 */ typedef longvarchar nclob;         /* for unicode #004 */  如果esqltype.h有这种定义,用户能够在ESLQ/C使用nchar,但是用户应该给出正确的Unicode(自行将本地字符转换为Unicode)数据到nchar缓冲器。 例如: create table nt1 (c1 ...
  • 在build wrun32.dll时,lib文件的次序有影响吗?
    在AcuGT5.x 中,如果按照下面的次序增加DCI库:dmapi50.lib dmacu52.lib 和 dmdcic.lib(确定dmapi50.lib是第一个),运行COBOL程序不会出错。但是在AcuGT6.x中,同样次序的lib文件会导致错误。如果以下面的次序build wrun32.dll:dmacu52.lib, dmdcic.lib 和 dmapi50.lib (dmapi50.lib 是最后一个),ACU COBOL程序不会出任何错误。 这是因为AcuGT5.x版本与6.x版本的不同,6.x在检查链接库次序时或许有一些特别考虑。DBMaster DCI对此没有做任何修改,问题的发生与不同的AcuGT版本有关系。 另外,AcuGT 5.x 和 6.x使用不同的方法build wrun32.dll:AcuGT5.x使用wrun32.mak文件,AcuGT6.x 使用wrun32 VC++ 6.0工程(wrun32.dsw)。 ...
  • 在DBMaster 4.0中,监测日志文件输出到哪里了?下面的两种情况下一样吗?1. 由NT服务启动数据库。2. 由dmserver启动,并在启动时设置监测日志路径。
     监测日志文件会位于下面的路径中: 1. 操作系统路径。 (如 C:\WINNT\system32). 2. DBMaster主目录\bin 或工作路径。 3. DB_AUDIR: 4.3支持设置AUDIT LOG 路径。如果没有设置该关键字,AUDIT LOG将位于DB_DbDir 下。 在4.0中,用户不能设置AUDIT LOG路径,但可以在文件DBNAME.LOG中查找。 操作系统   NT服务启动数据库   Dmserver启动数据库   注意   windows 2003 server C:\WINDOWS\System32 DBMaster\4.0\bin 如果Windows2003   server是64位的,通过服务C:\WINDOWS\SysWOW64启动数据库。 如果Windows2003   server是32位的,通过服务C:\WINDOWS\System32启动数据库。 windows 2000 server C:\WINNT\system32 DBMaster\4.0\bin N/A ...
  • 在Windows平台上,对关键字DB_NJNLB是否有什么限制? (DBMR 1882, version: DBMaster 5.0)
    目前,Windows平台上,DBMaster 对关键字DB_NJNLB有一些限制;下表列出了当前Windows操作系统的限制。         Windows平台上对DBMaker日志缓存(DB_NJNLB)的限制 DBMaker 版本 Windows 平台 限制 描述 DBMaker5.0 Windows 2000 server + sp4 63M   DBMaker5.0 Windows XP + sp2 63M   DBMaker5.0 Windows 2003 Server 63M   DBMaker5.0 Windows 2003 server + sp2 63M   DBMaker5.0 Windows Vista Ultimate 63M   DBMaker5.0 Windows 2008 63M   DBMaker5.0 DBMaker5.0 Bundle Windows2003 64bit ...
  • 在线完整备份会影响到在线事务吗?(DBMR: 1892, 版本: DBMaster 4.1 bundle)
    在线完整备份的主要成本是IO.在检查数据库状态和内部设定后,数据库服务器会执行复制操作,复制数据库文件,它主要耗费的是系统的输入输出。 ...
  • 在4.3.3 bundle版中,如何使用ESQL/C存储过程? (DBMR 1912)
    假设HOME路径为C:\dbmaster\43bundle. 使用过程将用到4.3.3 标准版中的一些文件夹和文件,所以用户需要复制这些相关的文件到bundle路径下。 通过下面的步骤,用户可以为在4.3.3bundle中使用ESQL/C存储过程准备环境。 步骤: (1)   在注册表中注册DBMaster bundle版:为bundle注册HOME和COMPILER。 (2)   复制dmppcc.exe 到bundle\bin (C:\dbmaster\43bundle\bin)下 (3)   复制dmapi43.dll 到bundle\bin (C:\dbmaster\43bundle\bin)下 (4)   复制dmconfig.ini到 bundle\bin (C:\dbmaster\43bundle\bin)下 (5)   复制templates 文件夹到bundle (C:\dbmaster\43bundle\templates)下 (6)   从标准版中复制include 文件夹到bundle (C:\dbmaster\43bundle\include)下 (7)   从标准版中复制lib 文件夹到bundle (C:\dbmaster\43bundle\lib)下 (8)   修改templates文件夹下的文件 vc60.mak:修改文件夹为正在使用的文件夹;如果vc60.mak中还有其他文件夹或文件,那么也要将这些文件夹或文件复制到bundle文件夹下。 例如:     C:\DBMaster\4.3\include ...
  • 在64bit平台上如何为DBMaster 4.3设置DSN? (DBMR: 1911, version: DBMaster 4.3 bundle)
    除下面的两点外,其他设置都与32bit平台相同。 (1)   用户需要在[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node] 中注册DBMaster4.3 和ODBC驱动。 Node (Wow6432Node)用来在64bit操作系统注册32bit软件。 (2)   需要使用32bit ODBC 数据库源管理器,而不是64bit的。 默认打开64bit,不是32bit。32bit驱动管理器是odbcad32.exe,它位于“C:\WINDOWS\SysWOW64”(假设操作系统是Windows 2003 x64 Edition)下。 请使用32bit驱动管理器来创建DSN。 我们不建议用户在64bit 操作系统上使用32bit DBMaster。我们不久将会发布64bit  (DBMaster 5.1)DBMaster版本。 ...
  • 在经过XMLExport 和 XMLImport工具的export和import后,为什么字符数据的编码与原来的编码不一样了? (DBMR 1917; 版本: DBMaster 4.X)
    A1. 对于日文版DBMaster, XML文件的编码是Shift_JIS。Shift_JIS编码有两种:83pv和90pv。 因为DBMaster XMLImport 内部在数据插入之前会将数据转换为Unicode编码。默认情况,Unicode对应于90pv类型的Shift_JIS。所以,如果原来的数据是83pv的数据,在import到数据库后,83pv的数据会被转换为90pv的数据。 更详细信息请参考:http://homepage1.nifty.com/hm7/works/AppleScript/83pvSpChar-to-90pv.text。 在将数据插入到数据库之前,用户可以将83pv转换为90pv,因为DBMaster 4.x系列产品的XMLImport仅接受90pv Shift_JIS。 DBMaster 4.x 系列只支持90pv是因为微软的公告:http://support.microsoft.com/kb/170559/EN-US/。 所以我们将83pv转换到90pv。 DBMaster 5.x 系列会支持83pv,而不需要转换为90pv,因为日文操作系统(CP932)采用83pv,比90pv更常见。 例如: 假设用户原来的数据(∈∋⊆⊇⊂⊃∪∩∧∨¬)是83pv的,16进制编码为81 B8 81 B9 81 BA 81 BB 81 BC 81 BD 87 9C ...
  • 在插入数据过程中如果发生网络断开DBMaster将怎样处理?(DBMR 1945)
    如果在插入数据过程中发生这样的情况,当前断开的连接可能会在server端保留并且会话仍然占用资源。该会话虽然存在但它已成为无效的会话。DBMaster不会自动释放无用连接的资源,所以用户可能会看见锁超时的错误信息。用户应该断开这些无用的会话以便释放资源。 如果在提交一个事务之前发生网络断开,在断开死连接之后,中止的事务将会被回滚。 ...
  • 在bundle 4.3.3中,如何使用Java存储过程?(DBMR 1912)
    假设HOME路径为:C:\dbmaster\43bundle. 参照下面的步骤在4.3.3bundle中创建Java sp的构建环境: (1)   从标准版中复制JRE文件夹到bundle (C:\dbmaster\43bundle\jre)下 (2)   复制dmclassloader.jar 到 bundle\bin (C:\dbmaster\43bundle\bin)下 (3)   移动bundle所有jar 文件到bundle\bin (C:\dbmaster\43bundle\bin)下,Jar 文件有:dmjdbc20xa.jar, dmjdbc20.jar, dmjdbc30.jar. 注意:如果任何一个jar文件位于C:\dbmaster\43bundle 文件夹,调用java sp都不会执行任何操作。 之后,用户可以在bundle4.3.3中创建和使用java sp了。 ...
  • 在执行下一个完整备份后,DBMaster是否会移动当前的增量备份文件?
    在5.0之前(不包括5.0),DBMaster不移动DB_BKDIR下的增量备份文件。但是用户发现在执行了一个新的完整备份后,那些增量备份文件便失去了存在的意义。所以,从5.0开始,执行一个新的完整备份后,DBMaster会转移原来的没有作用的增量备份文件。 无论用户是否设置了关键字DB_BkOdr,5.0都会转移DB_BKDIR路径下之前的增量备份文件。如果设置了DB_BkOdr,之前的增量备份文件将会被复制到DB_BkOdr下。这就是说,DBMaster 5.0会在执行下一个新完整备份前,删除或备份之前的增量备份文件。 对于备份,5.0做了改动,详细信息请参考相关手册。 ...
  • 在bundle 版中,如何通过在线备份文件来备份和恢复数据库? (DBMR1973; 版本:DBMaster bundle 4.3.4)
    在bundle版中,有两种方法可以备份和恢复数据库。一种是使用Jserver Manager工具。但是如果用户只安装了DBMaster客户端,那么不能使用JServer Manager工具,备份和恢复数据库这两个功能都是在服务器端使用的。 另一种方法是使用Rollover工具,该工具位于DBMaster 4.3.4 标准版的bin目录下。 ...
  • 在程序中如何使用OID?(DBMR1974; 版本:DBMaster 4.2 in Linux)
    OID是一种特殊数据类型。虽然可以在查询中使用OID来从表中选择数据,但这不是SQL语言中常用的,OID 通常用在内部程序接口中。所以建议用户不要在程序中直接使用OID,否则,有时可能会导致乱码的出现。 实际上,用户需要的可能仅仅是与OID相关的对象名称。 如下面的例子: select USER_NAME, TABLE_NAME, SYSLOCK.LK_GRAN, SYSLOCK.HOLD_LK_CONNECTION, SYSLOCK.LK_CURRENT_MODE from SYSLOCK,SYSTEM.SYSTABLE,SYSUSER where HOLD_LK_CONNECTION = CONNECTION_ID and LK_OBJECT_ID = TABLE_OID and TABLE_OWNER != 'SYSTEM'; ...
  • 在UTF-8数据库中,如何避免php程序中的垃圾字符问题?
    此问题是由于php页中的数据是UTF-8编码引起的。当数据发送到驱动管理器时,驱动管理器发现DBMaster支持unicode ODBC函数,所以驱动管理器会把UTF-8数据当做本地数据处理(操作系统默认的语言编码,例如:日文系统中的Shift-JIS),并将数据转换为unicode。此时,转化的Unicode数据是错误的数据,所以它从DBMaster保存/取出时就会导致垃圾数据流入/流出。 解决方法:使用DBMaster ANSI驱动器可避免驱动管理器将UTF-8数据转化为Unicode数据。在安装DBMaster ANSI驱动器前,需对注册文件(dbmaster51_ansi_driver.reg)进行适当的设置更改。 ANSI驱动注册文件内容有: Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\Dbmaster 5.1 ANSI Driver] "Driver"="d:\\Dbmaster\\5.1\\bin\\DMAPI51a.DLL" "Setup"="d:\\Dbmaster\\5.1\\bin\\DMSET.DLL" "APILevel"="1" "ConnectFunctions"="YYN" "CPTimeout"="60" "DriverODBCVer"="03.00" "FileUsage"="0" "SQLLevel"="1" 步骤包括: (1)     如果驱动名称不是5.1,把驱动器名称改为DBMaster 5.1 ANSI的驱动名称 (2)     修改驱动程序并设置安装目录 (3)     如果不是5.1版本,把dmapi51a.dll修改为dmapixxa.dll 因此,如果用户使用DBMaster 5.1,只需进行步骤(2)。 请从驱动管理器中删除DSN(默认为数据库名),并使用"DBMaster 5.1 ansi 驱动"重新注册DSN。安装dmapi51a.dll后,DBMaster ANSI驱动程序已经存在,只需注册它即可。DBMaster ANSI驱动器只删除Unicode ODBC函数。 ...
  • 在数据库中,当不同程序对同一张表同时执行不同操作时,如何避免锁超时的发生?例如,unload和其它DML操作同时发生(DBMR2123)。
    锁对于相同数据库对象上的多个事物之间的并发控制来说,是十分重要的。当多个用户同时访问同一个数据库对象,将会发生锁超时。尽管这是一种正常行为,其目的是为了确保数据库中的数据一致性,然而在一些特定情况下,同时访问的这种需求是可以得到满足的。但是如何处理这种特殊要求呢?这就需要用户根据实际情况来选择不同的处理办法。 以下是以DBMR2123为例进行的详细描述: 当用户从表test中下载数据,另一个应用程序正在同时操作表test(delete, insert etc)时,将会发生锁超时。为了避免锁超时的发生,我们可以使用临时表。 详见如下: Select * from test into temp_test; Unload data from (select * from temp_test) to test_file; 这并不会影响原始表的性能,但需要扩展默认表空间,因为临时表通常指定在默认表空间中。 版本: DBMaster 4.x\5.x DBMaster4.x\5.x 产品: Normal 平台: Windows xp ...
  • 在执行EXPORT命令并输出到CSV数据文件后,如果字段数据包含返回代码,如何避免行约束(DBMR: 2126)?
    在执行Export命令时,如果字段数据包含返回代码,将会有一个错误的处理结果输出到CSV文件中。例如表中仅含有一条记录,如果记录包含返回代码,DBMaster会认为是一条以上的记录。我们可以在描述文件中通过设置参数来获取预想的输出结果。 例如: 这是之前的描述文件: FORMAT=VARIABLE COLUMN_DELIMITER=',' ROW_TERMINATOR="\n" QUOTATION=SINGLE_QUOTE NUMBER_OF_ROWS_FOR_EACH_TRANSACTION=-1 在执行以上描述文件中的“Export into testtb.csv table testtb description desc.txt;”命令后,不正确的约束将出现在CSV文件中。 我们可以在描述文件中对原始内容做如下修改,以确保输出结果正确并不会自动产生新行。 修改后的描述文件: FORMAT=VARIABLE COLUMN_DELIMITER=',' ROW_TERMINATOR="\r\n" QUOTATION=DOUBLE_QUOTE NUMBER_OF_ROWS_FOR_EACH_TRANSACTION=-1 版本: DBMaster5.x, DBMaster4.2, DBMaster5.x 产品: Normal 平台: Window xp ...
  • 在DBMaster中如何为表或索引分配页? (DBMR2238)
    当创建一个表时,页数的分配取决于列的数量、列类型以及在表中的表头信息。然而,如果用户只是创建了一个没有插入任何记录的空表,则只需要将表的相关信息存储到SYSTABLE 中而不需要为空表配置数据页。当创建一个索引时,页数的分配取决于创建该索引基于的列数以及该索引的复杂性。然而,若用户只是创建一个没有插入任何记录的空索引,则只需将索引相关信息存储到SYSINDEX中而不需要为空索引配置索引页。总之,用户不能自己为表或索引定义所分配的页数。 DDL的系统表模式分别储存在不同的系统表中,例如: Create table t1 (c1 int, c2 int); Create index idx1 on t1 (c1); 在P1的SYSTABLE中添加一笔记录来记录t1的相关信息。 在P2的SYSCOLUMN 中添加两笔记录来记录c1和c2的相关信息。 在P3的SYSINDEX 中添加一笔记录来记录idx1的相关信息。 现在,如果用户使用命令“create table t2 (c3 int, c4 char(10), …)”创建名为t2的表,若P1中有足够的空间则这笔记录将被用于记录t2的相关信息而被添加到P1的SYSTABLE 中,否则,将会为SYSTABLE 分配一个名为P4的新页,并且此笔记录会被添加到P4中。同时,若P2中有足够的空间,则分别记录C3和C4相关信息的两笔记录将被添加到P2的SYSCOLUMN中,否则,将会为SYSCOLUMN分配一个名为P5的新页,并且此笔记录将会被添加到P5中。 版本: DBMaster4.x/5.x 产品: ...
  • 在安装DBMaster之后,如何使C编译器可用?(DBMR2252)
    假设用户已经安装了DBMaster并没有安装C编译器,现在他想安装C编译器,对于DBMaster的部分版本用户需要重新安装DBMaster并且在安装过程中选择C编译器的类型,同时,2009年3月以后的4.3.x和5.x.x版本,用户不需要重新安装DBMaster仅需要在注册表中更改COMPILER的键值就可实现C编译器的使用。COMPILER的路径为“HKEY_LOCAL_MACHINE -> SOFTWARE -> DBMaster -> 4.3.x/5.x.x -> COMPILER”。 例如,如果一个用户的VC编译器是VC2003,他需要去更改COMPILER的键值为VC71.。请参考下表中的其他设置信息。   COMPILER的注册表键值 用户VC编译器版本 DBMaster 版本 32位/64 位 VC60 VC6.0 所有版本 仅32位 VC71 VC2003 所有版本 仅32位 VC80 VC2005 DBMaster5.0以后 仅32位 DBMaster5.1以后 32/64位 VC90 VC2008 DBMaster5.1以后 32/64位 VC100 VC2010 DBMaster5.3以后 32/64位   注意: “仅32 位”意思是在64位系统安装VC6.0和VC2003对DBMaster是无效的。 在64位系统下安装VC编译器时用户需要选择“x64”选项。   版本: DBMaster4.3.x/5.x.x 产品: Normal 平台: Windows ...
  • 在Linux环境下如何解决“ERROR (1110):申请的DCCA内存超出系统限制”?
    在Unix环境下,数据库申请的DCCA内存超过操作系统分配的共享内存最大值时,会发生该错误。 为了解决这个问题,用户需要给位于/etc/sysctl.conf下的变量Kernel.shmmax设置一个合适的值。 例如, # controls the maximum shared segment size, in bytes kernel.shmmax = 68719476736   版本: DBMaster 4.x/5.x 产品: Normal/Bundle 平台: Linux ...
  • 在数据查询中,哪些情况会导致使用“nested join”的查询速度比使用“merge join”的查询速度快?(DBMR2559)
    默认情况下,如果表数据量较小,DBMaster将采用”nested join”的方式查询数据,此时仅扫描部分数据,用时较短;相反,如果表数据量非常大,DBMaster将采用”merge join”的方式查询数据,此时通过索引扫描全部数据,用时较短。然而,如果表数据量非常大,且查询数据使用的SQL语句中包含”LIMIT”子句,那么DBMaster使用”merge join”查询数据的速度将会比使用”nested join”查询数据的速度慢很多,在这种情况下,如果用户使用的DBMaster 5.3版本是2014年2月25日之后发布的,可通过在dmconfig.ini中添加”DB_OPRTR=1”的方式选择”nested join”。该设置仅在部分含有LIMIT子句的查询中可用。   Version: DBMaster 5.3.x Product: Normal/Bundle Platform: Windows/Linux ...
  • 在DBMaster中如何使用格式为“dd/mm/yyyy”或“dd-mm-yyyy”的日期?(DBMR 2773)
    用户可通过在dmconfig.ini中设置DB_DaoFm来控制日期输出格式,目前DBMaster支持如下日期格式: mm/dd/yy mm-dd-yy dd/mon/yy dd-mon-yy mm/dd/yyyy mm-dd-yyyy yyyy/mm/dd yyy-mm-dd dd/mon/yyyy dd-mon-yyyy dd.mm.yyyy DBMaster不支持“dd/mm/yyyy”和“dd-mm-yyyy”,但用户可使用如下方法作为变通: select CAST(DAYOFMONTH(column_name) AS VARCHAR(10))|| '/'|| CAST(MONTH(column_name) AS VARCHAR(10))|| '/'|| CAST(YEAR(column_name) AS VARCHAR(10)) AS "DATE_FORMATED" from table_name;   版本: DBMaster 5.3.x 产品: Normal/Bundle 平台: Windows/Linux ...