可能内容有些没章法? 以前在坛上许q写份学习资料出来。今天补上。望对学习者有帮助?
介: 对学习sybase和ms-sqlserver的体会,包括安装、初始化、sql学习Q过E和触发子创建,db-library和ct-library以及同oracle的不同之处,和细节注意对比?
[不能上传文gQ只好列出内容] Sybase学习体会 原创Q戴黎鸣 W一大块QSybase安装 [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++ 安装序和依赖关p说? 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用户Q先rpm包解压,解压后的目录?opt/Sybase-12.5 rpm -ivh *.rpm 序为前面所q的序? 如果以前安装q,? rpm -e 'rpm -qa|grep sybase'卸蝲 2?执行$SYBASE/install/sybinstall.sh,它将创徏sybase用户和口令,用passwdsybase的用户口令修改ؓ所要设定的口o? 3?在root用户d文g中加入以下语句(以bash用户Q?bash_profileZ。更改系l内存gؓ60MQ:echo "62914560" > /proc/sys/kernel/shmmax { 1??etc/sysctl.conf文g加入 kernel.shmmax=10000 fs.aio-max-size=10000 2?~辑$SYBASE/ASE/init/ sample_resource_files/ srvbuild.adaptive_server.rs文g 其他服务建立文g也如此? 注意输入数据文gӞ如果没有建立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登陆[他会自动讑֮完成环境变量]Q徏一个目录存放日后的数据库文? 5?重新restart computer 6?sybase登陆x-windowsQ执?SYBASE/ASE-12_5/bin/srvbuild,选择完四个服务器Q键入数据,执行创徏? [ 在X-Windows中用srvbuild工具配置ASE产品 1、用sybase用户dX-WindowsQ执行sybase安装目录Q?opt/sybase-11.9.2Q下/bin/srvbuild命o? 2、在srvbuildH口中,选择要安装Servercd。把四种Server都选上? 3、给Server命名。将Adaptive Server命名为TESTQ相应地QBackup Server自动命名为TEST_backQMonitor Server命名为TEST_monQXP Server命名为TEST_XP。点击OK按钮Q进入各Server的配|过E? 4、配|Adaptive Server。填写或选择以下内容Q? Master device pathQ主讑֤路径Q:/db/sybsystem/master.dat Master device sizeQMBQ(主设备大?Q?0 Master database sizeQMBQ(L据库大小Q:20 Sybsystemprocs device pathQ系l存储过E设备\径)Q?db/sybsystem/systemprocs.dat Sybsystemprocs device sizeQMBQ(pȝ存储q程讑֤大小Q:60 Sybsystemprocs database sizeQMBQ(pȝ存储q程数据库大)Q?0 Error log pathQ错误日志\径)Q?opt/sybase-11.9.2/install/TEST.log Transport typeQ传输协议类型)Qtcp Host nameQ主机名Q:192.168.0.1 Port numberQ监听端口号Q:4100 点击OK按钮Q进入下一配置q程? 5、配|Backup Server。填写或选择以下内容Q? Error log pathQ?opt/sybase-11.9.2/install/TEST_back.log Tape configuration fileQ?opt/sybase-11.9.2/backup_tape.cfg LanguageQ(不填Q? Character setQ(不填Q? Maximum number of network connectionsQ?5 Maximum number of server connectionsQ?0 Transport typeQtcp Host nameQ?92.168.0.1 Port numberQ?200 点击OK按钮Q进入下一配置q程? 6、配|Monitor Server。填写或选择以下内容Q? Maximum number of connectionsQ? Error log pathQ?opt/sybase-11.9.2/install/TEST_mon.log Configuration file pathQ?opt/sybase-11.9.2/install/TEST_mon.cfg Share memory directoryQ?opt/sybase-11.9.2 Transport typeQtcp Host nameQ?92.168.0.1 Port numberQ?300 点击OK按钮Q进入下一配置q程? 7、配|XP Server。填写或选择以下内容Q? Transport typeQtcp Host nameQ?92.168.0.1 Port numberQ?400 点击Build Server按钮Q开始创建ServerQ这时出C个窗口,你可以看到整个创E。如果有昄以下cM信息Q表C创建Server成功Q? …? Server TEST was successfully created. Done. …? 8、创建Server成功后,pȝ׃问你是否Server本地化(LocalizeQ,x用另外一U语a代替默认的us_english languageQ以及改变默认的iso_1字符集和Binary索引序。选择是NO。ؓ什么呢Q曾l把中文QeucgbQ设为默认字W集Q反而不支持中文大字集,因ؓeucgb是基于GB2312标准的。查了Sybase的手册中一些关于本地化的说明,得出的印象是Q在ASE中有Unicode转换机制Q可以{换来自不同字W集的服务器或客L的数据。应用也证明Q用ASE的默认的语言、字W集、烦引顺序来处理中文是可行的? 9、安装成功后要做的几件事。首先在Linux控制台模式下以sybase用户d? ?认Server是否在运行。?SYBASE/install/下的showserver命oQ?SYBASE表示sybase的安装目录)Q应该可看见pȝ有几个sybase相关q程。或者用$SYBASE/bin/下的isql -Usa -P -STEST命o来登录ServerQ应该可以看见isql的提C符"1>"Q再键入exit可以退Z? ?用sp_password null, 新口? gosa的用户口令改掉? ] 7?成功后将自动启动数据库。可用isql -Usa -Ppassword -Sserver_nameq进数据库? isql -Usa -P -Ssybase 8?执行1>sp_diskdefault master , defaultoff 2>go 以后用h据库数据文g不要建立在master所在的数据文g中? 9?用sp_password oldpassword,newpassword讑֮sa的用户口令? a) sp_password null,Sybase b) go 10?用shutdown关闭数据库? 11?重新启动数据库用$SYBASE/ASE/install/RUN_sybase启动Q这为前台启动方式。后台启动方式用? $SYBASE/ASE/install/startserver -f RUN_Sybase RUN_sybase例子Q? #!/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用户q入数据库执行shutdown命o卛_完成数据库的关闭?
数据库设备的建立 重启在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 建立数据库设备后可以徏立用h据库 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可以连qtestdb用户数据库了? 注意口o长度不得于6?如果口o以数字开_q需要以单引hh? Sp_addlogin提供用户能访问数据库的权限,如果没有指定用户具体讉K那个数据库,则还需要在相应数据库中用sp_adduser user_name, user_passwordZ个相同名和口令的用户? 例如 1> sp_adduser ldai, dlm 2> go 3>
如果用sa用户创徏了一个用h据库Q想他的所有者由sa改ؓ其他用户? 定其他用户只具有addloginQ不hadduesr。如果有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不能更改
建用h两中方式Q上面这一U是建立用户帐号Q再在具体数据库中徏立该数据库应用帐受较为繁琐。可通过sp_addlogin加其他参敎ͼ一步到位将数据库用户徏立v来? Sp_addlogin user_name,user_password,所用数据库名称,null, '用户全名备注' 例如Q? 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的口令要q行修改? sp_password old_password, new_password, login name 1> sp_password null, nextip, sa 2> go 3>
sp_dboption 是用来打开或关闭数据库的选项 [select into/bulkcopy]。只用这h据库才能执行如select identity(int) id0,* into #temp1 from tablenameq样的sql语句。查看是否打开option用sp_helpdb可以查看。Sp_dboption只能在master 数据库中引用。是否允许列字段为空q是不ؓIZ是用q个命o? 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?修改用户出始登陆的数据库Q命令ؓ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打开Q? p打开Q如果一旦打开Q每一W记录都要手工指明identity|而不是自动插入Ş式,切记。如果变回off后,则identity记数从表中最大的identity值开始记数。例最大gؓ10,则记C11开始,中间有gap出现了? 8?identity默认_ֺ?8位,如果辑ֈ了,需要增加其_ֺ。可用alter table table-name modify identity_col_name, numeric(20,0)q行修改_ֺ? 9?使数据库自动为新建立一个隐藏的identity字段为sp_dboption db_name , "auto identity", "true" 为identity讄_ֺQ由理员操作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() q回当前用户或数据库 12?col_length("表名", "字段?) q回指定字段的长? datalength("列名")实际存储长度对varchar/期于是创建时指定的长? 13?isNull(exp1, exp_value) 为如果exp1为null则用exp_value替代 14?convert(转换后的cd和长度,要{换的cd? 如: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?当前变量x declare @变量?cd 赋值操作select @变量?变量? 如: declare @sIpad varchar(20),@iNum numeric(2,0) select @sIpad='0AC80001',@iNum=32 17?看过E的源码sp_helptext q程? 例子Q? 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?在一个过E中调用另外一个过E, 例如Q? create procedure test_one @test_proc_name varchar(255) as exec @test_proc_name 20?C在sybase中执行sql是用'go'不是?Q?为结束兼执行 21?创徏数据库用?sa用户 master库中Qsp_addlogin user,password,dbname 22?变更数据属主Q?sa用户q入要变更的数据库执?sp_changedbowner user,dbname 23?讄用户的默认登陆数据库Q?sa用户q入要设定的数据库执行: sp_defaultdb user,dbname 24??开头的临时表只是在某一q程或sql操作中存在,一旦过E或sql操作l束Q则临时表就不存在了Q如果再要访问就回出错。解x不徏立以#为preffix的表? 25?要想直接手工插入值到表中identity字段Q需要打开该表的identity_insert选项? Set identity_insert 表名 on/off 如: set identity_insert t_dns_rezo_gs on q样insert into t_dns_rezo_gs(rzgs_id,rzgs_name) values(999,'12121')才会成功? 26?指定某个q程什么时候执行后用waitfor delay "hh24:mi:ss",q且用了q种方式后该connection不会有什么响应直到过E被执行完成? 如半个小时后执行q程test_p begin waitfor delay "0:30:00" exec test_p end 27?调用带返回参数的q程完整例子 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?q程中有q回参数Ӟ如果预先讑֮参数|最l都会改? ? declare @First int select @First=123 exec test_p @second=@First output //q行l果?99 则@second和@First 都ؓ999 29?q程名改名sp_rename oldname, newName 30?ct-library~程Q在sybase提供的linux中有Q环境搭点,要确?SYBASE讑֮了,$SYBASE_OCS讑֮open client所在目录即可不要是全目录,q要讑֮q_$SYBPLATFORM=linux; hq三个环境变量,open client提供的sample才可大部分编译通过Q其中有几个E序׃找不?lsrvQ而编译通不q。推可能涉及了open server的东西,所以没有通过? 例子E序可以单独~译Q如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~译语句Q? 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 q且要保证interface文g中连接服务器是对的? 同时对于惌q接的服务器名要在环境变量DSQUERY中设好? 如: export DSQUERY=accunetsvr
注意Q用hostname作ؓq接名时Q确?etc/hosts中的IP和hostname有对应且对应正确?
32?db-library l实验数据库q接l构支持U程间的传递,函数打包用下列样式Q? gcc -c -I. -I/opt/sybase-12.5/OCS/include s_fcts.c ar r libleon.a s_fcts.o rm -rf *.o 打包完毕 调用函数q行~译样式Q? 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的应用程序运行其他机上访问另一台机Q数据库所在的机器Q?在客h上需要装sybase-comom 和syabse-openclientlg。需要设定对SYBASE / DSQUERY. 其中sybase要设定ؓ指向interfaces文g的\?DSQUERY要设定ؓ要远E访问的L?(adapative_server_name).远E主机的interfaces拯到客h上SYBASE指定的目录即可。注意如果没有设?DSQUERYQ则E序默认Lsybase的数据库Q这时如果没有该数据库名字在interfaces文g中,E序׃不能q行? [实际只需讑֮好DSQUERY环境变量和interface文g卛_] 34?DB-library应用在多U程中每ơ都要重新连接数据库Q否则一定时间后q接会被操作pȝ重置掉?Connection reset by peer 35?DB-library的错误捕捉。系l提供一U系l错误信息函数自动在出现错误时去捕捉昄错误信息? 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);
除此之外Q用户如果想要自己控刉误信息可在dbsqlexec() 调用后ƈ且while()处理完后Q调用dbcount(dbproc)q行错误信息判断Q如果等?1则出现错误。特例调用没有select的过E?: dbnocount设ؓon::没有select的sql语句::sql写错::sql执行错误{都可以出现-1所以要心判断处理? 36?Jdbcq接sybase。首先需要jconn2.jar和jTDS2.jar文gQ在环境变量CLASSPATH讑֮好? Class.forName("com.sybase.jdbc2.jdbc.SybDriver"); urll构? jdbc:sybase:Tds:dbserver_ip/dbserver_hostname:dbserver_port/dbname dbserver的端口ؓ数据库服务器上的interfaces文g中对应的数据库端口? 例子Q? 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 ?92.168.0.6 dbserver_port ?100 dbname为nextip url?jdbc:sybase:Tds:192.168.0.6:4100/nextip 37?创徏identity列,如果是create table 时一定是numeric型。如果想要创建数据库自动为新建的所有表增加一个隐藏的identity字段Q用[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", 新的_ֺ]Q例? sp_configure "size of auto identity",15 38?从select into 创徏一个新的idenetity列,q在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语句q行分页查询ҎQ? A. 创徏一个时表带identity字段 select id=indentity(20), * into #table_anme from table_name where 条g B. 然后Ҏidq行索第n条到m条数?(也可用between and) C. 最后Drop掉该临时? D. 注意要打开数据库的select into /bulk copy属?sp_dboption database_name, "select into/bulk copy", "true"才能q行select into操作 E. mssql中格式ؓselect identity(int) id, * from #table_name from table_name where 条g 40?linux下访问sql-server用db-library与sybase相同要素。只是远E访问端口ؓsql-server指定?433
41?JDBC讉KMS-SQLSERVER q接数据库:[需要这三个jar文gmsbase.jar msutil.jar mssqlserver.jar] JDBC DRIVERQcom.microsoft.jdbc.sqlserver.SQLServerDriver URLQjdbc:microsoft:sqlserver://Ip Or Name:1433;DatabaseName=XXX 42?Oracle中的外连接符?(+) ?+)= 在Sybase中ؓ=* ?*= 43?执行sybaseq程中会有日志满了或存储I间不够了,出现supsend状态,可用 isql -Usa -Ppassword -Sdbservername q去执行dump tran db_name with truncate_onlyq行清空操作 或者dump tran db_name to 'path/file'q行备䆾在执行清I? 44?ms-sql中的substring(string, start, length)函数参数Qstart和length为INT型不能ؓnumeric型? 45?select * into 在oracle中的用法在ms-sql和sybase中的用法为select @变量=column from 表名 where 条g 46?游标在ms-sql和sybase中差别主要ؓwhile 判断的全局变量不同? Sybase中ؓ@@sqlstatus = 0 Ms-sql中ؓ@@FETCH_STATUS = 0 关闭游标时在ms-sql中除了[close 游标名] q要增加[deallocate 游标名]
47?MS-SQL对于sql语句大小写不敏感Qsybase对大写敏感?
48?oracle同sybase和mssql的常用函数对? ORACLE SYBASE MS-SQLSERVER SysdateTo_char(, '格式')格式:yyyymmddhh24missLl合 getdate()可用year() month() day()分解获得q月?convert(varchar, getdate(), 108)是hh:mm:ss getdate()可用year() month() day()分解获得q月日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(日期代码Q日期| 日期) 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 q入卛_Q加写-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?l小区别 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 |