SYBASE学习笔记(zt)

news/2024/11/29 17:21:28/
简介:
对学习 sybase 和ms-sqlserver的体会,包括安装、初始化、sql学习,过程和触发子创建,db-library和ct-library以及同 oracle 的不同之处,和细节注意对比。
第一大块: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> ''''sybsynxe'''',
3> phyae''''/opt/sybase-12.5/data/user_data/test.a'''',
4> vdevno=4,
5> =''0''''
6>
7> go
建立数据库设备后就可以建立用户数据库
sa
create database userdb on db_dev_name=size M

1> disk init
2> ''''tesbe'''',
3> phyae''''/opt/sybase-12.5/data/user_data/test.a'''',
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,bp''''daimn''''
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,bp''''全备''''
例如:
sp_addlogin nextip, nextip, NEXTIPDB, null,bp''''neid''''s&nb;b''''

Msg 5106, Level 16, State 6:
Serverbp''''bs'''', Line 1:
Parameterbp;''SZ'''' requires value of typebp;''n''''.
1> disk init
2> ''''sybsynxe'''',
3> phyae''''/opt/sybase-12.5/data/user_data/sybsyntaxd.a'''',
4> vdevno=4,
5> =''0''''
6> go
00:00000:00008:2003/10/22 14:33:19.21 kernel Initializing virtual device 4,bp''''/opt/sybase-12.5/data/user_data/sybsyntaxd.a'''' with dsyn&s'''o''''.
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]。只用这样数据?菘獠拍苤葱腥鐂elect identity(int) id0,* into&nbssp;#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 @pd''''0A00'''',@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 @ouhr=''Fu''''
if (@cint=5)
select @ouhr=''Fv''''
if (@cint=6)
select @ouhr=''i''''
(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中行l'''go'不''''''为结束兼执行
21、 创建数据库用户:sa用户 master库中,sp_addlogin user,password,dbname
22、 变更数据属主::sa用户进入要变更的数据库执行 sp_changedbowner user,dbname
23、 设置用户的默认登陆数据库::sa用户进入要设定的数据库执行:
sp_defaultdb user,dbname
24、 以#开头返牧偈北碇皇窃谀骋还?袒騭ql操作中存在,一旦过程或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) value99'''22'''')才会成功。
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 @ouhr=''Fu''''
if (@cint=5)
select @ouhr=''Fv''''
if (@cint=6)
select @ouhr=''i''''
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 例子名 &np; [F.E make firstapp
]
设定LD_LIBRARY_PATH=$ATH=$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(18),* 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 tobp''''patfl''''进行备份在执行清空。
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(&s'''格'''')格式: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)
Reae(''2''''&s'''''',bp''''A) Reae(''2''''&s'''''',bp''''A)
instr
Lpad() rpad() Repit'''''', 32) Repit'''''', 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
日期部分 简写 &nbbsp; 值
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(), )''''bp''''+convert(varchar,getdate(),108) as oldtime,convert(varchar,dateadd(ss,1200,getdate())1)''''bp''''+convert(varchar,dateadd(ss,1200,getdate()),108) as date
也可
select convert(varchar,convert(datie''''2012''''),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(), )''''bp''''+convert(varchar,getdate(),108) as oldtime,convert(varchar,dateadd(ss,1200,getdate())1)''''bp''''+convert(varchar,dateadd(ss,1200,getdate()),108) as date
select name,text from all_source where ''''FUTO'''' and ''''F_CHECK_IBCP'''';
select convert(varchar,convert(datie''''2012''''),111)
go
Select count(ipgs_host_ne|''''ot''''||f_ipad_chang_c'''s''''''') From t_ipdev_gs

yyyy/mm/ddhh24miss
Select CO_DESC,to_char(sysdate - /8''''yyyymmddhhms'''') 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(), )''''bp''''+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(),8)
go
52、 显示sql执行时间用: isql -Unextip -Pnextip -Sleon1 -p
进入即可,加小写-p参数
53、 MS-SQL中创建数据库
create database NEXTIPDB
on primary
(
name = DEVDB,
filename =bp''''d:mssql_datadev.d'''',
size = 30MB,
maxsize = 100MB,
filegrowth = 10MB
),
(
name = DEVDB1,
filename =bp''''d:mssql_datadevd.d'''',
size = 10MB,
filegrowth = 10MB
)
Log on
(
name = DEVDBLOG,
filename =bp''''e:mssql_logdevdbl.d'''',
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 =bp''''xi'''')
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 =bp''''xi'''')
EXEC sp_changedbowner nextip, NEXTIPDB
GO

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/756652/viewspace-242411/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/756652/viewspace-242411/


http://www.ppmy.cn/news/676275.html

相关文章

C++中实现HMAC单向散列类

HMAC的维基百科解释是:hash-based message authentication code,其实就是加了盐的单向散列算法。而HMAC的重点就是如何给要散列的数据加盐。 加盐公式如下: 解释一下上面的符号: ⊕ \oplus ⊕表示异或运算; m m m表示…

77、基于STM32单片机学生信息管理系统指纹密码控制设计(程序+原理图+参考论文+相关资料+开题报告+任务书+元器件清单等)

单片机主芯片选择方案 方案一:AT89C51是美国ATMEL公司生产的低电压,高性能CMOS型8位单片机,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元&a…

多表-DDL以及DQL

多表DDL 个表之间也可能存在关系 存在在一对多和多对多和一对多的关系 一对多(外键) 在子表建一哥字段(列)和对应父表关联 父表是一,对应子表的多(一个部门对应多个员工,但一个员工只能归属一…

U盘被写保护?我来教你高级格式化

很多人都遇到过U盘被写保护了,造成原因有很多,一般是热插热拔,未弹出U盘就将U盘拔出等操作不当原因造成。 我也是经历过这样的情况。 1.首先,U盘被写保护但是可以把U盘里面的东西拷贝出来,以做备份。(因为格…

高级格式化与低级格式化

概念: 格式化是指对磁盘或磁盘中的分区(partition)进行初始化的一种操作,这种操作通常会导致现有的磁盘或分区中所有的文件被清除。格式化通常分为低级格式化和高级格式化。如果没有特别指明,对硬盘的格式化通常是指高…

C++ - std::string字符串格式化方法总结

文章目录 1 C std::string字符串格式化1.1 C语言中的字符串格式化1.2 C使用std::stringstream进行字符串格式化1.3 开源的C单个头文件的字符串格式化工具1.3.1 format1.3.2 sformat 1.4 自定义的C字符串格式化函数1.5 C20的字符串标准库函数std::format 1 C std::string字符串格…

ultraEdit格式化代码

以C语言为例: 高级->配置工具: 命令行为: "D:\Program Files\UltraEdit\GNU\astyle.exe" --styleansi "%f" java代码的话把ansi改为java linux文件改为linux 其中前面为你的ultraEdit的安装目录中的GNU\astyle.ex…

Python格式化输出

Python格式化输出主要有三种方式,1、%-formatting;2、str.format();3、f-Strings %-formatting 字符串对象具有实用%运算符的内置操作,您可以使用它来格式化字符串。 以下是部分字符串格式符号: 符号说明%s字符串%c字符%i整数…