firebird database (§Ö³t¤Jªù)

°Ñ¦Ò¤å¥ó(§¡¥i¦Ûfirebirdºô¯¸§ä¨ì):
Novice's Guide
Migration from MS-SQL to firebird
Firebord Release Notes

  1. ¾Ç²ß¸ê®Æ®w°ò¦¬O¦bsqlªº»yªkÀ³¥Î(½Ð°Ñ¦Ò:firebird ºô¯¸ªº»¡©ú¤å¥ó³Ì¦n§â³o¥÷¤å¥ó¦L¥X¨Ó,¦b¼gµ{¦¡®É¥i¥H°Ñ¦Ò¨ä»y,ÁöµM¤j³¡¥÷³£¬Osql-92¬Û®e,¦ý¬O¦³®t²§,ÁÙ¦³¤@¨Ç±M¦³ªº»yªk)
  2. ·í§A»Ý­nªº¸ê®Æ§ä¤£¨ì®É¥i¥H§ä´Minterbaseªº¬ÛÃö¸ê®Æ(¦]¬°firebird¬O¥Ñ interbaseÄÀ©ñ­ì©l½X©Ò­l¥Íªº)
  3. ¦³¤@¥»ºô¸ô¤W§¹¾ãªº®Ñ"BORLAND INTERBASE7¡D0 À³¥Î¶}µo«ü«n («À±Ò¬õµÛ)",ÁöµM¬Ointerbase¦ý«D±`¸Ô²Ó,­n²`¤J¤F¸Ñ(«ØÄ³¥²Åª)
©|¦b¼¶¼g ¤¤............

¥Ø¿ý¯Á¤Þ


«e ¨¥
¥¦¬OBorland¤§«e±À¥Xinterbase¸ê®Æ®w,¨Ã±N¨ä¶}©ñ­ì©l½Xªº§K¶O¸ê®Æ®w³nÅé,¥Ø«eª©¥»¬O1.5.2,¥¦¤ñmysql, postgresql §ó¾A¦X©ówindows§@·~¨t²Î,¥¦¨Ã¤£¬O¨Ï¥Îcygwinªº¤è¦¡²¾´Ó¨ìwindows¤W,¦Ó¬O¯u¥¿ªºwindows³nÅé¡A§Ú­Ì¤@¯ë±N¨ä¤ñ¸û©óMs- sql server,¬O¤@­Ó¤p¦Ó¬ü¸ê®Æ®w,³Ì¤jªºÀuÂI¦b©ó¥¦¬O§K¶Oªº(ms-sql server¤­¤Hª©¦Ü±Nªñ¤T¸U¤¸),¨ä¹ê¥¦¤]¤ä´©¤£¦P§@·~¥­¥x(§tinux),¹ï©ólinux¤W§ÚÁÙ¬O«ØÄ³¤j®apostgresql©Î¬Omysql
¦]¬°firebird­Y­n¥Îphpªº¸Ü´N¦³ÂIÃø¤F...,§A­n®Ú¾Úºô¯¸¤å¥ó¨Ó§@¤@¨Ç­×§ï½sĶªº°Ê§@
¡­¤é«epostgresql 8.0ÄÀ©ñ¤w¸g¤ä´©windwosªº­ì©lÀÉ(¤£¨Ï¥Îcygwin¨Ó°õ¦æ),¦ý«Ü¥i±¤¤£¤ä´©98/me
¦]¥Ø«eÁÙ¬O¦³¤H¨Ï¥Îwin98³æ¾÷¨Ï¥Îªº¸ê®Æ®w,¦pªG§A³æ¾÷¤W¨Ï¥Înt¨t²Î(2000/xp)µ¥¥i¥H¨Ï¥Îpostgresql,¦]¬°postgresql ¤ñ°_firebird¨ÓÁ¿¬Y¤è­±½T¹ê¤ñ¸û±j¡A¦Ó¨Ï¥ÎªÌ¤]¤ñ¸û¦h

¬[ ºc
firebird ¸ê®Æ®w³nÅ馳¤TºØ®M¥ó,¨Ã¦Ó¤ä´©¤£¦P§@·~¥­¥x(windows¨t¦C,linux,freebsdµ¥...)
  1. Super Server-µLªkª½±µ¦s¨ú¸ê®Æ®wÀÉ®×,¥²¶·³z¹Lsocket¨Ó©M¦øªA¾¹·¾³q
  2. Classic-ª½±µ¦s¨ú¸ê®Æ®wªºÀÉ®×,¦h­Óµ{¦¡¥i¥H¦P®É¦s¨ú¤@­ÓÀÉ®×,¦³ÂI¹³vfp,dbase
  3. embedded-±M¬°¤@¨Ç¤p«¬¨t²Îªº´O¤J¦¡¸ê®Æ®w (pda)

¤U¸ü¤Î¦w¸Ë
¥Dºô¯¸:http://firebird.sourceforge.net/
Download->Firebird relational database
ª½±µÂI¨â¤U´N¥i¥H¦w¸Ë,½Ð·Ó¨BÆJ,®Ú¾Ú¦Û¤vªº»Ý¨D¨Ó¦w¸Ë
¹w³]¦w¸Ë¸ô®|
windows:c:\program files\firebird\firebird_1_5
linux:/opt/firebird
¨â­Ó§@·~¨t²Î¤Uªº¥Ø¿ýµ²ºc«D±`¹³
®Ú¥Ø¿ý¤U:
firebird.conf-³]©wÀÉ
aliases.conf  -§O¦WÀÉ
friebird.log -°O¿ýÀÉ
SYSDBA.password -linux¤~¦³,ºÞ²zªÌªº¦WºÙ¤Î±K½X¦bùØ­±,windows«h¹w³]:¦WºÙ:sysdba,±K½X:masterkey
windowsª½±µ¨Ï¥Îsecurity.fdb¨Ó¦ssysdbaªº±K½X
ª`·N:¨Ï¥ÎªÌ¦WºÙ¤£¤À¤j¤p¼g,¦ý±K½X¦³¤À
¥Ø¿ý/bin:
«h¬O¤@¨Ç¥²­nªº¥D­n¤Î¤u¨ãµ{¦¡

³]©w firebird
¥D­nªº³]©wÀÉ
firebird.conf
¹w³]tcp/ip·|±Ò°Êport:3050
§A¥i¥H¨Ï¥Îtelnet ip 3050¨Ó´ú¸Õ
aliases.conf
³]©w¸ê®Æ®wªº§O¦W
¸ê®Æ®w³s½u®É¤@¯ë­n«ü©w¸ô®|,¦³®É¸ô®|¤Óªø®É§A¥i¥H«ü©w,¦baliases.conf¤¤¨Ï¥Î§O¦W¨Ó¦s¨ú
¥¦¬O¦ì©ó§A¦w¸Ëfirebirdªº®Ú¥Ø¿ý,¥H¤U¬°¤º«Ø½d¨Ò
# §O¦W =  ­ì©l¸ô®|
employee.fdb = /opt/firebird/examples/employee.fdb
 
¨ä¤¤#¬°µù¸Ñ,¦Ówindows¤Îlinuxªº¸ô®|¬O¦³©Ò¤£¦P:
# fbdb1 ¦bWindows¦øªA¾¹:
fbdb1 = c:\Firebird\sample\Employee.fdb
# fbdb2 ¦bLinux¦øªA¾¹:
fbdb2 = /opt/databases/killergames.fdb
¸ê®Æ®w°õ¦æ®É¥i¥H½s¿è³o­ÓÀÉ®×,¤£»Ý­n­«·s±Ò°Ê¦øªA¾¹
³s½u§O¦Wªº¤è¦¡:
Server_name:aliasname

¨Ï¥ÎªÌºÞ²z(consloe¤¶ ­±)
1.¹w³]ºÞ²zªÌ¦WºÙsysdba,±K½Xmasterkey
2.±K½XÀÉsecurity.fdb,¦ì©ófirebird¦w¸Ë¥Ø¿ý¤U
3.ºÞ²zµ{¦¡gsec
   ¦w¸Ë¥Ø¿ý¤U\bin
4.±K½Xªø«×­­¨î¦b8½X
¥Îªk:
¥»¦a¥D¾÷(¸ê®Æ®wserver¦b¥»¥x¹q¸£)
gsec -user sysdba -password <password> [options]
»·ºÝ¥D¾÷(¸ê®Æ®wserver¦b§O¥x¹q¸£)
gsec -user sysdba -password <password> -database <databasename>

gsec©R¥O
di[splay]
Åã¥Ü©Ò¦³¨Ï¥ÎªÌ
di[splay] <username>
Åã¥Ü¬Y¨Ï¥ÎªÌ
a[dd] <username> -pw <password> [options]
·s¼W¨Ï¥ÎªÌ
mo[dify] <username> [options]
­×§ï¨Ï¥ÎªÌ
de[lete] <username>
§R°£¨Ï¥ÎªÌ
h[elp]
¨D§U
?
¦P¤W
q[uit]
Â÷¶}gsec
z
Åã¥Üª©¥»

options
-pa[ssword] <password>
ºÞ²zªÌªº±K½X
-user <username>
¨Ï¥ÎªÌ¦WºÙ
-pw <password>
¨Ï¥ÎªÌ±K½X
-fname <first name>
­^¤å¦W¦r¦³,¤T­Ó³¡¥÷
-mname <middle name>

-lname <last name>


½d¨Ò
¦³¨âºØ¤è¦¡
1.ª½±µ¤U¦b©R¥O¦C-
2.¶i¤J¤¬°Ê¦¡ªº©R¥O¦C-ÃB¥~ªº©R¥O
·s¼W¨Ï¥ÎªÌ
gsec -user sysdba -password masterkey
gsec> add elvis -pw elvis -fname elvis -lnmae presley
­×§ï±K½X
gsec> modify elvis -pw chunk
­×§ïsysdba±K½X
gsec -user sysdba -password masterkey -modify sysdba -pw mykey37
­×§ï»·ºÝ¦øªA¾¹linuxªºsysdba±K½X
gsec -user sysdba -password masterkey -database harry:/opt/firebird/security.fbd -modify sysdba -pw hamburg
­×§ï»·ºÝ¦øªA¾¹windowsªºsysdba±K½X
gsec -user sysdba -password masterkey -database sally:"c:\Program files\Firebird\security.fdb" -modify sysdba -pw hannover
­×§ï»·ºÝ¦øªA¾¹¨Ï¥Îtcp port 3050
gsec -user sysdba -password masterkey -database jack/3050:/opt/firebird/security.fdb" -modify sysdba -pw londo
­×§ï»·ºÝwindows¦øªA¾¹ip( a.b.c.d)¨Ï¥Îtcp  port 3050
gsec -user sysdba -password masterkey -database a.b.c.d/3050:"c:\program files\firebird\firebird_1_5\security.fdb  -modiyf sysdba -pw londo
§R°£¥»¦a¨Ï¥ÎªÌ
gsec -user sysdba -password masterkey -delete joe

¸ê®Æ®wºÞ²z(console)
µ{¦¡isql¦ì©ó¦w¸Ë¥Ø¿ý¤Uªºbin
¥H¤U¬O¤@­Ó¾Þ§@½d¨Ò:
c:\Program files\firebird\firebird_1_5\bin\>isql -user sysdba -password masterkey
Use CONNECT or CREATE DATABASE to specify a database
SQL> connect test;
Database:  test, User: sysdba
SQL> show table;
       COUNTRY                                CUSTOMER
       DEPARTMENT                             EMPLOYEE
       EMPLOYEE_PROJECT                       JOB
       PHONE_LIST                             PROJECT
       PROJ_DEPT_BUDGET                       SALARY_HISTORY
       SALES
SQL> select * from country ;
COUNTRY         CURRENCY
=============== ==========
USA             Dollar
England         Pound
Canada          CdnDlr
SQL>quit;


«Ø¥ß¸ê®Æ®w
1.«Ø¥ß¸ê®Æ®wcreate database
2.«Ø¥ß¸ê®Æªí®æcreate table (sql«ü¥O)
3.§R°£¸êªUªí®ædrop  table (sql«ü¥O)
4.¬d¸ß¸ê®Æ®w¤¤©Ò§tªí®æ show table
5.¬d¸ßªí®æ¤¤ªºµ²ºc show table ªí®æ¦WºÙ
6.·s¼W,§R°£,§ó·s(insert,delete,update)§¡¬°sql«ü¥O
7.SQL©R¥O¥æ¥I,¦b·s¼W©Î§R°£®É,¸ê®Æ®w¨Ã¥¼ª½±µÅܧó,­n¨Ï¥Îsql«ü©Rcommit ©Îcommit work¨Ó§ó·s

isql -user sysdba -password masterkey
Use CONNECT or CREATE DATABASE to specify a database
SQL> create database 'c:\temp\test.fdb';
SQL> create table abc (name char(12),age numeric(3));
SQL> show table friend ;
FIRSTNAME                       CHAR(15) Nullable
LASTNAME                        CHAR(20) Nullable
CITY                            CHAR(15) Nullable
STATE                           CHAR(2) Nullable
AGE                             INTEGER Nullable

SQL> insert into abc (name ,age) values( 'cschen',34);
SQL> select * from abc;

NAME             AGE
============ =======
cschen            34

¥H¤Wªº¾Þ§@¥D­n¬Osql«ü¥O
©R¥Oªºµ²§À¥²»Ý¨Ï¥Î";", ¦pªG¨S¦³¨Ï¥Î";"´£¥Ü·|¥ÑSQL>Åܬ°CON>,§i¶D§A©µÄò¤§«eªº©R¥O
SQL>create table friend
CON>(FIRSTNAME CHAR(13),
CON> LASTNAME CHAR(40),
CON> STATE CHAR(2),
CON> AGE INTEGER );
¦P¤U
SQL>create table friend (FIRSTNAME CHAR(13),LASTNAME CHAR(40),STATE CHAR(2),AGE INTEGER);


¨C¤@­Ó¸ê®Æ®w¦³¤@­Ó¯S®í¸ê®Æ®w-¨t²Î¸ê®Æ®w,¥]§t¤F¨Ï¥ÎªÌÅv­­ µ¥...
SQL> show system;
       RDB$CHARACTER_SETS                     RDB$CHECK_CONSTRAINTS
       RDB$COLLATIONS                         RDB$DATABASE
       RDB$DEPENDENCIES                       RDB$EXCEPTIONS
       RDB$FIELDS                             RDB$FIELD_DIMENSIONS
      ..................                ..................

¨Ï¥ÎªÌÅv­­
1.GRANT ±Â¤©¨Ï¥ÎªÌÅv­­
  GRANT Åv­­ ON ª«¥ó TO ¹ï¶H [with grant option]
2.REVOKE ºM®ø¨Ï¥ÎªÌÅv­­
  REVOKE Åv­­ ON ª«¥ó FROM ¹ï¶H

Åv­­:SELECT ,INSERT ,UPDATE,DELETE, ALL
ª«¥ó:TABLE,VIEW
¹ï¶H:¨Ï¥ÎªÌ,PUBLIC(¥Nªí¥þ³¡)
with grant option Åý¸Ó¦W¨Ï¥ÎªÌ¦³³]©w§Oªº¨Ï¥ÎªÌªºÅv­­
*¦]¬°isqlµLªk¿é¤J¤¤¤å,¦]¦¹µLªk¨Ï¥Î¦b¤¤¤å¿é¤J¸ê®Æ
*¦blinux¤U¥Ñ©ó¥i¯à·|¦³¦P¦Wªºisql(unixODBC®M¥ó),¦Ólinux¦w¸Ë¦b/opt/firebird,¦]¦¹¥²¶·¨Ï¥Îµ´¹ï¸ô®|¨Ó°õ¦æ,¥t ¸ê®Æ®wªººÞ²zªÌ¦WºÙ¥i¥H¤£©T©w,¦Ü©ó±K½X¦b¦w¸Ë®É·|¦Û°Ê²£¥Í¦bÀÉ®×SYSDBA.password¤¤

³s½u¤è¦¡(ÀÉ®×/tcpip)
µ{¦¡¤ä´©¨âºØ³s½u¤è¦¡
1.¨Ï¥Î§¹¾ã¸ô®|³s½u
  c:\abcd.....
2.¨Ï¥Îtcpip³s½u,¦b¸ô®|«e¥[¥D¾÷ªº¦WºÙ©ÎIP
   ¥D¾÷:c:\abcd....

§Ú­Ì¥i¥H®Ú¾Ú¤Á´«³o¨âºØ
windows ¤Uªº¸ô®|¦p¦³ªÅ¥Õ,¦³®É¥²¶·¨Ï¥Î" "±N¸ô®|®Ø°_¨Ó¤~¥i¥H¥Î


¸ê®Æ®w/¨Ï¥ÎªÌºÞ²z(gui)
 
§Ú¦³¸Õ¹L´X­Ó§K¶OªºwindowsºÝªº³nÅé
¿ï¾Üibeasy+: «D±`®e©öºÞ²z,¥²¶·¦³¸ê®Æ®wªºÆ[©À
¥t¥~¥i°t¦Xmarathon¨Ï¥Î
ibeasy+¨Ï¥ÎªÌºÞ²z¤¶­±:
server->users management

(¿é¤JºÞ²zªÌªº¦WºÙ¤Î±K½X,¶i¤J¤U¤@­Óµøµ¡)

(§A´N¥i¥HºÞ²z§Aªº¨Ï¥ÎªÌ)


³]©wodbc
¦bfirebird->download ->odbc
¤U¸ü«á¦w¸Ë
odbc
odbc picture
Database
1.§¹¾ã¸ô®|-c:\database\abc.fdb
2.tcp/ip-ip:§¹¾ã¸ô®|(127.0.0.1:c:\database\abc.fdb)

¸ê®Æ®wªº¦w¥þ(³Æ¥÷/¦^¦s)(console)

GBAK:©R¥O¦C¤u¨ã,©R¥O¦³¨â­Óª¬ºA,³Æ¥÷/¦^¦s(-b / -c)

»yªk
gbak <options> -user <username> -password <password> <source> <destination>
1.³Æ¥÷
gbak -b  <source> ¬O§A­n³Æ¥÷ªº¸ê®Æ®w¨Ó·½, <destination>¬O³Æ¥÷ªº¥Øªº¦aÀɦW.¤@¯ëªº©µ¦ùªþÀɦW ¬O .fbk .
¥u¦³SYSDBA ©Î¬O¸ê®Æ®wªº¾Ö¦³ªÌ¥i¥H°õ¦æ³Æ¥÷¤u§@. ¹ï©ó¦h­ÓÀɮתº¸ê®Æ®w,¥u»Ý«ü©w²Ä¤@­ÓÀɮתº¦WºÙ¨Ó·í¸ê®Æ®wªº¦WºÙ.
2.¦^¦s
gbak -c  <source> ¬O¥ý«e³Æ¥÷ªºÀɮצÓ<destination> ¬O¸ê®Æ®wªº¦WºÙ


¿ï¶µ

(¤¤¬A¸¹¤ºªº¬O«D¥²­n,¤]´N¬O©R¥O¥i¥H¨Ï¥Î¤¤¬A¸¹«eªºÁY¼g,©Î¬O§t¤¤¬A¸¹¤º¬°ªø°Ñ¼Æ)

°Ñ¼Æ »¡©ú ¥\¯à
-b[ackup_database]  ³Æ¥÷ ³Æ¥÷
-bu[ffers] Set cache size for restored database ¦^¦s
-c[reate_database] ¦^¦s (¥²­n°Ñ¼Æ) ¦^¦s
-co[nvert] Âà´«¥~³¡ªí®æ¨ì¤º³¡ªí®æs ³Æ¥÷
-e[xpand] «Ø¥ß¤@­Ó«DÀ£ÁYªº³Æ¥÷ ³Æ¥÷
-fa[ctor] n ºÏ±a¾÷ªº°Ï¶ô¨t¼Æ ³Æ¥÷
-g[arbage collect] ³Æ¥÷®É¤£²MªÅ¤w§R°£ªº¸ê®Æ ³Æ¥÷
-i[nactive] ©Ò¦³ªº¯Á¤Þ±N¦^¦s¬°INACTIVE ¦^¦s
-ig[nore] ³Æ¥÷®É¤£°µchecksum¿ù»~Àˬd ³Æ¥÷
-k[ill] ¦b¤£«Ø¥ß©w¸q³Æ¥÷¤¤ªºshadows ¦^¦s
-l[imbo] ³Æ¥÷®É©¿²¤limbo transactions ³Æ¥÷
-m[etadata] ¥u³Æ¥÷¸ê®Æªí®æªºmetadata (schema).¤£³Æ¥÷¸ê®Æ ³Æ¥÷
-mo[de] read_write  ¦^¦s¤@­Ó ¥iŪ/¼gªº¸ê®Æ®w(¹w³]) ¦^¦s
-mo[de] read_only ¦^¦s¤@­Ó°ßŪ¼g¸ê®Æ®w ¦^¦s
-n[o_validity] ¤£¦^¦svalidity constraints.¤]´N¬O¦^¦s¸ê®Æ¤£¦^¦s constraints
¦^¦s
-nt «D¬Û®e©Êªº®æ¦¡(¥u¨Ï¥Î¦b¬Û¦P§@·~¥­¥x,¤Îfirebirdª©¥») ³Æ¥÷
-o[ne_at_a_time] ¤@¦¸¦^¦s¤@­Óªí®æ.§A¥i¥H¤À§O¤À¦¸¦^¦sªí®æ 
¦^¦s
-ol[d_descriptions] ªº®æ¦¡ ³Æ¥÷
-p[age_size] <size> ³]©wpage size of new database.
 <size> ¥i¥H¬O 1024, 2048, 4096, 8192.¹w³]1024. 
¦^¦s
-pa[ssword] <password> ¸ê®Æ®wªº±K½X  
-r[eplace_database] ¦^¦s¦b¤@­Ó¦s¦bªº¸ê®Æ®w¤W.¥u¯à¦b¾Ö¦³¥»¸ê®Æ®wªº¨Ï¥ÎªÌ¥i¥H¾Þ§@
³o¬OÂмg,¤£­n°õ¦æ¦b¨Ï¥Î¤¤ªº¸ê®Æ®w!
¦^¦s
-role <role> ¨Ï¥Î¬Y¤@¸s²Õ(role )¨Ó³s½u  
-se[rvice]  <hostname>:service_mgr ³Æ¥÷: «Ø¥ß,¨Ï¥ÎªA°ÈºÞ²z.
¦^¦s: ¦^¦s,¨Ï¥ÎªA°ÈºÞ²z.
 
-t[ransportable] «Ø¥ß¥iÂಾªº³Æ¥÷(¤£¦P§@·~¨t²Î¤Îfirebirdª©¥») ³Æ¥÷
-u[ser] <username> ¸ê®Æ®w¨Ï¥ÎªÌªº¦W¦r 
 
-use_[all_space] ¥¿±`,¦^¦s,¸ê®Æ®w­¶·|¶ñº¡80%
°ßŪ¤~·|¼g¦^100%(¦]¬°¤£¥Î¹w¯d­×§ïªºªÅ¶¡)
¦^¦s
-v[erbose] Åã¥Ü©Ò¦³gbak°õ¦æªº¸Ô²Ó°Ê§@ 
 
-y <filename> ­«¾É©Ò¦³ªº¿é¥X¨ì¤@­ÓÀÉ®× <filename>.
ª`·N:©R¥O°õ¦æ¤§«e¤£¥i¥H¦s¦bÀɦW
 
-y suppress_output Quiet mode   
-z Åã¥Üª©¥»
 

½d¨Ò:

¥¿±`ªº³Æ¥÷:
gbak -v -t -user SYSDBA -password "masterkey" dbserver:/db/warehouse.fdb c:\backups\warehouse.fbk

³Æ¥÷¨Ã°O¿ý©Ò¦³³Æ¥÷®Éªº¿é¥X°T®§:
gbak -v -t -user SYSDBA -password masterkey -y c:\backups\warehouse.log dbserver:/db/warehouse.fdb c:\backups\warehouse.fbk

¥¿±`ªº¦^¦s:
gbak -c -v -user SYSDBA -password masterkey c:\backups\warehouse.fbk dbserver:/db/warehouse2.fdb

¦^¦s¨ì¤@­Ó¤w¦s¦bªº¸ê®Æ®w:
gbak -c -r -v -user SYSDBA -password masterkey c:\backups\warehouse.fbk dbserver:/db/warehouse.fdb

¦^¦s¤@­Ó°ßŪªº¸ê®Æ®w:
gbak -c -v -mode read_only -use_all_space -user SYSDBA -password masterkey c:\backups\warehouse.fbk c:\files\warehousedb.fdb

¦h­«Àɮ׳ƥ÷
·í¸ê®Æ®w«Ü¤j®É,­n³Æ¥÷¦³ÂI§xÃø,¦]¦¹§Ú­Ì±N¸ê ®Æ®w³Æ¥÷¦¨³\¦h¤pªºÀÉ®×,¦p¦¹Àx¦s®É¤ñ¸û¤è«K

³Æ¥÷»yªk:
gbak [options] <database> <target file 1> <size 1> <target file 2> <size 2> ... <target file n>

ª`·N: ¤£­n«ü©w³Ì«á¤@­ÓÀɮתº¤j¤p.¦]§Ú­Ì¤£¤@©wª¾¹D³Ì«á¤@­ÓÀɮ׻ݭn¦h¤ÖªÅ¶¡¨ÓÀx¦s,©Ò¥H¥¦±N¦Û°Ê¨Ì¾Ú¤j¤p¨ÓÀx¦s.¦Ü©ó¨ä¥¦Àɮתº¤j¤p¥i¥H¬O bytes (8192), kilbytes (1024k), megabytes (5m), ©Î gigabytes (2g)

¦^¦s»yªk:
gbak -c [options] <source file 1> <source file 2> ... <source file n> <database>

¦^¦s¨ì¤@­Ó¦h­ÓÀɮתº¸ê®Æ®w

¦³¨Ç¨t²ÎªºÀɮרt²Î¦³­­¨î,©Î¬O¬°¤F®Ä¯àªº¦]¯À,¦]¦¹³æ¤@¸ê®Æ ®w,¥i¤À¦¨¦h­Ó¤pªº¸ê®Æ®w

gbak -c [options] <source file> <db file 1> <size 1> <db file 2> <size 2> ... <db file n>

ª`·N:¤£­n«ü©w³Ì«á¸ê®Æ®wªº¤j¤p.¥¦¥i¥HµL­­¨îªº¨Ì¾Ú¦^¦sªºÀɮרÓÅܧó¤j¤p.
Size can be given in bytes (8192), kilbytes (1024k), megabytes (5m), or gigabytes (2g)

¥Ñ³Æ¥÷¦h­ÓÀɮצ^¦s¨ì¦h­ÓÀɮתº¸ê®Æ®w:
gbak -c [options] <source file 1> <source file 2> ... <source file n> <db file 1> <size 1> <db file 2> <size 2> ... <db file n>


¸ê®Æ®w¦w¥þ(³Æ¥÷/ ¦^¦s)(gui)
(ibeasy+,°Ñ¦ÒhlpÀÉ)

¿ï¶µ (Database | Save Database)
backup database

§A¥i¥H²³æ½Æ»s¸ê®Æ®wÀÉ(¦p¤@¯ëªº«ü¥Ocopy) ¦ý¬OµLªk½T©w¸ê®Æ®wªº¦w¥þ.
ÀuÂI:

°õ¦æ®É¥²­n°Ñ¼Æ:

¿ï¶µ: (Database | Restore Database)
resotre database

°õ¦æ³o­Ó¾Þ§@,¥²¶·¬O³o­Ó¸ê®Æ®wªº¾Ö¦³ªÌ©Î¬O¦³°õ¦æºÞ²z¨t²ÎªºÅv­­: SYSDBA.
¤@­Ó¸ê®Æ³Æ¥÷ªº¸ê®Æ®w¥i¥H¦^¦s
°õ¦æ®É¥²­n°Ñ¼Æ:


¸ê®Æ«¬ºA

¦WºÙ ¤j ¤p ½d ³ò /ºë«× ´y ­z
Blob ¤£ ©T©w
blob¬q¤j¤p­­©ó64K °Ê ºAÅܪø«×¤G¶i¦ìÃþ«¬¡A¥Î©ó¦s©ñ¤j¶q¸ê®Æªº±¡ªp¡A¦p¹Ï¤ù¡B­µ¼Ö¡BµøÀW¡B¦h´CÅéµ¥¡C¨ä°ò¥»µ²ºc³æ¦ì¬°¬q¡A¥¦ªº¤lÃþ«¬´y­z¤F¦sÀx¸ê®Æªº¸Ô²Ó¸ê°T
Boolean 16¦ì True
False
Unkown
¥N ªí¤FÅÞ¿è¤Wªº(¯u¡B°²¡B¤£½T©w)»PDialectµL Ãö¡C
Char(N) n­Ó ¦r¤¸ 1¨ì32767­Ó ¦ì¤¸²Õ¡CÂù¦r¤¸¶°°£2 ©T ©wªø«×ªº¦r¤¸©Î¦r¦ê
Date 64¦ì ±q ¦è¤¸«á100¦~ ¤@¤ë¤@¤é¨ì32768¦~ ¤G¤ë29¤é ¤é ´ÁÃþ«¬¡C¥u¦³¦~¤ë¤é¡A¤£±a®É¶¡
Decimal(P,S) ÅÜ ¼Æ(16¡B32©Î64¦ì¡^ ºë «×p±q1¨ì18¡G «ü©w¼Æ¦rªºÁ`ªø«×¡F¼Ð«×s±q0¨ì18¡G «ü©w¤p¼ÆÂI«áªº¦ì¼Æ¡C ©w ÂI¤p¼Æ¡C¨Ò¦pdecimal(5,3)¥i ¥H¦sÀxªº¼Æ¦ì§Î¦¡¬°¡Gpp.sss
Double Precision 64¦ì ±q2.225×10ªº-308 ¦¸¤è
¨ì1.797×10ªº308¦¸¤è
IEEEÂù ºë«×¯BÂI¼Æ¡A15¦ì ªø«×
Float 32¦ì ±q1.175×10ªº-38 ¦¸¤è
¨ì3.402×0ªº38¦¸¤è
IEEE³æ ºë½T«×¯BÂI¼Æ¡A7¦ì ªø«×
Integer 32¦ì ±q-2147483648
¨ì2147483647
¾ã ¼Æ
Numeric(P,S) ÅÜ ªø¡]16¡B32©Î64¦ì¡^ ºë «×p±q1¨ì18¡G «ü©w¼Æ¦rªºÁ`ªø«×¡F¼Ð«×s±q0¨ì18¡G «ü©w¤p¼ÆÂI«áªº¦ì¼Æ¡C ©w ÂI¤p¼Æ¡C¨Ò¦pdecimal(10,3)¥i ¥H¦sÀxªº¼Æ¦ì§Î¦¡¬°¡Gppppppp.sss
Smallint 16¦ì ±q-32768¨ì32767 µu ¾ã¼Æ
Time 64¦ì ±q0¡G00 AM¨ì23¡G59.9999 PM ®É ¶¡Ãþ«¬
Timestamp 64¦ì ±q ¦è¤¸«á100¦~ ¤@¤ë¤@¤é¨ì32768¦~ ¤G¤ë29¤é ±a ¦³®É¶¡ªº¤é´ÁÃþ«¬
Varchar(N) n­Ó ¦r¤¸ 1¨ì32767­Ó ¦ì¤¸²Õ¡C¦r¤¸¶°¨M©w¤F¨ä¯à®e¯Çªº³Ì¤j¦r¤¸¼Æ

#Blob
blob sub_type segment
³o¬O¤@­Ó¯S¦³ªº¸ê®Æ«¬ºA,¬O¥Î©óÀx¦s¤ñ¸û¤j¶qªº¸ê®Æ,Ãþ¦ü¨ä¥¦¸ê®Æ®wªºtext©Î¬Omemo¸ê®Æ«¬ºA,¦b©w¸q®É¦³¨â­Óªþ¥[°Ñ¼Æ¬Osub_type, segment
sub_type¬Oblobªº¸ê®ÆÃþ«¬,¥H¤U¬O¥¦ªºtypes.h¤¤ªº©w¸q
©w¸q
»¡©ú
TYPE ("TEXT", 1,nam_f_sub_type)
TYPE ("BLR", 2,nam_f_sub_type)
TYPE ("ACL", 3,nam_f_sub_type)
TYPE ("RANGES", 4,nam_f_sub_type)
TYPE ("SUMMARY", 5,nam_f_sub_type)
TYPE ("FORMAT", 6,nam_f_sub_type)
TYPE ("TRANSACTION_DESCRIPTION", 7,nam_f_sub_type)
TYPE ("EXTERNAL_FILE_DESCRIPTION", 8,nam_f_sub_type)
¤å¦r,Ãþ¦ümemo,¦Ó¸ê®Æ«¬ºAvarchar­­¨î 32K
¤G¦ì¤¸¸ê®Æ(¹Ï¤ù,¼v­µÀɵ¥)


1,2¬O§Ú­Ì±`¥Îªº,¨ä¥¦ªº«Ü¤Ö¨Ï¥Î

generator(­p¼Æ¾¹)
­p¼Æ¾¹¥i¥H§Ú­ÌÀ°§U²£¥Í´`§Çªº¼Æ¦r,§A¥i¥H±N¨ä¬Ý¦¨¦p¤@­Ó¤½¦@ÅܼÆ,¨Ï¥Îgen_id(generator¦WºÙ,step)¨Ó¨ú±o¤@­Ó­È¨Ã ¥[step
create generator my_gen
num=gen_id(my_gen,1)
«h
num
°ÝÃD
¦pªG¯Âºé¨Ï¥Îgenerator¨Ó¶ñ¤J,¦pªG¬Ouniqe©Îprimary key,·ígenerator³Ì¤j­È¬O264(18446744073709551616) ¦pªG¶W¹L·|­«¦^¨ì0
¥Ñ©ógeneratorªº³Ì¤j­È264 ¬O«Ü¤j¼Æ¦r­n²£¥Í­«½Æªº¾÷²v«Ü¤p

­n¤£­n¨Ï¥Î¤é´Á¨Ó°t¦X²£¥Í?
¦pªG°t¦X¤é´Á«h·|²£¥Í­«½Æªº¾÷²v·|´î¤Ö(µo²¼,¶Ç²¼µ¥)
¦~¤ë¤é+¬y¤ô¸¹
20040303004
¦Ógenerator ¥u­n²£¥Í¬y¤ô¸¹,¦ý¬O¬y¤ô¸¹¨C¤Ñ³£¬O±q1¶}©l,¨Ã¥B¤@¯ë·|­­¨î¼Æ¦rªº¼e«×¦p¥|¦ì¼Æ©Î¤T¦ì¼Æ
¦p¦¹³y¦¨­«½Æ©Ê·|¼W¥[
¥Ø«e¸ê®Æ®w¨ÃµLªk³B²z³o­Ó°ÝÃD,§A¥²¶·¦Û¤v³]­p¤@­Óªí®æ¨ÓÀx¦s³o­Ó­È,°t¦Xsql«ü¥O¨Ó¨ú±o³Ì«áªº­È
(«ØÄ³:¤£­n®ö¶O®É¶¡¦b¨Ï¥Î¦b¸ê®Æ®wºÝªº¸Ñ¨M¤èªk)
¶ñ¤JªºÄæ¦ì­n¦r¦ê©Î¬O¼Æ¦r?
¦pªG¬O³æ¿W¨Ï¥Îgenerator,³Ì¦n¬O¥Î¼Æ¦rªº®æ¦¡¤ñ¸û¦n
#ª`·N:integer¥u¦³32¦ì¤¸
½d¨Ò:
¦Û°Ê®i¥Ü
create generator test_gen ;
CREATE TABLE  test1 (serial_no char(3) not null primary key,name char(15));
«Ø¥ßIJµo¨Ó¦Û°Ê¨ú±oID(new.Äæ¦ì¦WºÙ ,³o­ÓÅܼƬO¥i¥H³Qsql«ü¥O®É¦Û°Ê¤Þ¥Î)
set term !!;
create trigger test for test1 active before insert 
as
begin
   new.serial_no=cast(gen_id(test_gen,1) as char(3));
end
!!
set term ; !!
#°w¹ï¥»¨­Äæ¦ìÅܧó¤èªk:IJµo¥]§t¤F¤TºØsql«ü¥O¤Î¤GºØª¬ºA °õ¦æ«e/°õ¦æ «á
¦binsertªº°õ¦æ«e,©Ò¦³ªº´¡¤J¨ì³QIJµoªºªí®æªºÄæ¦ì,§A¥i¥H¨Ï¥Î new.Äæ¦ì¦WºÙ¨Ó¦s¨ú,¥u­nÅܧó¸Ó­È´N¥i¥H¦Û°ÊÅܧó·s¼W¨ìªí®æ¤¤ªºÄæ¦ì­È
#¦b«Ø¥ßtrigger ®É¥Ñ©ótrigger¤¤ªº;(¤À¸¹)·|²V²cµ²§ô²Å¸¹,¦]¦¹¨Ï¥Îsql«ü¥O©Î¦bisql¤¤·s¼Wtrigger½ÐÅܧó¨äµ²§À²Å¸¹,¬Oset term µ²§À²Å¸¹,¹w³]ªºµ²§À²Å¸¹";",¦]¦¹°µ§¹­n´_­ìset term ;!!
 

¬y¤ô¸¹
¨C¤é­«¸m¬y¤ô¸¹
¨Ï¥Îªí®æÄæ¦ì¨Ó°O¿ý¤é´Á,Àˬd­Y¤é´Á¤£¦P«h¼g¤J·s¤é´Á¨Ã±NgeneratorÂk¹s(set generator ¦WºÙ to 0),¦ýµLªk¨Ï¥Î¦bÀx¦s¨ç¦¡¤¤
¦b·s¼W¤§«eIJµo³o­Ó¥\¯à,¤ñ¤W­z§ó²³æ(©|¥¼´ú¸Õ)
create trigger test2 for test active before insert
as
declare variable temp_date    date;
declare variable serial_no    char(3);
begin
   if current_date==t_date then
      #¨ú±o¬y¤ô¸¹
      serial_no=cast(gen_id(generator¦WºÙ,1) as char(3));
   else
      #±N¬y¤ô¸¹¸m¬°0,¨Ï¥Î¬Û´î
       =GEN_ID(My_Generator, -GEN_ID(My_Generator))
      #¨ú±o¬y¤ô¸¹
   endif  
end

#current_date
select current_date from rdb$database

Àx¦s¨ç¦¡©ÎIJµo©I¥s¨ä¥¦ªºÀx¦s¨ç¦¡
execute procedure ¦WºÙ[¡]ÅܼÆ1,ÅܼÆ2....¡^] [RETURNING_VALUES [¡]ÅܼƢ°¡AÅܼÆ2.....¡^]]
³Ì²³æªº©I¥s(¤£¶Ç­È¡A¤]¤£¶Ç¦^­È)ª½±µ°õ¦æ EXECUTE PROCEDURE ¦WºÙ

´ú¸Õ¨ç¦¡ªº°õ¦æ©Î GENERATORªºµ²ªG
1.«Ø¥ß¤@­ÓGENERATOR
CREATE GENERATOR TESTGEN
2.«Ø¥ß¤@­ÓÀx¦s¨ç¦¡(¥u¬O±NGENERATOR¥[¤@)
create procedure TEST
as
DECLARE VARIABLE MY  FLOAT;
BEGIN
MY=GEN_ID("TESTGEN",1);
END
3.ª½±µ°õ¦æ©R¥O
EXECUTE TEST
4.¬d¸ßGENERATOR¬O¤£¬OÅܬ°2

ÅܼÆ
¨ç¦¡¤¤¦Û¤v«Å§iªº°Ï°ìÅܼÆ
1.ª½±µ¤Þ¥Î-¤£»Ý¥ô¦ó«e¸m²Å¸¹
2.¥Î¦bsql»yªk¤¤-¥²¶·«e¸m:
°O¿ý¨Ï¥ÎªÌ
CURRENT_USER ©M CURRENT_ROLE
®É¶¡ÅܼÆ
current_time,current_date,current_timestamp

udf¦Û©w¨ç¦¡ªº¤º«Ø¨ç¦¡
¹w³]¦³¤º«Ø¨ç¦¡©ñ¦b¦b¦w¸Ë¥Ø¿ý¤Uªºudf
¤¤§t¦³ªº¨ç¦¡¸ê°T¦bfbudf.sql¡Bib_udf.sql,¦ý¯u¥¿¨ç¦¡¬O¦bfbudf.dll¡Bib_udf.dll
¦bfirebird¤¤¨Ï¥ÎªÌ¦Û©w¨ç¦¡,©M¨ä¥¦ªºsql-server¦³«Ü¤jªº¤£¦P
¦bfirebird¤¤udf¤@¯ë¬O¥Hc©Îc++¼g¦¨¨ç¦¡,µM«á½sͦ¨¬°¼Ò²Õ
1.windows- .dllÀÉ
2.linux -  .so ÀÉ
¦A¨Ó±N¨ä©ñ¦b¦w¸Ë¥Ø¿ýªºUDF¥Ø¿ý¤U,¤@¯ë·|±N¨ä«Å§iÀÉ©ñ¦b¦P¤@¥Ø¿ý¤U,¦pªG¤£¬O©ñ¦b¹w³]ªº¥Ø¿ý¤U,§A¥²¶·¦bfirebirdªºÀô¹ÒÀɤ¤³]©w,¦ý¬O·|¦³¦w ¥þªº°ÝÃD.
¦pªG§A¤£·|¤]¤£·Q¼g¦Û©w¨ç¦¡,¦ý¬O·Q­n¥Î§O¤H¼g¦nªº¨ç¦¡
­n¨Ï¥Î«Å§i©R¥O
declare external function
¨ä»yªk¦p¤U:
declare external function '¦WºÙ'
¶Ç¤JªºÅܼƫ¬ºA¦Cªí
returns ¦^¶ÇÅܼƫ¬ºA FREE_IT
entry_point '¨ç¦¡¦WºÙ' '¼Ò²Õ¦WºÙ';
¦pªG§A¤£ª¾¹D¦³¨º¨Ç¨ç¦¡¥i¥H¨Ï¥Î,¥i¥H°Ñ¦ÒUDF¥Ø¿ý¤Uªº.sql
¥H¤U¬O§¹¾ã§Û¦Ûib_udf.sql
DECLARE EXTERNAL FUNCTION ltrim
    CSTRING(255)
    RETURNS CSTRING(255) FREE_IT
    ENTRY_POINT 'IB_UDF_ltrim' MODULE_NAME 'ib_udf';
§A¥²¶·¦bisql³s½u¸ê®Æ®w§¹²¦«á°õ¦æ¤W­zªº©R¥O(©Î¨ä¥¦ºÞ²zµ{¦¡),«h¸Ó¨ç¦¡´N·|ÀH¸ê®Æ®w¥i¥H³Q©I¥s¨Ï¥Î,
FREE_IT¬O¦b¨ç¦¡¶Ç¦^­È¤§«á²M±¼©Ò°t¸mªº°O¾ÐÅé.
­Ó¤H»{¬°¥Ø«eclient©Ò´£¨Ñªº¨ç¦¡»·¦h©óserverºÝ,¦]¦¹°£«D¥²­n§_«h¾¨¶q¨Ï¥ÎclientºÝªº¨ç¦¡
#ibeasy++¤£´£¨ÑUDFªººÞ²z
#marthon´£¨Ñ

¦w¥þ©Ê(«Ø¥ß¦h­Ó¸ê®Æ®w³Æ¥÷ÀÉ)
create shadow
¤@¥¹¨Ï¥Î¤W­z©R¥O«h·|«Ø¥ß¤@­Ó¦P¨Bªº¸ê®Æ®w¦b¨ä¥¦ªºÀx¦s³]³Æ¤W,³o¥i¥H«O»Ù·í¸ê®Æ®wÅÞ¿è©Î¹êÅ骺Àx¦s¤¶­±·lÃa®É,¦³¤@­Ó³Æ¥÷ªº¸ê®Æ®w¥i¥H§Y®É¨ú¥N

­««Ø¯Á¤Þ
alter index ¯Á¤Þ¦WºÙ inactive
alter index ¯Á¤Þ¦WºÙ active
¤W­z©R¥O¥i¥H¥Î¦b­««Ø¯Á¤Þ,©Î¬O¸ê®Æ®w¦^¦s®É·Q­n¥[³t¨ä°õ¦æ³t«×,¤£­n¦^¦s®ÉÃä¦^¦sÃ䫨¥ß¯Á¤Þ,¥ý°õ¦æinactive«h¦^¦s®É¯Á¤Þ·|¥¢¥h§@¥Î,µ¥¸ê®Æ®w ¦^¦s§¹²¦®É¦A°õ¦æactiveªº°Ê§@,«h·|­««Ø¯Á¤Þ,·íµM¥u¦³¦b¨S¦³¤H¨Ï¥Î¸Ó¸ê®Æ®w®É¤~¥i¥H¨Ï¥Î