▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄
LINUX下启动SYBASE数据库
查看服务是否已经启动:showserver
启动的命令:
# unset LANG 回车
# RUN_服务名 (可按:TAB键) 回车
▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄
Sybase数据库锁表时,在SQL ADVANTAGE中使用
sp_lock 插锁
sp_who 查进程号
kill spid(进程号)
sp_helpdb dbname 查数据库剩余空间
在 SQL Advantage里执行下边的语句,查询锁表情况:
select l.spid,
locktype=convert(char(12),name),
dbname=convert(char(15),db_name(l.dbid)),
'table'=convert(char(35),object_name(l.id,l.dbid)),
page,
class=convert(char(15),class),
hostname,
cmd
from master..syslocks l,master..spt_values v,master..sysprocesses p
where l.type = v.number and
v.type = 'L' and
l.spid = p.spid
order by spid
查看表名
select object_name(id)
▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄
查询数据库触发器
select name,object_name(instrig) trigoninsert,object_name(deltrig) trigondel,object_name(updtrig) trigonupd
from sysobjects
where type='U' and (instrig > 0 or deltrig>0 or updtrig>0);
入库时自动加password:
CREATE TRIGGER dbo.password ON dbo.T_PER_INFO
FOR INSERT AS
BEGIN
UPDATE T_PER_INFO SET PASSWORD='000000'
FROM T_PER_INFO,inserted where T_PER_INFO.SOCI_ID=inserted.SOCI_ID
END;
▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄
CS中心同步服务器脚本:dbmlsrv7 -c "dsn=sybase;uid=sa;pwd=" -o c:\1error.log
CS定点数据库里的刷同步脚本语句:alter Synchronization site x RENAME H052,ADDRESS 'HOST=192.168.0.7;PORT=2439';
CS定点启定点网络库:dbsrv7 -c 12m "C:\Documents and Settings\Administrator\桌面\妇幼库\master.db" -ti0 -n policy
dbsrv7 "D:\database\HIS_NEW\masterhis.db" -n policy -x tcpip{host=10.1.1.123,port=2439} -c 20m -ti0
CS定点同步上传语句:dbmlsync -c "dsn=policy;uid=dba;pwd=sql"
CS定点坏库导出语句:dbtran "dsn=shop;uid=dba;pwd=sql" mastershop.log 1.sql
dbtran -d -j 2012/03/01 mastershop.log 123.sql
▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄
修改具有同步属性的表
alter synchronization definition HRBYB_HOS delete table t_unpay_inp_regi_temp ; 去掉同步属性
alter table t_unpay_inp_regi_temp modify INHOS_DIAG varchar(200) NULL; 修改字段长度
alter table t_unpay_inp_regi_temp modify OUTHOS_DIAG varchar(200) NULL;
alter synchronization definition HRBYB_HOS add table t_unpay_inp_regi_temp ; 增加同步属性
▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄
备份表结构
使用Sybase Central
①连接服务名(例如252)
②进入Database
③选中数据库(例如test2)
④打开User Tables
⑤选中要导出的表,右键单击选择Generate DDL
⑥会在弹出的Sybase Tools Console中显示语句,全部复制
⑦保存为txt文件即可
注:备份完表结构,把视图和存储过程也依法备份一下。
▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄
删除表结构
方法一:(命令)
格式:select 'drop TABLE '+name+';' from sysobjects where type='U';
生成类似
drop TABLE T_ITEM_TEMPLATE_DETAILS_OLD;
drop TABLE M_CLIENTCARD;
drop TABLE T_CONTRAST_H013;
......
的结果,然后复制出来 再用PB执行一遍 就可以了
附:
删除用户表 select 'DROP TABLE '+name from sysobjects where type = 'U'
删除视图 select 'DROP VIEW '+name from sysobjects where type = 'V'
删除存储过程 select 'DROP PROC '+name from sysobjects where type = 'P'
方法二:(图形化)
用sybase central 进入 服务器 连接 数据库 点击 User Tables 选中要删除的表 然后delete
▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄
导入恢复表结构
①打开SQL Advantage
②Server-connect-选择服务名,输入登录名
③在下拉栏中选择你要操作的数据库,例如test1
④把生成好的表结构文本复制到Session1内
⑤点击Execute按钮,等待即可
▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄
导出备份数据(bcp):
SELECT 'bcp 数据库名..'+name+' out F:\11\'+name+'.txt'+' -Usa -P -S服务名 -c -Jcp850' from sysobjects where type='U';
数据库运行几年后,导出的数据太大,保存成文本时有转行的情况,则用下用的语句:
SELECT 'bcp 数据库名..'+name+' out F:\11\'+name+'.txt'+' -Usa -P -S服务名 -t "||" -r@@@\n -c -Jcp850' from sysobjects where type='U';
把一个库的数据导入到另一个相同结构的库里 在PB里执行 然后生成的语句 在新库里执行
select 'insert into '+ name +' select * from '+ 'yqjm..'+name +';' from sysobjects where type='U' order by name;
上面的语句根据实际情况做相应修改,out F:\11\:是输出路径;-Usa:登录密码 ; -P:密码 ; -S:是Sybase的服务名
然后在PB里执行,生成的结果全部复制保存成.bat,执行就可以了。
结果类似:
bcp test2..T_YEAR_SECTION out F:\11\T_YEAR_SECTION.txt -Usa -P -S252 -c -Jcp850
bcp test2..T_HS_BATCH_FACTPAY out F:\11\T_HS_BATCH_FACTPAY.txt -Usa -P -S252 -c -Jcp850
数据库运行几年后,导出的数据太大,保存成文本时有转行的情况,则用下用的语句:
SELECT 'bcp 数据库名..'+name+' out F:\11\'+name+'.txt'+' -Usa -P -S服务名 -t "||" -r@@@\n -c -Jcp850' from sysobjects where type='U';
▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄
导入恢复数据(bcp):
SELECT 'bcp [databasename]..'+name +' in '+name+'.txt -Usa -P -S[servername] -c -Jcp850' from sysobjects where type='U';
SELECT 'bcp [databasename]..'+name +' in '+name+'.txt -Usa -P -S[servername] -t "||" -r@@@\n -c -Jcp850' from sysobjects where type='U';
生成
bcp test..M_MAX_NO in M_MAX_NO.txt -Usa -P -Stest -c -Jcp850
bcp test..T_OUTER_REGISTER in T_OUTER_REGISTER.txt -Usa -P -Stest -c -Jcp850
比较大的表可以分几次导入,如:bcp aaa.dat in aaa -S -U -P -F1 -L1000 就是从第一条开始倒到第1000条,然后依次类推
导入时有时日志满了可用:dump tran 数据库名 with no_log;(清数据库日志)
▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄
批量清除数据:
格式:
select 'TRUNCATE TABLE '+name+';' from sysobjects where type='U';
select 'TRUNCATE TABLE '+name+';' from sysobjects where type='U' order by name;
生成类似
TRUNCATE TABLE T_AGE_SECTION;
TRUNCATE TABLE T_HOS_DEVIDE_TARGET;
......
的结果,全部复制下来,粘贴到PB里执行即可。
注:结果中如果有;号的在PB里面执行,没有的在sybase advantgae执行。
▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄
▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄
更换SYBASE数据库密码命令
sp_password null,'7683902'
还原SYBASE数据库密码为空的命令
如果通过sp_password直接设为空时出错,提示密码不能少于6位时用以下办法解决:
解决方案:
$isql -Usa -P1222 -SSYBASE
1sp_configure "upgrade version"
2go
#记录打印的版本号,我的系统版本好是11920
1sp_configure "upgrade version",492
2go
#更改版本号为492
1sp_password ‘123456‘,NULL,sa
2go
#修改密码将123456密码置为空
1sp_configure "upgrade version",11920
2go
#更改版本号为原来的版本号
▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄
批量添加行级锁
在PB中执行,生成结果,在sybase advantgae执行。
select 'alter table ' + name + ' lock datarows;' from sysobjects where type = 'U' order by name;
▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄