??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲伊人久久大香线蕉在观,亚洲人成人无码.www石榴,亚洲欧洲精品一区二区三区http://www.tkk7.com/josephguan/category/4020.htmlq动Q游玩,学习Q我的爱不能停止zh-cnThu, 01 Mar 2007 18:26:10 GMTThu, 01 Mar 2007 18:26:10 GMT60Sybase数据库日常维?参?http://www.tkk7.com/josephguan/archive/2005/10/26/16903.html快乐的射?/dc:creator>快乐的射?/author>Wed, 26 Oct 2005 09:46:00 GMThttp://www.tkk7.com/josephguan/archive/2005/10/26/16903.htmlhttp://www.tkk7.com/josephguan/comments/16903.htmlhttp://www.tkk7.com/josephguan/archive/2005/10/26/16903.html#Feedback0http://www.tkk7.com/josephguan/comments/commentRss/16903.htmlhttp://www.tkk7.com/josephguan/services/trackbacks/16903.html  一、备份系l数?/P>

  sybase pȝ的备份与恢复机制保证了在pȝp|旉新获取数据的可能性。sql server 提供了两U不同类型的恢复机制:一cLpȝ自动完成的恢复,q种措施在每ơ系l启动时都自动进行,保证了在pȝ瘫痪前完成的事务都写到数据库讑֤上,而未完成的事务都被回退;另一cL人工完成的恢复,q是通过 dump ?load 命o来执行h工备份和恢复工作。因此定期备份事务日志和数据库是一十分重要的日常l护工作?/P>

  1、备份数据库

  每一个数据库都应在创Z后卸出,从而提供一个装入基炏V在此之后按排定的时间周期表卸出。比如每周五卸出数据库。对一般数据库pȝ卸出数据库周期徏议ؓ每周一ơ?/P>

  除了按计划周期卸出数据库之外Q还需在每ơ运行没有日志的操作后卸出数据库。例?

  ·每次强制地运行了 dump tran with no_log (因ؓ数据库的盘I溢?;

  ·每次?sp_dboption 允许 select into/bulkcopy 做快速拷贝,或用 select into 命o创徏一个永久性的表,或用了 writetext 命o?/P>

  卸出数据库的命o?

  dump database database_name

  to dump_device

  database_name 是要卸出的数据库名称Qdump_device 是卸备的名称。用pȝq程 sp_helpdevice 可以获得讑֤的信息?/P>

  下面一条命令用来卸出数据库 my_db :

  dump database my_db

  to db_bk_dev

  2、备份事务日?/P>

  如果事务日志与数据库攑֜同一个设备上Q则事务日志不应与数据库分开备䆾。master 数据库和于 4m 的用h据库是q种情况。一般数据库pȝ的数据库和日志分别放在不同的讑֤上,因此Q可以用 dump tran 命o单独备䆾日志?/P>

  备䆾事务日志的周期直接媄响数据的恢复E度Q因此徏议每天备份?/P>

  备䆾事务日志的命令格式ؓ:

  dump transaction database_name

  [to dump_device]

  [with truncate_only|with no_log|with no_truncate]

  其中 database_name 是要备䆾事务的数据库名称Qdump_device 是备份设备名Uͼ仅当包含?with truncate_only ?with no_log 子句Ӟ才可以备份到讑֤?/P>

  注意:如果L?dump datebase (备䆾数据库及其日?Q而不?dump tran Q事务日志将不会hQ而变得非常庞大?/P>

  对于 master 数据库和型数据库每ơ运?dump datebase 之后应当q行 dump transaction 命oh日志 ?/P>

  下面一条命令备份数据库 db160 的事务日志到备䆾讑֤?

  dump transaction db160

  to db_log_bk_dev

  with truncate_only

  3、备份数据库及其日志间的怺作用

  在至卸Zơ数据库前,卸出事务日志是毫无意义的。下图显CZ备䆾数据库及其日志间的关p?/P>

  如果在星期二下午5:01出现非硬件故障,需要做的所有工作是装入带5(参见下一?数据恢复)Q由于磁?是下?:00刚备份的Q因此只有备份和装入之间的一分钟内的数据损失?/P>

  但是Q如果在星期二下?:49失效会怎么样呢?在这U情况下Q要装入带1(在星期五下午5:00的卸?。然后,依次装入带2Q?以及4。这Ppȝ恢复到星期二上?0:00点的状态,星期二的大部分工作丢׃。此例显CZl常卸出事务的重要性?/P>

  二、万一pȝp|时恢复数据库pȝ

  如果用户数据库存储的讑֤失效Q从而数据库被破坏或不可存取Q通过装入最新的数据库备份以及后来的事务日志备䆾可以恢复数据库。假讑ֽ前的事务日志存在于一个ƈ没有毁坏的设备上Q带着 with no_truncate 选项?dump transaction 命o卸出它?/P>

  要恢复数据库按如下步骤去?

  1、如果日志存在于一个分ȝ讑֤上,用带着 no_truncate 选项?dump transaction 命o卸出被毁坏的或者不可存取的用户数据库事务日志?/P>

  2、用下面的查询检查设备分配已毁坏数据库的讑֤使用情况。必Mؓ同一目的赋同LI间块?/P>

  下面的查询显CZ分配l数据库 mydb 讑֤使用和尺寸情?

  select segmapQsize from sysusages

  where dbid =

  ( select dbid from sysdatabases where name = “mydb?

  3、检查查询的输出。在 segmap 列的 ?’代表数据分配,?’代表日志分配。size 列代?2k 数据块的数目。注意此信息的次序、用和寸部分。例如,输出?

  segmapsize

  --------------------

  310240//实际寸?20m

  35120//实际寸?10m

  45120//实际寸?10m

  31024//实际寸?2m

  42048//实际寸?4m

  4、用 drop database 命o删除毁坏讑֤上的数据库。如?A class=bluekey target=_blank>pȝ报错Q用dbcc dbrepair 命o?dropdb 选项?/P>

  5、删除数据库后,?sp_dropdevice 删除毁坏了的讑֤?/P>

  6、用 disk init 初始化新的数据库讑֤?/P>

  7、重建数据库。用 create database 命o从老的 sysusages 表拷贝所有的行,q包含第一逻辑讑֤?/P>

  对上例,命o?

  create database mydb

  on datadev1=20Qdatadev2=10

  log on logdev1=10

  8、用 alter database 命o重徏其余入口。在此例中,在datadev1上分配更多的I间Q命令ؓ:

  alter database mydb on datadev1=2

  9、用 load database 重新装入数据库,然后?load tran 装入前面卸出的日志?/P>

  load database 命o语法?

  load database database_name

  from dump_device

  load transaction 命o的语法是:

  load transaction database_name

  from dump_device

  卸出数据库和事务日志的缺省权限归数据库所有者,且可以传递给其他用户;装蝲数据库和事务的权限也归数据库所有者,但不能传递?/P>

  二、生用户信息表QƈZ息表授权;

  pȝl护人员的另一个日怺务是为用户创建新的信息表QƈZ授权。创以及授权的方法已l在讲过Q在此只有兛_令语法写出来?/P>

  ·创徏表的命o?

  create table table_name

  ( column_1 datatype [null | not null | identity]Q?/P>

  column_2 …?/P>

  )

  go

  alter table table_name

  add primary key (column_list)

  go

  ·删除表的命o格式?

  drop table table_name

  go

  ·授权的命令格式ؓ:

  grant {all|permission_list}

  on table_name to user_name

  go

  ·收回权限的命令格式ؓ

  revoke {all|permission_list}

  on table_name from user_name

  go

  三、监视系l运行状况,及时处理pȝ错误;

  pȝ理员的另一Ҏ常工作是监视pȝq行情况。主要有以下几个斚w:

  1、监视当前用户以及进E的信息

  使用pȝq程:sp_who

  说明:该命令显C当前系l所有注册用户及q程信息Q如下表是某pȝ的信息?/P>

  spidstatusloginamehostnameblkdbnamecmd

  ---------------------------------------------------------------

  1runningsascosysv0masterselect

  2sleepingnull0masternetwork handle

  3sleepingnull0masterdeadlock tune

  4sleepingnull0mastermirror handler

  5sleepingnull0masterhousekeeper

  6sleepingnull0mastercheckpoint sleep

  从左向右依次昄:q程受当前状态、注册用户名、主机名、占用块数、数据库名以及当前命令?/P>

  如果监视时发现进EL接近最大连接数(用系l过E?sp_configure “user conn?查看)Ӟ应下掉不zd或无兌E,以保证系l正常运?另外亦可监视非法用户或用户用不属于自己使用范围的数据库{情c?/P>

  2、监视目标占用空间情?/P>

  使用pȝq程:sp_spaceused

  说明:该过E显C数、数据页C及当前数据库中由某个目标或所有目标所占用的空间。如下表是某数据库日志表的信?

  namerow_totalreserveddataindex_sizeunused

  ------------------------------------------------------------

  syslogsnot avail32kb32kb0kbnot avail

  日常要监视的主要目标?用户数据库、数据库日志?syslogs)以及计费原始数据表等。如果发现占用空间过大,Ҏ志表要进行{?对其他目标则应扩充空间或清楚垃圾数据?/P>

  3、监?sql server l计数字

  使用pȝq程:sp_monitor

  说明:sp_monitor 昄sql server 的历史统计数字,下表是某pȝ的统计数?

  last_runcurrent_runseconds

  ---------------------------------------------------------------

  may 13 2000 1:27pmmay 13 2000 3:01pm5678

  cpu_busyio_busyidle

  ---------------------------------------------------------------

  16(6)-0%0(0)-0%5727(5672)-99%

  packets_receivedpackets_sentpacket_errors

  ---------------------------------------------------------------

  21(17)100(97)0(0)

  total_readtotal_writetotal_errorsconnections

  --------------------------------------------------------

  785(366)311(113)0(0)3(2)

  上表依次l出该系l本ơ运行统计的上一ơ时间、本ơ时间、间隔秒数、cpu占用、io占用、收发包情况、系l读入写出情늭信息

  四、保证系l数据安全,周期更改用户口o;

  Z证系l数据的安全Q系l管理员必须依据pȝ的实际情况,执行一pd的安全保障措施。其中,周期性的更改用户口o是比较常用且十分有效的措施?/P>

  更改用户口o是通过调用pȝq程sp_password 来实现的。sp_password 的语法ؓ:

  sp_password caller_password,new_password [,loginame]

  其中caller_password 是登录口?老口?Qnew_password是新口oQloginame是登录名U?/P>

]]>
sybaseW记http://www.tkk7.com/josephguan/archive/2005/10/26/16902.html快乐的射?/dc:creator>快乐的射?/author>Wed, 26 Oct 2005 09:44:00 GMThttp://www.tkk7.com/josephguan/archive/2005/10/26/16902.htmlhttp://www.tkk7.com/josephguan/comments/16902.htmlhttp://www.tkk7.com/josephguan/archive/2005/10/26/16902.html#Feedback0http://www.tkk7.com/josephguan/comments/commentRss/16902.htmlhttp://www.tkk7.com/josephguan/services/trackbacks/16902.html 可能内容有些没章法?
以前在坛上许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

]]>
一个存储过E?带参数动态执行sql语句:Execute Immediate 选择?lcllcl987 ?Blog http://www.tkk7.com/josephguan/archive/2005/10/26/16897.html快乐的射?/dc:creator>快乐的射?/author>Wed, 26 Oct 2005 09:22:00 GMThttp://www.tkk7.com/josephguan/archive/2005/10/26/16897.htmlhttp://www.tkk7.com/josephguan/comments/16897.htmlhttp://www.tkk7.com/josephguan/archive/2005/10/26/16897.html#Feedback2http://www.tkk7.com/josephguan/comments/commentRss/16897.htmlhttp://www.tkk7.com/josephguan/services/trackbacks/16897.html 

Ҏ客户需?我们增加了一个统计表,用来汇ȝ计数?l计数据的?需要根据一个基本表,动态执行sql语句.在存储过E中,动态生成sql语句然后执行,需要用到Execute Immediate命o.我想写一个通用的统计用存储q程,g不大好办,if语句的应用在所隑օ?呵呵.

Ҏ存.

create or replace procedure P_INSERT_XT_TJ_MX(sDate in varchar2) is
--author:李春?BR>--create time:2005.8.4
--purpose:更新xt_tj_mx?BR>       sXh xt_tj.xh%type;                          --主表序号
       sDwmc xt_tj.dwmc%type;
       sDw xt_tj.dw%type;
       sDwzd xt_tj.dwzd%type;
       sTable xt_tj.hzbmc%type;
       sSjzd xt_tj.sjzd%type; 
       sSqlStr varchar2(300);
       iCount int;      
       cursor curSort is
              select xh,dwmc,hzbmc,sjzd,dwzd,dw from xt_tj ;
begin     
     open curSort;
     loop
         fetch curSort into sXh,sDwmc,sTable,sSjzd,sDwzd,sDw;        
         exit when curSort%notfound;
         sSqlStr := 'select count(*)  from '|| sTable || ' where to_char('||sSjzd||','||'''YYYYMM'')=:sDate and '||sDwzd ||
                    ' in (select dwxh from xt_dw connect by  prior dwxh = dwfxh start with dwxh =:sDw)';
         Execute Immediate sSqlStr into iCount using sDate,sDw;
         delete from xt_tj_mx where fxh=sXh and sjz=sDate;
         insert into xt_tj_mx(xh,fxh,hzsm,sjz)values(SEQ_XT_TJ_MX.NEXTVAL,sXh,iCount,sDate);
         commit;
     end loop;
end P_INSERT_XT_TJ_MX;




]]>
վ֩ģ壺 ɫWW47| ϵйƷƷ˿| ձһ߲Ͷ| պaëƬa| ޹Դ| ֱѹۿ| 2021â| ëƬ߲| ޱ뾫ƷAAAƬ| ƷƵ| avƬ߹ۿ| avպƬ߹ۿ| ƬAëƬ| ˳ӰԺ| 91˳վ߹ۿ18| Ʒþ޲| ŮaƵ| ɫһëƬѿ| avһas | Ʒһ| ƷŮҹˬˬˬ| ޾ƷƷ| ˳վþ99ȹ| 91Ƶ| Ʒ˿һҳ| av鶹aӰ| һëƬƵ| һƷ| ղһ| Ѿþþþþ| ޹Ʒһ| hsѸ߹ۿ| һۺƵ| ޹˾þ77| AV˵| þþþþԻAV| JLZZJLZZٸ| AVվ| ƷþƵ| žƷƵվ| һ|