您的位置:首页 > 其它

Sybase笔记-1

2016-12-11 23:18 281 查看
▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ 
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;

▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: