SYBASE学习笔记
下运行showserver 查看SQL Server 是否启动 2、启动SQL Server的单用户模式
如果要恢复一已被损坏的master数据库,则必须要启动SQL Server的单用户模式。单用户模式下仅允许一个系统管理员向SQL Server注册。 Startserver -f RUN_SYBASE -m 3、关闭服务器
关闭SQL Server可以在isql中使用T-SQL命令: 关闭SQL备服务器
shutdown SYB_BACKUP 关闭SQL主服务器 shutdown [with nowait]
利用脚本自动关闭sybase数据库
如果是unix,ksh #!/bin/ksh
LOGIN=\
if [ \
echo \ exit 0 fi
echo \ {
isql -Usa -P -Syourservername > /dev/null 2>&1 < shutdown SYB_BACKUP go shutdown go ISQL } BCP 简 要 说 明 http://bbs.chinaunix.net/forum/viewtopic.php?t=20273&show_type=new -------------------------------------------------------------------------------- BCP是SYBASE公司提供专门用于数据库表一级数据备份的工具。一般存放在所安装的ASE或者Open Client 的BIN目录中。12版本以前的ASE,bcp存放目录为 $SYBASE/bin,12版本(含12版本)以后存放目录为 $SYBASE/OCS-12_x/bin,其中$SYBASE为SYBASE安装目录,12_x代表12.0、12.5版本,显示为12_0或者12_5 ,可执行文件名称为bcp.EXE,参数列表如下:(可用 bcp – 得到) usage: bcp [[database_name.]owner.]table_name[:slice_number] {in | out} datafile [-m maxerrors] [-f formatfile] [-e errfile] 北京易初电子技术有限公司软件中心 2005-01 - 26 - SYBASE学习笔记 [-F firstrow] [-L lastrow] [-b batchsize] [-n] [-c] [-t field_terminator] [-r row_terminator] [-U username] [-P password] [-I interfaces_file] [-S server] [-a display_charset] [-q datafile_charset] [-z language] [-v] [-A packet size] [-J client character set] [-T text or image size] [-E] [-g id_start_value] [-N] [-X] [-M LabelName LabelValue] [-labeled] [-K keytab_file] [-R remote_server_principal] [-V [security_options]] [-Z security_mechanism] [-Q] 常用数据备份格式为: bcp dbname..tablename out c:\\temp\\filename -Usa -Ppassword –Sservername –c 其中 –U后为SYBASE登录名称,–P后为SYBASE登录口令,–S后为SYBASE服务名称,–c代表使用可见文本方式导出数据 如果为数据恢复只需要将out 替换为 in 即可。 可用如下方法生成一个可以一次导出一个数据库中所有表的数据的执行脚本。编辑一个如下文本文件 文件名称例为 bcpscript: use dbname 选中将要导出数据的数据库 go select 'bcp dbname..' + name + ' out c:\\temp\\' + name + ' -Usa -P -Ssybcdsrv -c' from sysobjects where type = 'U' 在sysobjects系统表中type为U的表为用户表,系统表为S。 go 用如下格式执行: isql –Usa –Ppassword –Sservername –i bcpscript –o bcpout.bat i参数后为输入文件,o参数后文件为输入文件执行后得到的输出文件。 执行后可以得到一个后缀名为 BAT 的批处理文件(在unix下则生成一个shell文件并更改相应的执行权限),可直接执行。即在指定的目录下导出了相应的数据文件。一个表的数据为一个文件。如在UNIX下则可不用BAT后缀。 备份得到的数据文件如果需要重新往数据库中恢复,只需要将上面操作步骤中BCP命令中的out 参数换为in参数即可。 注意:在对正式数据做操作前最好先作一些测试。 另外,如果牵涉到使用bcp进行字符集的更改,可以采用 –J charset 参数进行 。关于BCP等工具的具体使用指南,请参见SYBASE相关文档。 针对系统移植所需做的工作,应该有如下几个步骤: 1. 安装新环境的硬件环境,包括网络,硬盘状况; 2. 安装新环境的操作系统,包括Service Pack; 3. 安装相同版本的SYBASE数据库产品,包括补丁; 4. 添加数据库用户,设备等相关信息,应与老系统中一致 5. 创建新系统数据库; 6. 利用你所拥有的表脚本或者通过SYBASE CENTRAL中的生成DDL功能,将老系统中的建表脚本导出,生成数据库中的表.最好将建表脚本与建立表上约束(主键,外键等)的脚本分开,先在表上不建约束,在数据导入后,再加上.; 北京易初电子技术有限公司软件中心 2005-01 - 27 - SYBASE学习笔记 7. BCP OUT 老系统中数据,根据上面提到的方法; 8. 运行建立其他对象的脚本,包括索引,主键,外键及存储过程,触发器,缺省等; 9. 在新系统中对需要更改的表结构做更改,或者添加新表; 10. 测试应用系统是否工作正常. 如何生成bcp命令文件 http://www.sybase.com.cn/cn/content/support/exp_jszc_ase_cj_00008.htm (以pubs2为例) 本文适应于isql 11.*, 可通过isql -v得到版本 编辑一个文本文件select.sql,内容如下: set nocount on use pubs2 go select \ from sysobjects where type=\ go 如果是unix, 执行: isql -Usa -P -b -i select.sql -o bcpout chmod +x bcpout 如果是Windows, 执行: isql -Usa -P -b -i select.sql -o bcpout.bat 将select.sql中的out换为in, 重复以上步骤即可得到bcp in的命令文件 如何配置SQL Server 11,使得快速BCP具有更好的性能? http://www.sybase.com.cn/cn/content/support/exp_jszc_ase_gj_00003.htm 有几种方法可以改善BCP的性能: (1)增加扩展分配(extent allocation)。缺省情况下,预分配2到31个扩展。在一个BCP批次中,未使用的预分配扩展被释放。为了获得最佳BCP性能,设置BCP批次大小和 “number of preallocated extents”预分配扩展个数,以消除空间重新释放。使用Sp_config number of pre-allocated exetents,nn 对于系统10:buildmaster -ycpreallocext=nn (2)对表进行分区 (3)配置OAM页面的缓冲策略,以减少对OAM(Object Allocation Map)页面的物理读。 (4)配置大I/O的缓冲池,例如16K: Sp-poolconfig default, \使用-A标记,加大网络包大小: bcp -A 16384 Sybase数据库目录说明 ? ? ? /usr/sybase =.. 主目录 .. /install 安装程序 ../bin 执行程序 - 28 - 北京易初电子技术有限公司软件中心 2005-01 SYBASE学习笔记 ? ? ? ? ? ? ? ? ../include 库函数文件 ../lib 宿主语言库 ../doc 联机文件 ../scripts SQL 动态描述文件 ../help 帮助信息 ../locales 语言限制文件 ../termdef 终端定义文件 ../charsets 字符集文件 相关功能操作说明 sp_addumpdevice 'disk',(logicalname),(physicalname) --定义转储设备 ex.sp_addumpdevice 'disk','nbdump_1','vol1:\\nbdump\\nbdump.dat' dump tran (database_name) with truncate_only --删去日志 ex.dump tran tele114 with truncate_only sp_configure (config_name),(config_value) --更改设置值 ex.sp_configure 'allow updates',1 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,\ 4> go 5> checkpoint 6> go 1> dbcc checkdb 2> go 3> dbcc checkcatalog 4> go 1、增加自定义的数据类型为sp_addtype datatypename ,\ FE: sp_addtype tid, \ 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可设置数据库通用的一些选项。 北京易初电子技术有限公司软件中心 2005-01 - 29 - SYBASE学习笔记 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 , \identity\ 为identity设置精度,由管理员操作sp_configure \精度位数 如sp_configure \ 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 \ 1> select mmm=\ 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 北京易初电子技术有限公司软件中心 2005-01 - 30 -