<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    不能停止

    運動,游玩,學習,我的愛不能停止

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      5 隨筆 :: 3 文章 :: 8 評論 :: 0 Trackbacks
    可能內容有些沒章法。
    以前在壇上許過寫份學習資料出來。今天補上。望對學習者有幫助。

    簡介:
    對學習sybase和ms-sqlserver的體會,包括安裝、初始化、sql學習,過程和觸發子創建,db-library和ct-library以及同oracle的不同之處,和細節注意對比。

    [不能上傳文件,只好列出內容]
    Sybase學習體會
    原創:戴黎鳴
    第一大塊:Sybase安裝 [redhat 7.2]
    Sybase rpm 包安裝順序 12.5.0.1 for linux
    sybase-common-12.5.0.1DE-1.i386.rpm
    sybase-ase-12.5.0.1ESD-1.i386.rpm
    sybase-efts-12.5.0.1ESD-1.i386.rpm
    sybase-openclient-12.5.0.1ESD-1.i386.rpm
    sybase-esql-12.5.0.1ESD-1.i386.rpm
    sybase-sqlremote-7.0.2-1.i386.rpm
    sybase-chinese-12.5.0.1ESD-1.i386.rpm
    安裝
    rpm -ivh sybase-common-12.5.0.3-7.i386.rpm
    rpm -ivh sybase-ase-12.5.0.3-7.i386.rpm [ -Uhv --nodeps]
    rpm -ivh sybase-efts-12.5.0.3-7.i386.rpm [ -Uhv --nodeps]
    rpm -ivh sybase-openclient-12.5.0.3-7.i386.rpm
    rpm -ivh sybase-esql-12.5.0.3-7.i386.rpm
    rpm -ivh sybase-sqlremote-7.0.2-1.i386.rpm
    卸載
    rpm -e sybase-efts-12.5.0.3-7
    rpm -e sybase-sqlremote-7.0.2-1
    rpm -e sybase-esql-12.5.0.3-7
    rpm -e sybase-openclient-12.5.0.3-7
    rpm -e sybase-openclient-12.5.0.3-7
    rpm -e sybase-ase-12.5.0.3-7
    rpm -e sybase-chinese-12.5.0.3-7
    rpm -e sybase-doc-12.5.0.3-7
    rpm -e sybase-common-12.5.0.3-7
    rpm -ql libstdc++
    安裝順序和依賴關系說明:
    sybase-common-12.5.0.1DE-1.i386.rpm The common package is a prerequisite to all other packages. It creates and installs the default runtime environment required by other packages, and includes tools to configure, install, and administer Adaptive Server and related components.
    NOTE: The sybase-common-12.5-3.i386.rpm is a pre-required package. You must install it before you install any other rpm package as all depend on the common package.

    sybase-ase-12.5.0.1ESD-1.i386.rpm This package installs all binary server components required to run Adaptive Server, Backup Server, XP Server, Monitor Server, Historical Server and related utilities and tools for database development and maintenance.

    sybase-efts-12.5.0.1ESD-1.i386.rpm The efts package installs the Enhanced Full-Text Search Specialty Data Store, which provides the capability to do complex searches on character and text data stored in the ASE. The performance of the searches can be orders of magnitude faster than using standard SQL searches.

    sybase-openclient-12.5.0.1ESD-1.i386.rpm The Open Client package installs the Sybase Open Client Software Development Kit (SDK). Open Client consists of programming interfaces and networking services for writing client applications for point-to-point communication to Sybase server products.

    sybase-esql-12.5.0.1ESD-1.i386.rpm The Embedded SQL package installs the Sybase ESQL binaries, libraries, include files and sample programs. It consists of the programming interfaces and networking services for writing client application in Embedded-SQL for point-to-point communication to ASE.
    NOTE: The sybase-esql-12.5.0.1ESD-1.i386.rpm package requires the sybase-openclient-12.5.0.1ESD-1.i386.rpm package.

    sybase-sqlremote-7.0.2-1.i386.rpm The SQL Remote package installs the Sybase SQL Remote for Adaptive Server Enterprise. SQL Remote is a data-replication technology designed for two-way replication between a consolidated data server and large numbers of remote databases, typically including many mobile databases.

    sybase-chinese-12.5.0.1ESD-1.i386.rpm
    sybase-french-12.5.0.1ESD-1.i386.rpm
    sybase-german-12.5.0.1ESD-1.i386.rpm
    sybase-japanese-12.5.0.1ESD-1.i386.rpm
    sybase-korean-12.5.0.1ESD-1.i386.rpm
    sybase-polish-12.5.0.1ESD-1.i386.rpm
    sybase-portuguese-12.5.0.1ESD-1.i386.rpm
    sybase-thai-12.5.0.1ESD-1.i386.rpm
    sybase-spanish-12.5.0.1ESD-1.i386.rpm
    NOTE: These packages cannot be installed on a platform that is running an incorrect version of Linux, kernel and run-time. These packages do allow for upgrade of previous released versions under Linux. These packages do not allow for degrading later installs.

    Consistency Check: Once the files have been transferred to the target machine, perform a consistency check before installing the packages. Enter:

    #rpm -- checksig *.rpm

    You should receive the following output:
    sybase-common-12.5.0.1DE-1.i386.rpm: md5 OK
    sybase-ase-12.5.0.1ESD-1.i386.rpm: md5 OK
    sybase-efts-12.5.0.1ESD-1.i386.rpm: md5 OK
    sybase-esql-12.5.0.1ESD-1.i386.rpm: md5 OK
    sybase-openclient-12.5.0.1ESD-1.i386.rpm: md5 OK
    sybase-sqlremote-12.5.0.1ESD-1.i386.rpm: md5 OK
    sybase-french-12.5.0.1ESD-1.i386.rpm: md5 OK
    sybase-german-12.5.0.1ESD-1.i386.rpm: md5 OK

    Refer to the Installation Guide for detailed installation instructions

    usage: isql [-b] [-e] [-F] [-p] [-n] [-v] [-X] [-Y] [-Q]
    [-a display_charset] [-A packet_size] [-c cmdend] [-D database]
    [-E editor [-h header [-H hostname [-i inputfile]
    [-I interfaces_file] [-J client_charset] [-K keytab_file]
    [-l login_timeout] [-m errorlevel] [-M labelname labelvalue]
    [-o outputfile] [-P password] [-R remote_server_principal]
    [-s col_separator] [-S server_name] [-t timeout] [-U username]
    [-V [security_options]] [-w column_width] [-z localename]
    [-Z security_mechanism]

    1、 Root用戶,先將rpm包解壓,解壓后的目錄為/opt/Sybase-12.5
    rpm -ivh *.rpm 順序為前面所述的順序。
    如果以前安裝過,用
    rpm -e 'rpm -qa|grep sybase'卸載
    2、 執行$SYBASE/install/sybinstall.sh,它將創建sybase用戶和口令,用passwd將sybase的用戶口令修改為所要設定的口令。
    3、 在root用戶登錄文件中加入以下語句(以bash用戶,.bash_profile為例。更改系統內存值為60M):echo "62914560" > /proc/sys/kernel/shmmax
    {
    1、 改/etc/sysctl.conf文件加入
    kernel.shmmax=10000
    fs.aio-max-size=10000
    2、 編輯$SYBASE/ASE/init/ sample_resource_files/ srvbuild.adaptive_server.rs文件
    其他服務建立文件也如此。
    注意輸入數據文件時,如果沒有建立raw device 將要指定存放的目錄和數據庫數據文件。
    3、 修改后用svrbuildres -r $SYBASE/ASE/init/sample_resource_files/
    srvbuild.adaptive_server.rs執行將建立數據庫。
    } /opt/sybase-12.5/ASE-12_5/bin/srvbuildres -r /opt/sybase-12.5/ASE-12_5/init/
    sample_resource_files/leon.adapative_server.rs
    4、 設置完成后,重新用sybase登陸[他會自動設定完成環境變量],建一個目錄存放日后的數據庫文件
    5、 重新restart computer
    6、 sybase登陸x-windows,執行$SYBASE/ASE-12_5/bin/srvbuild,選擇完四個服務器,鍵入數據,執行創建。
    [
    在X-Windows中使用srvbuild工具配置ASE產品
    1、用sybase用戶登錄X-Windows,執行sybase安裝目錄(/opt/sybase-11.9.2)下/bin/srvbuild命令。
    2、在srvbuild窗口中,選擇要安裝Server類型。把四種Server都選上。
    3、給Server命名。將Adaptive Server命名為TEST,相應地,Backup Server自動命名為TEST_back,Monitor Server命名為TEST_mon,XP Server命名為TEST_XP。點擊OK按鈕,進入各Server的配置過程。
    4、配置Adaptive Server。填寫或選擇以下內容:
    Master device path(主設備路徑):/db/sybsystem/master.dat
    Master device size(MB)(主設備大小):60
    Master database size(MB)(主數據庫大小):20
    Sybsystemprocs device path(系統存儲過程設備路徑):/db/sybsystem/systemprocs.dat
    Sybsystemprocs device size(MB)(系統存儲過程設備大小):60
    Sybsystemprocs database size(MB)(系統存儲過程數據庫大小):60
    Error log path(錯誤日志路徑):/opt/sybase-11.9.2/install/TEST.log
    Transport type(傳輸協議類型):tcp
    Host name(主機名):192.168.0.1
    Port number(監聽端口號):4100
    點擊OK按鈕,進入下一配置過程。
    5、配置Backup Server。填寫或選擇以下內容:
    Error log path:/opt/sybase-11.9.2/install/TEST_back.log
    Tape configuration file:/opt/sybase-11.9.2/backup_tape.cfg
    Language:(不填)
    Character set:(不填)
    Maximum number of network connections:25
    Maximum number of server connections:20
    Transport type:tcp
    Host name:192.168.0.1
    Port number:4200
    點擊OK按鈕,進入下一配置過程。
    6、配置Monitor Server。填寫或選擇以下內容:
    Maximum number of connections:5
    Error log path:/opt/sybase-11.9.2/install/TEST_mon.log
    Configuration file path:/opt/sybase-11.9.2/install/TEST_mon.cfg
    Share memory directory:/opt/sybase-11.9.2
    Transport type:tcp
    Host name:192.168.0.1
    Port number:4300
    點擊OK按鈕,進入下一配置過程。
    7、配置XP Server。填寫或選擇以下內容:
    Transport type:tcp
    Host name:192.168.0.1
    Port number:4400
    點擊Build Server按鈕,開始創建Server,這時出現一個窗口,你可以看到整個創建過程。如果有顯示以下類似信息,表示創建Server成功:
    ……
    Server TEST was successfully created.
    Done.
    ……
    8、創建Server成功后,系統就會問你是否將Server本地化(Localize),即是用另外一種語言代替默認的us_english language,以及改變默認的iso_1字符集和Binary索引順序。選擇是NO。為什么呢?曾經把中文(eucgb)設為默認字符集,反而不支持中文大字集,因為eucgb是基于GB2312標準的。查了Sybase的手冊中一些關于本地化的說明,得出的印象是,在ASE中有Unicode轉換機制,可以轉換來自不同字符集的服務器或客戶端的數據。應用也證明,使用ASE的默認的語言、字符集、索引順序來處理中文是可行的。
    9、安裝成功后要做的幾件事。首先在Linux控制臺模式下以sybase用戶登錄。
    ① 確認Server是否在運行。使用$SYBASE/install/下的showserver命令($SYBASE表示sybase的安裝目錄),應該可看見系統有幾個sybase相關進程。或者用$SYBASE/bin/下的isql -Usa -P -STEST命令來登錄Server,應該可以看見isql的提示符"1>",再鍵入exit就可以退出了。
    ② 用sp_password null, 新口令
    go將sa的用戶口令改掉。
    ]
    7、 成功后將自動啟動數據庫。可用isql -Usa -Ppassword -Sserver_name連進數據庫。
    isql -Usa -P -Ssybase
    8、 執行1>sp_diskdefault master , defaultoff
    2>go
    將以后用戶數據庫數據文件不要建立在master所在的數據文件中。
    9、 用sp_password oldpassword,newpassword設定sa的用戶口令。
    a) sp_password null,Sybase
    b) go
    10、 用shutdown關閉數據庫。
    11、 重新啟動數據庫用$SYBASE/ASE/install/RUN_sybase啟動,這為前臺啟動方式。后臺啟動方式用。
    $SYBASE/ASE/install/startserver -f RUN_Sybase
    RUN_sybase例子:
    #!/bin/sh
    #
    # ASE page size (KB): 2048
    # Master device path: /opt/sybase-12.5/data/nextip.dat
    # Error log path: /opt/sybase-12.5/ASE/install/sybase.log
    # Configuration file path: /opt/sybase-12.5/ASE/sybase.cfg
    # Directory for shared memory files: /opt/sybase-12.5/ASE
    # Adaptive Server name: sybase
    #
    /opt/sybase-12.5/ASE/bin/dataserver \
    -d/opt/sybase-12.5/data/nextip.dat \
    -e/opt/sybase-12.5/ASE/install/sybase.log \
    -c/opt/sybase-12.5/ASE/sybase.cfg \
    -M/opt/sybase-12.5/ASE \
    -ssybase \

    關閉數據庫:
    用sa用戶進入數據庫執行shutdown命令即可完成數據庫的關閉。

    數據庫設備的建立
    重啟在sybase用戶下,
    1> use master
    2> go
    3> sp_diskdefault master , defaultoff
    4> go
    5> sp_helpdevice
    6> go
    1> disk init
    2> name='sybsyntaxdev',
    3> physname='/opt/sybase-12.5/data/user_data/testdb.dat',
    4> vdevno=4,
    5> size='30m'
    6>
    7> go
    建立數據庫設備后就可以建立用戶數據庫
    sa
    create database userdb on db_dev_name=size M

    1> disk init
    2> name='testdbdev',
    3> physname='/opt/sybase-12.5/data/user_data/testdb.dat',
    4> vdevno=6,
    5> size
    6> go
    8> use master
    9> go
    10> create database testdb on testdbdev=10
    11> go
    建立用戶數據庫的用戶
    1>sa connenction into database
    2>use testdb
    3>go
    4>sp_addlogin ldai, password, null, null, 'dailiming'
    5>go
    6>sp_adduser ldai,dlm
    7>go
    isql -Uldai -Ppassword1 -Ssybase就可以連進testdb用戶數據庫了。
    注意口令長度不得小于6位,如果口令以數字開頭,還需要以單引號括起來。
    Sp_addlogin提供用戶能訪問數據庫的權限,如果沒有指定用戶具體訪問那個數據庫,則還需要在相應數據庫中用sp_adduser user_name, user_password建一個相同名和口令的用戶。
    例如
    1> sp_adduser ldai, dlm
    2> go
    3>

    如果用sa用戶創建了一個用戶數據庫,想將他的所有者由sa改為其他用戶。
    確定其他用戶只具有addlogin,不具有adduesr。如果有addusers則要sp_dropuser刪除掉,否則不能賦給他所有者權限。
    Isql -Usa
    1> use testdb
    2> go
    3> sp_changedbowner ldai, testdb
    4> go
    5> sp_default ldai, testdb
    6> go
    7> sp_helpdb testdb
    8> go
    將更改數據庫owner了,注master不能更改

    建用戶有兩中方式,上面這一種是建立用戶帳號,再在具體數據庫中建立該數據庫應用帳號。較為繁瑣。可通過sp_addlogin加其他參數,一步到位將數據庫用戶建立起來。
    Sp_addlogin user_name,user_password,所用數據庫名稱,null, '用戶全名備注'
    例如:
    sp_addlogin nextip, nextip, NEXTIPDB, null, 'nextipdb's dba'

    Msg 5106, Level 16, State 6:
    Server 'sybase', Line 1:
    Parameter 'SIZE' requires value of type 'int'.
    1> disk init
    2> name='sybsyntaxdev',
    3> physname='/opt/sybase-12.5/data/user_data/sybsyntaxdev.dat',
    4> vdevno=4,
    5> size='10m'
    6> go
    00:00000:00008:2003/10/22 14:33:19.21 kernel Initializing virtual device 4, '/opt/sybase-12.5/data/user_data/sybsyntaxdev.dat' with dsync 'on'.
    00:00000:00008:2003/10/22 14:33:19.21 kernel Virtual device 4 started using asynchronous i/o.
    00:00000:00008:2003/10/22 14:33:19.22 kernel Initializing device /opt/sybase-12.5/data/user_data/sybsyntaxdev.dat from offset 0 with zeros.
    00:00000:00008:2003/10/22 14:33:19.25 kernel Finished initialization.
    1>

    初次建立數據庫對sa的口令要進行修改。
    sp_password old_password, new_password, login name
    1> sp_password null, nextip, sa
    2> go
    3>

    sp_dboption 是用來打開或關閉數據庫的選項 [select into/bulkcopy]。只用這樣數據庫才能執行如select identity(int) id0,* into #temp1 from tablename這樣的sql語句。查看是否打開option用sp_helpdb就可以查看。Sp_dboption只能在master 數據庫中引用。是否允許列字段為空還是不為空也是用這個命令。
    1> use nextipdb
    2> go
    3> master..sp_dboption nextipdb,"select into/bulkcopy","true"
    4> go
    5> checkpoint
    6> go

    1> dbcc checkdb
    2> go
    3> dbcc checkcatalog
    4> go

    1、增加自定義的數據類型為sp_addtype datatypename ,"length",
    FE: sp_addtype tid, "char(6)", "not null"
    2、查看某一用戶是否有什么權限,sp_helprotect user_name
    4、 修改用戶出始登陸的數據庫,命令為sp_modifylogin
    5、 檢索identity字段可以用syb_identity=指定值來檢索,如
    t_dns_rezo_gs中有且一個identity字段[rzgs_id ],則可如下檢索
    select count(*) from t_dns_rezo_gs where syb_indentity=1
    6、 sp_dboption可設置數據庫通用的一些選項。
    7、 當想要對表進行手工插入identity時,如果沒有set identity_insert table_name on/off打開,
    就要打開,如果一旦打開,每一筆記錄都要手工指明identity值,而不是自動插入形式,切記。如果變回off后,則identity記數從表中最大的identity值開始記數。例最大值為10,則記數從11開始,中間就有gap出現了。
    8、 identity默認精度為18位,如果達到了,就需要增加其精度。可用alter table table-name
    modify identity_col_name, numeric(20,0)進行修改精度。
    9、 使數據庫自動為新建表建立一個隱藏的identity字段為sp_dboption db_name , "auto identity", "true"
    為identity設置精度,由管理員操作sp_configure "size of auto identity", 精度位數
    如sp_configure "size of auto identity",15
    10、 在當前數據庫中創建另外一個數據庫的表或其他對象, create other_db_name..object_name
    如: create table newdb..t_dns_gs (name varchar(255))
    11、 select user_name() /user / db_name() 返回當前用戶或數據庫
    12、 col_length("表名", "字段名") 返回指定字段的長度/ datalength("列名")實際存儲長度對varchar/期于是創建時指定的長度
    13、 isNull(exp1, exp_value) 為如果exp1為null則用exp_value替代
    14、 convert(轉換后的類型和長度,要轉換的類型值)
    如:select "my Test" + ""+convert(varchar(20),1211333)
    1> select mmm="my Test" + ""+convert(varchar(20),1211333)
    2> go
    mmm
    ----------------------------
    my Test 1211333

    (1 row affected)
    15、 獲取當前時間為select getdate()
    16、 當前變量申明 declare @變量名 類型
    賦值操作select @變量名=變量值
    如:
    declare @sIpad varchar(20),@iNum numeric(2,0)
    select @sIpad='0AC80001',@iNum=32
    17、 看過程的源碼sp_helptext 過程名
    例子:
    1> sp_helptext p_convert_num_to_char
    2> go
    # Lines of Text
    ---------------
    1
    (1 row affected)
    text
    ----------------------------------------------------------------------------------------------------------------------
    create procedure p_convert_num_to_char
    @cint numeric, @outchar varchar(10) output
    as
    if (@cint=4)
    select @outchar='Four'
    if (@cint=5)
    select @outchar='Five'
    if (@cint=6)
    select @outchar='Six'
    (1 row affected)
    (return status = 0)

    18、 oracle中查看源碼,查看該sources表
    19、 在一個過程中調用另外一個過程,
    例如:
    create procedure test_one @test_proc_name varchar(255)
    as exec @test_proc_name
    20、 記住在sybase中執行sql是用'go'不是以';'為結束兼執行
    21、 創建數據庫用戶:sa用戶 master庫中,sp_addlogin user,password,dbname
    22、 變更數據屬主::sa用戶進入要變更的數據庫執行 sp_changedbowner user,dbname
    23、 設置用戶的默認登陸數據庫::sa用戶進入要設定的數據庫執行:
    sp_defaultdb user,dbname
    24、 以#開頭的臨時表只是在某一過程或sql操作中存在,一旦過程或sql操作結束,則臨時表就不存在了,如果再要訪問就回出錯。解決是不建立以#為preffix的表。
    25、 要想直接手工插入值到表中identity字段,需要打開該表的identity_insert選項。
    Set identity_insert 表名 on/off
    如:
    set identity_insert t_dns_rezo_gs on
    這樣insert into t_dns_rezo_gs(rzgs_id,rzgs_name) values(999,'12121')才會成功。
    26、 指定某個過程什么時候執行后用waitfor delay "hh24:mi:ss",并且用了這種方式后該connection不會有什么響應直到過程被執行完成。
    如半個小時后執行過程test_p
    begin
    waitfor delay "0:30:00"
    exec test_p
    end
    27、 調用帶返回參數的過程完整例子
    create procedure p_convert_num_to_char
    @cint numeric, @outchar varchar(10) output
    as
    if (@cint=4)
    select @outchar='Four'
    if (@cint=5)
    select @outchar='Five'
    if (@cint=6)
    select @outchar='Six'
    go

    declare @getchar varchar(10)
    exec p_convert_num_to_char 4,@outchar=@getchar output
    28、 過程中有返回參數時,如果預先設定參數值,最終都會改變
    如:
    declare @First int
    select @First=123
    exec test_p @second=@First output
    //運行結果為999
    則@second和@First 都為999
    29、 過程名改名sp_rename oldname, newName
    30、 ct-library編程,在sybase提供的linux中有,環境搭建要點,要確定$SYBASE設定了,$SYBASE_OCS設定open client所在目錄即可不要是全目錄,還要設定平臺$SYBPLATFORM=linux; 具有這三個環境變量,open client提供的sample才可大部分編譯通過;其中有幾個程序由于找不到-lsrv,而編譯通不過。推測可能涉及了open server的東西,所以沒有通過。
    例子程序可以單獨編譯,如make 例子名 [F.E make firstapp
    ]
    設定LD_LIBRARY_PATH=$SYBASE/$SYBASE_OCS/lib

    編譯形式例如firstapp.c
    $SYBASE=/opt/sybase-12.5
    $SYBASE_OCS= OCS-12_5
    cc -o fist firstapp.c -I. -I/opt/sybase-12.5/OCS-12_5/include -L/opt/sybase-12.5/OCS-12_5/lib -rdynamic -ldl -lnsl -lm -lct -lcs -lsybtcl -lcomn -lintl
    31、 db-library編譯語句:
    cc -I. -I/opt/sybase-12.5/OCS/include example1.c /opt/sybase-12.5/OCS/lib/libsybdb.a -lm -o example1
    同樣要設好SYBASE SYBASE_OCS SYBPLATFORM
    并且要保證interface文件中連接服務器是對的。
    同時對于想要連接的服務器名要在環境變量DSQUERY中設好。
    如:
    export DSQUERY=accunetsvr

    注意,用hostname作為連接名時,確保/etc/hosts中的IP和hostname有對應且對應正確。

    32、 db-library 經實驗數據庫連接結構支持線程間的傳遞,將函數打包用下列樣式:
    gcc -c -I. -I/opt/sybase-12.5/OCS/include s_fcts.c
    ar r libleon.a s_fcts.o
    rm -rf *.o
    打包完畢
    調用函數進行編譯樣式:
    cc -I. -I/opt/sybase-12.5/OCS/include ss_nip_checkUGandUser.c libleon.a
    /opt/sybase-12.5/OCS/lib/libsybdb.a -lm -o leon4
    或者
    cc -I. -I/opt/sybase-12.5/OCS/include -o leon4 ss_nip_checkUGandUser.c libleon.a
    /opt/sybase-12.5/OCS/lib/libsybdb.a -lm
    33、 DB-library的應用程序運行其他機上訪問另一臺機(數據庫所在的機器).在客戶機上需要裝sybase-comom 和syabse-openclient組件。需要設定對SYBASE / DSQUERY. 其中sybase要設定為指向interfaces文件的路徑,DSQUERY要設定為要遠程訪問的主機名 (adapative_server_name).將遠程主機的interfaces拷貝到客戶機上SYBASE指定的目錄即可。注意如果沒有設定 DSQUERY,則程序默認去找sybase的數據庫,這時如果沒有該數據庫名字在interfaces文件中,程序就會不能運行。
    [實際只需設定好DSQUERY環境變量和interface文件即可]
    34、 DB-library應用在多線程中每次都要重新連接數據庫,否則一定時間后連接會被操作系統重置掉。 Connection reset by peer
    35、 DB-library的錯誤捕捉。系統提供一種系統錯誤信息函數自動在出現錯誤時去捕捉顯示錯誤信息。
    int msg_handler(dbproc, msgno, msgstate, severity, msgtext,
    srvname, procname, line)
    DBPROCESS *dbproc;
    DBINT msgno;
    int msgstate;
    int severity;
    char *msgtext;
    char *srvname;
    char *procname;
    int line;
    {};
    int err_handler(dbproc, severity, dberr, oserr, dberrstr, oserrstr)
    DBPROCESS *dbproc;
    int severity;
    int dberr;
    int oserr;
    char *dberrstr;
    char *oserrstr;
    {};

      dbmsghandle(msg_handler);
    dberrhandle(err_handler);

    除此之外,用戶如果想要自己控制錯誤信息可在dbsqlexec() 調用后并且while()處理完后,調用dbcount(dbproc)進行錯誤信息判斷,如果等于-1則出現錯誤。特例調用沒有select的過程:: dbnocount設為on::沒有select的sql語句::sql寫錯::sql執行錯誤等都可以出現-1所以要小心判斷處理。
    36、 Jdbc連接sybase。首先需要jconn2.jar和jTDS2.jar文件,在環境變量CLASSPATH設定好。
    Class.forName("com.sybase.jdbc2.jdbc.SybDriver");
    url結構為: jdbc:sybase:Tds:dbserver_ip/dbserver_hostname:dbserver_port/dbname
    dbserver的端口為數據庫服務器上的interfaces文件中對應的數據庫端口。
    例子:
    192.168.0.6
    interfaces
    [root@accunetsvr sybase-12.5]# more interfaces
    accunetsvr_text
    master tcp ether accunetsvr 4500
    query tcp ether accunetsvr 4500


    accunetsvr
    master tcp ether accunetsvr 4100
    query tcp ether accunetsvr 4100


    accunetsvr_back
    master tcp ether accunetsvr 4200
    query tcp ether accunetsvr 4200


    accunetsvr_mon
    master tcp ether accunetsvr 4300
    query tcp ether accunetsvr 4300


    ACCUNETSVR_XP
    master tcp ether accunetsvr 4400
    query tcp ether accunetsvr 4400

    可知dbserver_name是accunetsvr
    dbserver_ip 是192.168.0.6
    dbserver_port 是4100
    dbname為nextip
    url為 jdbc:sybase:Tds:192.168.0.6:4100/nextip
    37、 創建identity列,如果是create table 時一定是numeric型。如果想要創建數據庫自動為新建的所有表增加一個隱藏的identity字段,用[sp_dboption database_name, "auto identity", "true"]。在檢索數據的時候必須隱式加上SYB_IDENTITY_COL作為隱藏的identity列,例如select SYB_IDENTITY_COL, sn_name from t-subnet
    默認的隱藏精度大小為10如果用戶想要增大其精度,可用[sp_configure "size of auto identity", 新的精度],例如: sp_configure "size of auto identity",15
    38、 從select into 創建一個新的idenetity列,這在sql語句分頁檢索用。
    Select idenetity_name=identity(精度) , * into new_table from old_table;
    如:
    select id0=identity(1icon_cool.gif,* into #subnets from t_subnet where sn_type=10;
    39、 實現用sql語句進行分頁查詢方法:
    A. 創建一個臨時表帶identity字段 select id=indentity(20), * into #table_anme from table_name where 條件
    B. 然后根據id進行檢索第n條到m條數據 (也可用between and)
    C. 最后Drop掉該臨時表
    D. 注意要打開數據庫的select into /bulk copy屬性 sp_dboption database_name, "select into/bulk copy", "true"才能進行select into操作
    E. mssql中格式為select identity(int) id, * from #table_name from table_name where 條件
    40、 linux下訪問sql-server用db-library與sybase相同要素。只是遠程訪問端口為sql-server指定的1433

    41、 JDBC訪問MS-SQLSERVER
    連接數據庫:[需要這三個jar文件msbase.jar msutil.jar mssqlserver.jar]
    JDBC DRIVER:com.microsoft.jdbc.sqlserver.SQLServerDriver
    URL:jdbc:microsoft:sqlserver://Ip Or Name:1433;DatabaseName=XXX
    42、 Oracle中的外連接符為=(+) 或(+)= 在Sybase中為=* 或 *=
    43、 執行sybase過程中會有日志滿了或存儲空間不夠了,出現supsend狀態,可用
    isql -Usa -Ppassword -Sdbservername
    進去執行dump tran db_name with truncate_only進行清空操作
    或者dump tran db_name to 'path/file'進行備份在執行清空。
    44、 ms-sql中的substring(string, start, length)函數參數,start和length為INT型不能為numeric型。
    45、 select * into 在oracle中的用法在ms-sql和sybase中的用法為select @變量=column
    from 表名 where 條件
    46、 游標在ms-sql和sybase中差別主要為while 判斷的全局變量不同。
    Sybase中為@@sqlstatus = 0
    Ms-sql中為@@FETCH_STATUS = 0
    關閉游標時在ms-sql中除了[close 游標名] 還要增加[deallocate 游標名]

    47、 MS-SQL對于sql語句大小寫不敏感,sybase對大小寫敏感。

    48、 oracle同sybase和mssql的常用函數對比
    ORACLE SYBASE MS-SQLSERVER
    SysdateTo_char(, '格式')格式:yyyymmddhh24miss任意組合 getdate()可用year() month() day()分解獲得年月日 convert(varchar, getdate(), 108)是hh:mm:ss getdate()可用year() month() day()分解獲得年月日convert(varchar, getdate(), 108)108是hh:mm:ss120是yyyy-mm-dd
    Length() Datalength() Datalength()
    Ltrim() rtrim() Ltrim() rtrim() Ltrim() rtrim()
    Substr() Substring() Substring(varchar, INT, INT)
    Replace('123', '2', 'A) Replace('123', '2', 'A)
    instr
    Lpad() rpad() Replicate('0', 32) Replicate('0', 32)
    Upper() lower() Upper() lower() Upper() lower()

    49、 日期計算在ms-sql中
    dateadd(日期代碼,日期值, 日期)
    select convert(varchar,getdate(),120) as year,convert(varchar,dateadd(ss, 1200,getdate()),120) as nYear
    go
    日期部分 簡寫 值
    year yy 1753--9999
    quarter qq 1--4
    month mm 1--12
    day of year dy 1--366
    day dd 1--31
    week wk 1--53
    weekday dw 1--7(Sunday--Saturday)
    hour hh 0--23
    minute mi 0--59
    second ss 0--59
    milisecond ms 0-999

    也可
    select convert(varchar, getdate(), 111)+' '+convert(varchar,getdate(),108) as oldtime,convert(varchar,dateadd(ss,1200,getdate()),111)+' '+convert(varchar,dateadd(ss,1200,getdate()),108) as date
    也可
    select convert(varchar,convert(datetime,'20031223'),111)
    go


    50、 PostgreSQL中的lib編程時,select 和update /delete的成功失敗條件判斷是不同的。
    Update/delete:: strcmp(PQcmdStatus(temp_res), "")==0
    select :: !temp_res||PQresultStatus(temp_res) != PGRES_TUPLES_OK
    51、 日期各格式的引用模式ms-sql和sybase中都通用
    yyyy/mm/dd hh24:mi:ss
    select convert(varchar, getdate(), 111)+' '+convert(varchar,getdate(),108) as oldtime,convert(varchar,dateadd(ss,1200,getdate()),111)+' '+convert(varchar,dateadd(ss,1200,getdate()),108) as date
    select name,text from all_source where type='FUNCTION' and name='F_CHECK_IB_SCOPE';
    select convert(varchar,convert(datetime,'20031223'),111)
    go
    Select count(ipgs_host_name)||',host-'||f_ipad_change_dec4('%s','1') From t_ipdev_gs

    yyyy/mm/ddhh24miss
    Select CO_DESC,to_char(sysdate - 1/48,'yyyymmddhh24miss') co_date from T_LICENSE
    dateadd(ss, -1800, getdate())
    select co_desc, convert(varchar, dateadd(ss, -1800, getdate()),111)+convert(varchar,dateadd(ss, -1800, getdate()),108) as co_date from t_license
    select convert(varchar, getdate(), 111)+' '+convert(varchar,getdate(),108) as oldtime,convert(varchar, dateadd(ss, -1800, getdate()),111)+convert(varchar,dateadd(ss, -1800, getdate()),108) as co_date

    yymmddhh:mi:ss
    select convert(varchar,getdate(),112)+convert(varchar,getdate(),icon_cool.gif
    go
    52、 顯示sql執行時間用: isql -Unextip -Pnextip -Sleon1 -p
    進入即可,加小寫-p參數
    53、 MS-SQL中創建數據庫
    create database NEXTIPDB
    on primary
    (
    name = DEVDB,
    filename = 'd:\mssql_data\devdb.mdf',
    size = 30MB,
    maxsize = 100MB,
    filegrowth = 10MB
    ),
    (
    name = DEVDB1,
    filename = 'd:\mssql_data\devdb1.ndf',
    size = 10MB,
    filegrowth = 10MB
    )
    Log on
    (
    name = DEVDBLOG,
    filename = 'e:\mssql_log\devdblog.ldf',
    size = 10MB,
    maxsize = 100MB,
    filegrowth = 10MB
    )
    go
    54、 細小區別
    Sybase::
    IF NOT EXISTS (SELECT * FROM master..syslogins, master..sysdatabases
    WHERE master..syslogins.suid = master..sysdatabases.suid
    AND master..syslogins.name = 'nextip')
    EXEC sp_changedbowner nextip, NEXTIPDB
    GO

    Ms-sqlserver::
    IF NOT EXISTS (SELECT * FROM master..syslogins, master..sysdatabases
    WHERE master..syslogins.sid = master..sysdatabases.sid
    AND master..syslogins.name = 'nextip')
    EXEC sp_changedbowner nextip, NEXTIPDB
    GO
    posted on 2005-10-26 17:44 快樂的射手 閱讀(1153) 評論(0)  編輯  收藏 所屬分類: DATABASE
    主站蜘蛛池模板: 水蜜桃视频在线观看免费播放高清| 亚洲中文字幕无码久久2020| 亚洲丰满熟女一区二区哦| 久操视频免费观看| 亚洲国产综合91精品麻豆| 日韩av无码久久精品免费| 亚洲AV无码专区亚洲AV伊甸园| 特级做A爰片毛片免费看无码 | 久久精品7亚洲午夜a| 久章草在线精品视频免费观看| 亚洲高清无在码在线无弹窗| h视频在线免费看| 亚洲中文精品久久久久久不卡| 性色av免费观看| 深夜A级毛片视频免费| 亚洲人成中文字幕在线观看| 欧洲人成在线免费| 亚洲一区在线视频观看| 国产精品自在自线免费观看| igao激情在线视频免费| 久久亚洲日韩精品一区二区三区 | 一边摸一边桶一边脱免费视频 | 免费一级肉体全黄毛片| sihu国产精品永久免费| 亚洲精品91在线| 国产精品自在自线免费观看| 成人网站免费看黄A站视频| 亚洲天堂中文字幕在线观看| 日本午夜免费福利视频| 中文字幕a∨在线乱码免费看| 亚洲精品午夜视频| 免费一级毛片在播放视频| 好紧我太爽了视频免费国产 | 国产色爽免费无码视频| 亚洲国产韩国一区二区| 国产无遮挡色视频免费视频| 一级做a爱片特黄在线观看免费看| 亚洲av无码av制服另类专区| 女性自慰aⅴ片高清免费| 免费在线黄色电影| 亚洲精品无码av片|