一、Sybase数据库简介
1.版本
1984年,Mark B. Hiffman和Robert Epstern创建了Sybase公司,并在1987年推出了Sybase数据库产品。SYBASE主要有三种版本,一是UNIX操作系统下运行的版本,二是Novell Netware环境下运行的版本,三是Windows NT环境下运行的版本。对UNIX操作系统目前广泛应用的为SYBASE 10 及SYABSE 11 for SCO UNIX。 2.Sybase数据库的特点
(1)它是基于客户/服务器体系结构的数据库
一般的关系数据库都是基于主/从式的模型的。在主/从式的结构中,所有的应用都运行在一台机器上。用户只是通过终端发命令或简单地查看应用运行的结果。 而在客户/服务器结构中,应用被分在了多台机器上运行。一台机器是另一个系统的客户,或是另外一些机器的服务器。这些机器通过局域网或广域网联接起来。 客户/服务器模型的好处是: 它支持共享资源且在多台设备间平衡负载 允许容纳多个主机的环境,充分利用了企业已有的各种系统 (2) 它是真正开放的数据库
由于采用了客户/服务器结构,应用被分在了多台机器上运行。更进一步,运行在客户端的应用不必是Sybase公司的产品。对于一般的关系数据库,为了让其它语言编写的应用能够访问数据库,提供了预编译。Sybase数据库,不只是简单地提供了预编译,而且公开了应用程序接口DB-LIB,鼓励第三方编写DB-LIB接口。由于开放的客户DB-LIB允许在不同的平台使用完全相同的调用,因而使得访问DB-LIB的应用程序很容易从一个平台向另一个平台移植。 (3) 它是一种高性能的数据库
Sybase真正吸引人的地方还是它的高性能。体现在以下几方面:
可编程数据库
通过提供存储过程,创建了一个可编程数据库。存储过程允许用户编写自己的数据库子例程。这些子例程是经过预编译的,因此不必为每次调用都进行编译、优化、生成查询规划,因而查询速度要快得多。 事件驱动的触发器
触发器是一种特殊的存储过程。通过触发器可以启动另一个存储过程,从而确保数据库的完整性。 多线索化
Sybase数据库的体系结构的另一个创新之处就是多线索化。一般的数据库都依靠操作系统来管理与数据库的连接。当有多个用户连接时,系统的性能会大幅度下降。Sybase数据库不让操作系统来管理进程,把与数据库的连接当作自己的一部分来管理。此外,Sybase的数据库引擎还代替操作系统来管理一部分硬件资源,如端口、内存、硬盘,绕过了操作系统这一环节,提高了性能。
3.Sybase数据库的组成
Sybase数据库主要由三部分组成:
(1) 进行数据库管理和维护的一个联机的关系数据库管理系统Sybase SQL Server; Sybase SQL Server是个可编程的数据库管理系统,它是整个Sybase产品的核心软件,起着数据管理、高速缓冲管理、事务管理的作用。
(2) 支持数据库应用系统的建立与开发的一组前端工具Sybase SQL Toolset;
ISQL是与SQL Server进行交互的一种SQL句法分析器。ISQL接收用户发出的SQL语言,将其发送给SQL Server,并将结果以形式化的方式显示在用户的标准输出上。
DWB是数据工作台,是Sybase SQL Toolset的一个主要组成部分,它的作用在于使用户能够设置和管理SQL Server上的数据库,并且为用户提供一种对数据库的信息执行添加、更新和检索等操作的简便方法。在DWB中能完成ISQL的所有功能,且由于DWB是基于窗口和菜单的,因此操作比ISQL简单,是一种方便实用的数据库管理工具。 APT是Sybase客户软件部分的主要产品之一,也是从事实际应用开发的主要环境。APT工作台是用于建立应用程序的工具集,可以创建从非常简单到非常复杂的应用程序,它主要用于开发基于表格(Form)的应用。其用户界面采用窗口和菜单驱动方式,通过一系列的选择完成表格(Form)、菜单和处理的开发。
(3) 可把异构环境下其它厂商的应用软件和任何类型的数据连接在一起的接口Sybase Open Client/Open Server。 通过Open Client的DB-LIB库,应用程序可以访问SQL Server。而通过Open Server的SERVER-LIB,应用程序可以访问其它的数据库管理系统。
二、SYBASE有关概念
Sybase SQL Server是一个多库数据库系统。这些数据库包括系统数据库和用户数据库。 而不论是系统数据库还是用户数据库,都建立在数据库设备上。 1. 数据库设备
所有的数据库都创建在数据库设备上。所谓数据库设备,不是指一个可识别的物理设备,而是指用于存储数据库和数据库对象的磁盘原始分区或操作系统文件。增加一个新的数据库设备时,必须对这些设备“初始化”。初始化的过程就是将物理磁盘、磁盘分区或操作系统文件变为SYBASE数据库可以识别的设备。初始化数据库设备使用DISK INIT命令:
DISK INIT
NAME=设备名,
PHYSNAME=物理设备名,
VDEVNO=虚拟设备号,
SIZE=块数
其中,NAME指数据库设备名,此名将用于CREATE DATABASE和ALTER DATABASE命令。PHYSNAME是原始磁盘分区或操作系统文件名。VDEVNO是数据库设备的标识号,在SQL Server中,它必须是唯一的。SIZE的单位是2K的块,对于新创建的数据库,最小的SIZE是model数据库的尺寸,即1024个2K的块(2M)。 例如:/*将/dev目录下400M的物理设备初始化为SYBASE的数据库设备tele114_log01*/
1>disk init
2>name=“tele114_log01”,
3>physname=“/dev/rtelelog”
4>vdevno=4
5>size=204800 /*2Kbyte*204800=400Mbyte*/
6>go
2、段
数据库设备从逻辑上被划分为数据库段以允许将某一特定的对象放置在指定的段上(创建对象时指定),一数据库设备可拥有多达192个段,一段可使用 255个逻辑设备上的存储空间。当用户创建一个数据库时,SQL SERVER 会自动在该数据库中创建三个段: SYSTEM、 LOGSEGMENT 、DEFAULT,这三个段分别用来存储数据库的系统表、事务日志和其他数据库对象 在数据库中创建段的步骤是:
先用Disk init 初始化物理设备 通过使用Create database 和alter database 的on 子句,使数据库设备对数据库可用,于是新设备自动增加到数据库的default 和system段。 一旦数据库设备存在并对数据库可用,使用存储过程Sp_addsegment 定义数据库的段。语法如下: Sp_addsegment 段名,数据库名,设备名 3、 系统数据库
安装Sybase数据库时自动生成的下列系统数据库:
● 主数据库master;
● 模型数据库model;
● 系统过程数据库sybsystemprocs;
● 临时数据库tempdb。
也可选择下列数据库:
● 安全审核数据库sybsecurity;
● 示例数据库pubs2;
● 命令语法数据库sybsyntax。
(1) master数据库
包含许多系统表和系统过程,从总体上控制用户数据库和SQL Server的操作,构成了SYBASE系统的数据字典。MASTER数据库主要记录信息为:
● 登录帐号(SQL服务器用户名);syslogins,sysremolelogins
● 正在执行的过程;sysprocesses
● 可修改的环境变量;sysconfigures
● 系统错误信息;sysmessages
● SQL服务器上每个数据库的信息;sysdatabases
● 每个数据库占用的存储空间;sysusages
● 系统上安装的磁带及磁带信息;sysdevices
● 活动锁信息;syslocks
(2) model数据库
提供了新用户数据库的初型。当我们每次用CREATE DATABASE命令 时,SQL Server都产生一个model数据库的拷贝,然后把它扩展到命令要求的尺寸。如果我们修改了model数据库,那么以后新创建的数据库都将随它而改变。下面是几个通常用到的对model数据库的改变:
● 增加用户数据库类型、规则或缺省;
● 可存取SQL Server上所有数据库的用户用sp_adduser增加到model数据库上;
● 缺省权限(特别是guest帐号)可在model中建立;
● 诸如select into/bulkcopy那样的数据库选项可在model中设置。
这些设置反映到所有新创建的数据库中。它们在model中最原始的值是关(off)。
在一般情况下,大多数用户无权修改model数据库,又没被授权读取。因为model中所有内容已拷贝到新数据库中,授权读model没什么意义。
1> use model
2> go
3> sp_help
4> go
Name Owner Object_type
--------------- --------------- ----------------------
sysalternates dbo system table
syscolumns dbo system table
syscomments dbo system table
sysconstraints dbo system table
sysdepends dbo system table
sysgams dbo system table
sysindexes dbo system table
syskeys dbo system table
syslogs dbo system table
sysobjects dbo system table
sysprocedures dbo system table
sysprotects dbo system table
sysreferences dbo system table
sysroles dbo system table
syssegments dbo system table
systhresholds dbo system table
systypes dbo system table
sysusermessages dbo system table
sysusers dbo system table
(3) sybsystemprocs数据库
库中存储系统过程,当用户执行一存储过程(以sp_开始)时,SQL 服务器首先在用户当前数据库中搜索指定的存储过程,如果没有相应过程,则到系统过程数据库中寻找,若没有,再到MASTER数据库中寻找。
(4)临时数据库tempdb
该数据库为临时表和临时工作提供了一个存储区域。临时数据库是SQL Server上所有数据库共享的工作空间。由于这些表都是临时的,所以每当用户退出或系统失败,这些表都将消失。
(5)安全审核数据库sybsecurity 数据库中保存系统的安全审核信息,它可跟踪记录每个用户的操作情况,为维护系统安全提供控制手段。
(6)示例数据库pubs2
为用户提供一个学习SYBASE的数据库模型。
(7)命令语法数据库sybsyntax
库中保存SYBASE数据库的命令语法及支持的语言库。
4、用户数据库
用户数据库是指用Create database 命令创建的数据库。所有新的用户数据库都要在master数据库中创建,也就是说,不能存取 master数据库的用户是无权创建新的数据库的。SA可以将创建数据库的权限授予其他用户。新建数据库中存在一些系统表,在sysusers表中至少有一条记录,既该数据库的创建者。数据库创建时,创建者既为该数据库的 owner, 当然创建者可以将这一地位或这一所有权用系统过程授予别的用户。
5、数据库对象
(1)表(Tables)
在一个关系数据库中,表是最重要的数据库对象,对应于关系数据库理论中关系,与DBASE或FOXPRO中的DBF文件是类似。一切数据都存放在表中。其它数据库对象都是为了用户很好地操作表中的数据。表都以一张二维表的形式存在。其中,每一列称之为一个字段,或一个域;而每一行称之为一个记录,也就是一项数据。 有一类表,它们的名字都是以sys开头的,这些表称为系统表,系统表记录着有关SQL Server的信息。在master数据库中的表大部分为系统表,这些表是随着master数据库的创建而建立的。另外,每个用户数据库在创建时都有一个系统表的子集。 例如,只有在master数据库中才有的系统表有:sysconfigures、sysdatabases、sysdevices、 syslogins等;在用户数据库和系统数据库中都有的系统表有:sysalternates、syscolumns、sysindexs、 syslogs、sysobjects、sysusers等。 例:
1> use master
2> go
3> sp_help
4> go
Name Owner Object_type
------------------------------ -----------------------------------------------
spt_committab dbo user table
spt_datatype_info dbo user table
spt_datatype_info_ext dbo user table
spt_monitor dbo user table
spt_server_info dbo user table
spt_values dbo user table
sysalternates dbo system table
syscharsets dbo system table
syscolumns dbo system table
syscomments dbo system table
sysconfigures dbo system table
sysconstraints dbo system table
syscurconfigs dbo system table
sysdatabases dbo system table
sysdepends dbo system table
sysdevices dbo system table
sysengines dbo system table
sysgams dbo system table
sysindexes dbo system table
syskeys dbo system table
syslanguages dbo system table
syslisteners dbo system table
syslocks dbo system table
sysloginroles dbo system table
syslogins dbo system table
syslogs dbo system table
sysmessages dbo system table
sysmonitors dbo system table
sysobjects dbo system table
sysprocedures dbo system table
sysprocesses dbo system table
sysprotects dbo system table
sysreferences dbo system table
sysremotelogins dbo system table
sysroles dbo system table
syssegments dbo system table
sysservers dbo system table
syssrvroles dbo system table
systestlog dbo system table
systhresholds dbo system table
systypes dbo system table
sysusages dbo system table
sysusermessages dbo system table
sysusers dbo system table
sp_configure dbo stored procedure
sp_dboption dbo stored procedure
sp_getmessage dbo stored procedure
sp_procxmode dbo stored procedure
sp_prtsybsysmsgs dbo stored procedure
sp_validlang dbo stored procedure
说明见附录表1
(2)视图(Views)
视图是查看一张或几张表中的数据的一种方式。通过将一张或几张表中的一部分数据进行组合得到视图。视图看上去与表非常相象,但与表还是有着本质的区别。通过视图看到的数据实际上都是存放在表中的,在数据库中仅存在视图的定义。 使用视图的好处是:
● 操作方便
● 安全性
(3)索引(Index)
索引是对字段生成的,用于加快数据的检索。在Sybase数据库中,索引是由系统自动管理的,也就是说,Sybase的索引操作对用户是透明的。表的索引一旦建立,系统会自动对其进行更新维护以使它与相应表对应一致;操作时,用户无须指定索引,系统会自动确定是否使用索引进行操作。 Sybase支持三种不同类型的索引,一是复合索引,即包含几个列的索引;二是唯一性索引,即任意两行中的索引列不能有相同的取值;三是簇类索引(Clustered indexes)和非簇类索引(Nonclustered indexs),簇类索引使SQL服务器不断重排表行的物理顺序以使其与逻辑索引顺序相一致,非簇类索引则不需要表行的物理顺序与逻辑顺序一致。每个表最多只能建立一个簇类索引,非簇类索引则可建立多个。与非簇类索引相比,簇类索引的检索速度要快。应当在建立任何非簇类索引以前建立簇类索引。
(4)存储过程(Stored procedures)
存储过程是用T-SQL语言编写成的SQL子例程,它存储于SQL服务器上供用户调用执行。与一般的SQL语句和批处理语句不同的是,存储过程是经过预编译的。当首次运行一个存储过程时,SQL Server的查询处理器将对其分析,并产生最终的执行方案。由于查询处理的大部分工作已经完成,所以以后执行存储过程时速度将会很快。执行存储过程时可带参数并可调用其他存储过程,执行完毕后返回信息以指示是否成功完成相应操作。存储过程有两种:一种是 SQL服务器安装时自动建立的系统存储过程(系统过程),另一种是用户自己创建的存储过程。 系统过程是用于系统管理,并且为用户提供了从事数据库管理的一种途径。这些系统过程都是以sp_开头的,它们都放在master数据库中且隶属于sa(系统管理员) 。也有很多可以在任一个数据库中运行的系统过程。 常见的系统过程有:
Sp_addgroup 在当前数据库中建立一个数据库用户组
Sp_addlogin 建立一个SQL服务器用户
Sp_adduser 在当前数据库中增加一个用户
sp_changegroup 改变数据库用户组
Sp_dboption 查询或改变数据库系统设置
Sp_dropdevice 删除设备
Sp_dropgroup 删除组
Sp_droplogin 删除帐号
Sp_help 查询数据库对象及所有数据库信息
Sp_helpdb 查询数据库信息
Sp_helpdevice 查询设备信息
Sp_helpgroup 查询组信息
Sp_helpindex 查询给定表信息
Sp_helpuser 查询用户信息
Sp_lock 查询当前加锁信息
Sp_monitor 查询SQL服务器统计信息
Sp_password 改变登录帐号口令
Sp_spaceused 查询表中的行数、数据页数及空间大小
Sp_who 查询当前用户及过程信息
Sp_syntax 查询操作语法
Sp_configure 配置系统参数
例:
1> sp_helpdb
2> go
name db_size owner dbid created status
--------------------------------------------------------
master 3.0 MB sa 1 Jan 01, 1900 no options set
model 2.0 MB sa 3 Jan 01, 1900 no options set
sybsystemprocs 10.0 MB sa 4 Oct 24, 1997 trunc log on chkpt
tele114 370.0 MB sa 5 Oct 24, 1997 select into/bulkcopy,
trunc log on chkpt
tempdb 22.0 MB sa 2 May 05, 1998 select into/bulkcopy
(0 rows affected, return status = 0)
例:
1> sp_monitor
2> go
last_run current_run seconds
-------------------------- ----------
May 5 1998 4:09PM May 5 1998 4:13PM 224
(0 rows affected)
cpu_busy io_busy idle
------------------------- ------------
17(1)-0% 5(0)-0% 923(223)-99%
(0 rows affected)
packets_received packets_sent packet_errors
------------------------- -------------
21(9) 51(23) 0(0)
(0 rows affected)
total_read total_write total_errors connections
------------------- -------------------
947(1) 595(113) 0(0) 3(1)
(0 rows affected, return status = 0)
(5)触发器(Triggers)
触发器是一种特殊的存储过程,用来维护不同表中的相关数据的一致性。当在一张表中插入、删除和修改数据时,触发器就会触发另一个存储过程,从而保持数据的一致性。
(6)缺省与规则(Defaults and rules)
缺省是在数据录入时,若用户没有输入数据,SQL Server自动输入的值。 规则是可以理解为对数据库、某一列、某用户数据类型的限制。
三、SQL 查询语言
SQL不仅包括查询数据的有关命令,还包括创建数据库及其对象,增、删、改数据等功能。分别定义为数据查询语言,数据定义语言及数据操作语言。这里先介绍数据查询语言。其基本句法为: Select select_list from table_list where search_conditions
1、简单查询
A、选择若干列
Select expression [,expression]... From table_list
B、选择若干行
查出电话号码以415到头的记录
Select * from code_1th where tel like '415%'
查询中消除值重复的行
Select distinct tel from code_1th
对Text 和 char 可用 like ,其中可用通配符‘%’及‘-’,
分别代表多个字符和单个字符。
其他常用查询条件有:(出text类型除外)
大小比较 =、>、<、>=、<=、!=、!>、!<
范围确定 between exp1 and exp2 /net between exp1 and exp2
列表或集合 in (exp1[,exp2,[...]]) not in (...)
谓词 like
多重条件 and or not
2、连接查询
A、等值连接和不等值连接:通过‘=’来比较两个表之间的数据时,
称为等值连接;而通过其他比较符时,称为不等值连接
等值连接:
Select * from publishers, authors where publishers.city=authors.city
不等值连接:
B、自然连接: 在连接的目标列中相同名的列只保留一个
Select publishers.pub_id publishers.pub_name,
publishers.state, authors.*
From publishers, authors where
publishers.city=authors.city
3、子查询
A、表达式子查询
Select au_lname, au_fname from authors where city=
(select city from publishers where pub_name="abcde")
可以使用一切大小比较操作符;在操作符和子查询之间可以使用All 或any。
B、限定谓词子查询
Select pub_name from publishers from publishers
Where pub_id in
(select pub_id from titles where type='abcde')
C、相关查询
相关查询即嵌套查询依赖于外部父查询的值,
嵌套查询要重复执行若干次。
Select distinct t1.type from titles t1
Where t1.type in ( select t2.type from titles t2
where t1.pub_id!=t2.pub_id)
4、集函数、分组与排序
A、对查询结果进行聚集处理
聚集函数: Sum([all|distinct] expression),
avg([all|distinct] exoression) ,
Count([all|distinct]expression), count(*),
max(expression), min(expression)
Select count(*) from titles
B、用Group by 和 having 子句对查询结果分组
Select type ,avg(advance), sum(total_sales) from
titles group by type
Select type from titles group by type
having count(*) >1
Having 类似于where , 但where 不能用聚集函数。
C、用Order by 对查询结果进行排序
Select type ,avg(price) from titles group by
type order by avg(price)
D、Compute 子句
完成基于每一组中的值的聚集运算,聚集值
作为一个新行出现在查询结果中。
Select type ,price advance from titles
order by type compute sum(price), sum(advance) by type
四、数据库、数据库对象的增、删、改
1、数据库
x 打开数据库
Use tele114
x 创建数据库。拥有创建数据库权利的用户可以创建自己的数据库。
CREATE DATABASE tele114
ON tele114_def01=10,tele114_run01=200,tele114_idx01=200
LOG ON tele114_log01=80
x 删除数据库
Drop database tele114
x 修改数据库
Alter database tele114 on tele114_run02=100, tele114_idx02=100
2、表
x 建表
create table spec_code
(
No tinyint not null, /*特编号(0--99)*/
Name varchar(50) null, /*名称*/
Addr varchar(50) null, /*地址*/
Tel varchar(null, /*电话号码*/
StaffNo varchar(4) not null /*录入员工号*/
)
on segrun /*将表放在segrun段上*/
x 删除表
Drop tabel tele114_1th
x 修改表,在表中增加新的列(用这个命令增加的列必须允许null值)
Alter table friends_etc add country varchar(20 null x 表级或列级约束
Create table my_publishers
(pub_id char(4),
Pub_name carchar(40).
Constraint my_chk_constraint
Check (pub_id in ('1389','0736','0877'))
Or (pub_name not like 'bad news books'))
x 指定默认值
Create table ny_titles
(title_id char(6t),
Title varchar(80),
Price money default null,
Total_sales int default (0))
x 指定Unique 和primary key 约束
Primary key 不允许空值,常用来产生唯一的聚集索引,
unique 允许空值,常用来产生唯一的非聚集索引
Create table my_sales
(stor_id char(4),
Ord_num varchar(20),
Date datetime,
Unique clustered(stor_id,ord_num))
3、索引
x 建立索引
create unique clustered index code1thidx1 on code_1th(Code1,Name,UnitNo1,Used)
on segrun
Unique: 建立唯一性索引
Clustered : 建立聚集索引,使得数据行的逻辑顺序与物理顺序一致,查询速度较快;
每个表仅允许建立一个唯一性索引。(非聚集索引nonclustered)
On segrun:将索引放在segrun上
x 删除索引: drop index code_1th.code1thidx1
4、 默认:当用户没有显示地为某一列赋值时,SQL SERVER 为该列插入的值
x 创建默认值CA,把默认值CA用到friends_etc表中的State列上
Creat default statedflt
Go
Sp_bindefault statedflt, "frends_etc.state"
go
x 断离默认
Sp_unbindefault "frends_etc.state"
x 删除默认
Drop default statedflt
5、规则:可以理解为对数据库、某一列、某用户数据类型的限制.
规则中的任何变量名必须
冠以@,不能直接引用列或其他数据库对象。
x 创建规则并把他关联到用户定义的数据类型P#上
Create rule phonerule as @phone like 415[0-9][0-9][0-9][0-9]
Sp_bindrule phonerule ,"p#"
x 断离规则
Sp_unbindrule "p#"
x 删除规则
Drop rule phonerule
6视图:视图是从一个或多个基本表或其他视图上导出的表,
可以在视图上进行增、删、改
x 创建视图
创建视图的句法为:
create view view_name
(column_1,...,column_n)
as select_statements
例:在authors表和publishers表上定义一个视图如下:
Create view cities (authorname, acity, publishername, pcity)
As select au_lname,authors.city, pub_name, publishers.city
From authors, publishers
x 通过使用Drop view 命令来撤消一个视图
Drop view view_name
7、存储过程
x 创建存储过程
CREATE PROCEDURE procedure_name [(para1[,para2, ...])]
As sql_statements
存储工程的参数名必须一@开头,包括@最长为30个字符。
x 执行存储过程
EXEC[UTE] procedure_name [(para1[,para2, ...])]
存储过程能够返回一个整数,用来指示存储过程执行是完全错误还是错误。
SQL SERVER 用0指示成功的返回,-1~-99指示不同的错误。
当前所用的0及-1~-14的含义如表所示。
值 含义
0 过程执行无错
-1 丢失对象
-2 数据类型错误
-3 进程被选作死锁的牺牲品
-4 权限错误
-5 语法错误
-6 各种用户错误
-7 资源错误:如空间错误
-8 非严重的内部错误
-9 触及系统限制
-10 严重的内部不一致
-11 严重的内部不一致
-12 表或索引坏了
-13 数据库坏了
-14 硬件错误
x 更改存储过程名
Sp_rename objname newname
x 删除存储过程
DROP PROCEDURE procedure_name
8 、触发器
x 创建触发器
CREATE TRIGGER [owner.]trigger_name
ON [owner.]table_name
{FOR INSERT,UPDATE,DELETE}
AS
SQL_statements
或使用IF UPDATE 子句:
CREATE TRIGGER [owner.]trigger_name
ON [owner.]table_name
{FOR INSERT,UPDATE}
AS
[IF UPDATE (column_name)
[{AND|OR} UPDATE (column_name)]...}
SQL_statments
[IF UPDATE(column_name)
[{AND|OR} UPDATE column_name)]...
SQL_statements]...
x 触发器的删除
DROP TRIGGER [owner.]trigger_name
五、批处理和流控制语言
1、批处理
SYBASE系统允许用户将若干条相关的语句组成一个整体,
交给系统同时处理。 一批语
句的结束以go语句为标志。严格地讲,
单条SQL语句也是一个批处理。
例:Select count(*) from titles
Select count(*) from authors
Go
也可以将一组SQL命令放在一个操作系统文件中,
再将这个文件交给isql执行。
2、流控制语言
流控制语句
在批处理中,我们可以加入流程控制语句,
从而达到编程的目的。在T-SQL语言中,
流控制语句有:
· if。。。Else。。。
· begin。。。End。。。
· while和break。。。Continue
· declare和局部变量以及全局变量
· Goto
· Return
· Waitfor
· print和Raiserror
· 注释
例:
if exists(select * from zyl
where xm="李军")
print "ok"
else
print "no this one"
使用批处理有以下规则:
x CREATE PROCEDURE、CREATE RULE、 CREATE DEFAULT 、
CREATE TRIGGER 以及 CREATE VIEWE 必须单独交给SQL SERVER,
他们不能和别的SQL语句一起作批处理(CREATE DATABASE、 CREATE TABLE
和CREATE INDEX 能和其他语句组成批处理)。
x 规则和默认值都不能在一组批处理中刚关联就使用。
x USE命令必须在引用这个数据库的对象的语句的前一组批处理中提交。
x 不能刚删除(DROP)一个数据库对象又在同一批处理中重新创建他。
x 用SET语句做的任何选择设置在批处理尾处发生作用。
可以把SET语句和查询语句放入一组批处理中,
但SET选择项不能在这组批处理中使用。
六、系统的启动和关闭
1、启动SQL Server
应用SQL Server安装程序(sybinit)创建SQL Server或Backup Server,
默认文件名为RUN_SYBASE 和RUN_SYB_BACKUP,放在¥SYBASE/INSTALL目录下。
Startserver 用来启动一SQL Server 或Backup Server:
Startserver -f RUN_SYBASE
Startserver -f RUN_SYB_BAKUP
可以通过showserver查看SQL ServerBackup Server是否已经启动,
在$SYASE/INSTALL下运行showserver 查看SQL Server 是否启动
UID PID PPID C STIME TTY TIME CMD
(Backup Server已启动的信息)
sybase 831 830 0 17:23:50 ttyp1 00:00:00
/sybase/bin/backupserver
SYB_BACKUP -I/sybase/interfaces -M/sybase/bin/sybmul
(SQL Server已启动的信息)
sybase 674 1 0 14:29:11 ttyp0 00:00:45
/sybase/bin/dataserver -d/sybase/master.dat
YBASE -e/sybase/install/errorlog
SQL Server的启动过程
master数据库启动
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]
4、Sybase数据库目录说明
/usr/sybase =.. 主目录
.. /install 安装程序
../bin 执行程序
../include 库函数文件
../lib 宿主语言库
../doc 联机文件
../scripts SQL 动态描述文件
../help 帮助信息
../locales 语言限制文件
../termdef 终端定义文件
../charsets 字符集文件
七、SQL Server的用户及权限
Sybase中的用户分为两种:SQL服务器用户(登录帐号)和数据库用户。
安装完SQL服务器后,系统自动建立一个SQL服务器用户sa,口令为空,
即系统管理员,他对整个系统有操作权,其他用户均由系统管理员建立。
在SQL Server中有三种特殊的用户:系统管理员、用户数据库所有者
(建立相应数据库的数据库用户)DBO、一般用户。系统管理员对整个系统有操作权;
用户数据库所有者对他所建立的数据库具有全部操作权利;
一般用户对给定的数据库只有被授权的操作权限。
数据库用户一般可分为用户组,任一数据库在建立后即被赋予一个用户组public。
1、建立SQL服务器用户名(登录帐号)
作为一个用户,为了使用SQL Server,他必须在SQL Server上有一个SQL服务器用户名(登录帐号)。
这个帐号是系统管理员通过sp_addlogin来增加的。
sp_addlogin 登录名,口令,库名,语言,全名
例:建立用户zhang, 口令为zhangling(最低六位),全名为Zhang ling
1> sp_addlogin zhang,zhangling,null,null,"Zhang ling"
2> go
3> select * from syslogins
4> go
2、增加数据库用户名
同样,为了使用SQL Server上的数据库,他必须在数据库中有一个用户名,
这个用户名是数据库所有者通过sp_adduser来增加的。数据库用户名不必和
用户帐户一样,而且在不同的数据库中用户名可以不同。
多个用户可以有相同的SQL Server帐户。同样,
多个SQL Server帐户可以有相同的数据库名。
sp_adduser 登录名,别名,组名
登录名为用户的SQL服务器登录名;别名为用户在数据库中的用户名;
组名为用户所属的数据库用户组。
例:用户zhang增加为tele114的用户,别名为zhang1,属于用户组china
1>sp_addgroup china
2>go
1>sp_adduser zhang,zhang1,china
2>go
1> sp_helpuser
2> go
*例:删除别名zhang1,用户组china,登录名zhang
1> use tele114
2> go
3> sp_dropuser zhang1
4> go
5> sp_helpuser
6> go
1>sp_dropgroup china
2>go
1> sp_helpgroup
2> go
3> use master
4> go
5> sp_droplogin zhang
6> go
7> select * from syslogins
8> go
3、数据库操作授权
grant 命令序列 to 用户名
A. 系统管理员可以授予其他用户CREATE DATABASE的权限,
使其他用户可以成为数据库所有者。
B. 数据库所有者在他所拥有的数据库中,
可以授予其他用户的权限有:
l CREATE TABLE ------------------- 建表
lCREATE DEFAULT ------------------ 建缺省
lCREATE RULE ------------------- 建规则
lCREATE PROCedure ------------------ 建存储过程
lCREATE VIEW ------------------- 建视图
lDUMP DATABASE ------------------- 备份数据库
lDUMP TRANsaction ------------------ 备份日志
C. 数据库对象所有者可以授予其他用户的操作权限有:
l SELECT
l UPDATE
l INSERT
l EXECute
l DELETE
l REFERENCE
例:授予zhang1在数据库tele114上建表,建视图,建存储过程;
对表students有select,reference权;对name,native字段有update权。
1> use tele114
2> go
3> grant creat table,create procedure ,create view to zhang1
4> go
5> grant select,reference on students to zhang1 with grant option
6> go
7> grant update on students(name,native) to zhang1
8> go
9> sp_helprotect
10> go
八、数据库备份与恢复
SQL Server提供了两种不同类型的恢复:
一类是系统自动完成的恢复;另一类是人工完成的恢复。
1.系统软件故障恢复
系统自动恢复是在系统软件出现故障的情况下
通过重新启动SQL Server进行恢复。
自动恢复从master数据库开始,然后是model数据库,
再是temporary数据库,最后是用户数据库。在每个数据库上,
恢复机制观察事务日志。如果日志写入比数据库更近的数据,
则向前恢复数据库。如果事务尚未完成,则要回退它们。
所谓事务日志就是一张系统表,syslogs。
在这张表中记录着对数据库的更新请求,
例如插入、修改和删除。查询操作不记入事务日志中。
2.介质故障的恢复
一旦介质发生故障,只有通过以前备份的数据库和事务日志才能恢复数据库,
为此我们需要经常备份数据库和事务日志。
备份数据库和事务日志我们使用dump命令,而恢复数据库和事务日志我们使用load命令。
与创建数据库需要一个数据库设备类似,
我们备份数据库和事务日志也需要一个卸出设备。
增加卸出设备可以通过系统过程sp_addumpdevice来实现。
卸出设备可以是磁盘、磁带或操作系统文件。
sp_addumpdevice "type",device_name,physicalname
例:
sp_addumpdevice "disk", "db114", "/usr/sybase/zyl114.bak",1
(1) 备份数据库和事务日志
备份数据库的语法为:
dump database database_name to dump_device
例如:
dump database tele114 to db114
备份事务日志的语法为:
dump transaction database_name to dump_device
[with truncate_only | with no_log | with no_truncate]
前两项在日志中删除提交的事务,后一项不删除。
在备份数据库前的所有事务日志备份都是没有意义的。
我们一般不经常备份数据库,但我们要经常备份事务日志。
这是因为备份事务日志比备份数据库需要更少的时间和存储空间。
(2)恢复用户数据库
要恢复已被破坏的数据库,可以按如下步骤进行:
· 用带no_truncate选项的dump命令卸出用户数据库事务日志。
· 用和被破坏的数据库的同样的结构建立一个新的数据库。
· 用load命令重新装入数据库和事务日志。
装入数据库的语法为:
load database database_name
from file_name
装入事务日志的语法为:
load transaction database_name
from file_name
例:数据库备份
1> dump db_name to file_name
2> go
数据库恢复
1> load db_name from file_name
2> go
日志备份
1> dump transaction db_name to file_name
2> go
日志恢复
1> load transaction db_name from file_name
2> go
日志删除
1> dump transaction db_name with truncate_only
2> Go
(3)master数据库的恢复
A、保存系统表的拷贝:sysdatabases、sysdevices、
sysusages、sysloginroles和Syslogins。
B、转储主设备上的用户数据库。
C、关闭SQL Server并使用buildmaster建立新的master数据库或主设备。
Buildmaster -m ...仅重建master数据库
Buildmaster ...重建主设备
D、已单用户模式启动SQL Server( Master-Recover
Startserver -f RUN_服务器名 -m
E、若master数据库用alter database 命令扩展过,
严格重建它在sysusages中的分配。
F、若Backup Server 的网络名(接口文件中的名字)
不是SYB_BACKUP,在sysservers中改动网络名。
Update sysservers set srvnetname="PRODUCTION_BSRV"
where srvname="SYB_BACKUP"
G、使用showserver查看,检查确保Backup Server正运行,
若有必要,重启Bakup Server
H、装载master的备份。
Load database master from 'master.bak'
Load database执行成功后,SQL Server 自动关闭。
I、若自master的上次转储以来增加过数据库设备,
执行disk reinit命令以重建sysdevices。
J、若执行了disk reinit,或自上次转储以来使用过create database
或alter database,执行disk refit 重建sysusages和sysdatabases表,
执行完毕后SQL Server自动关闭。
K、检查一致性:比较sysusages和sysdatabases的备份和新的联机版本,
对每个数据库执行dbcc checkalloc, 并检查每个数据库中重要的表;
若发现错误重新执行disk reinit和disk refit。
L、若恢复了整个主设备,则恢复model数据库。
Cd $SYBASE/scripts
Setenv DSQUERY 服务器名
Isql -Usa -P口令 -S服务器名 M、重新装载所有受影响的用户数据库。
N、恢复服务器用户ID。
O、以多用户模式重新启动SQL Server。
(4)恢复model 数据库
Buildmaster -d/设备名 -x
(5)恢复sybsystemproces数据库
A、删除sybsystemproces数据库(若物理磁盘损坏,删除设备,
使用Disk init 重建设备)
B、重建数据库
Create database sybsystemporces on 设备名=数据库大小
C、恢复数据库
Cd $SYBASE/scripts
Setenv DSQUERY 服务器名
Isql -Usa -P口令 -S服务器名 九、几个实用程序
1、bcp
以用户指定的形式将数据库表拷贝到操作系统文件中,
或从操作系统文件中拷贝一个数据库表。
提供了在数据库表和操作系统文件之间传递数据的一个方便、快速的方法。
bcp [[database-name.]owner.]table_name {in|out} datafile [各种开关]
其中,table_name是想要拷贝的数据库表名;{in/out}为拷贝方向,
in表示从文件到数据库的拷贝,out表示从数据库到文件的拷贝;
datafile是操作系统文件的全路径名。
常用的开关有:
-f formatfile----存有上次使用bcp处理同一表时得到的应答文件的全路径名,
格式文件名的扩展名为.fmt。使用格式文件,省去了再重复回答前面的问题。
-U username----允许用户指定一个注册名。
-P password----允许用户指定当前的SQL Server口令。
如果未使用-P选项,bcp将提示输入一个口令。
-S Server----允许用户指定与其相连的SQL Server的名字。
例:在客户端备份tele114数据库中code_1th表,按照code_1th.fmt的格式
c> bcp tele114..code_1th out code_1th.txt -杅code_1th.fmt 朥sa 朠
2、 isql
与SQL Server交互的SQL句法分析器。
isql [各种开关]
常用的开关有:
-U username----允许用户指定一个注册名。
-P password----允许用户指定当前的SQL Server的口令。
-S Server----允许用户指定与其连接的SQL Server的名称。
-i输入文件
-o输出文件
终止一条命令:go
清除查询缓冲:reset
调用编辑器:vi
执行一条操作系统命令:!!命令
退出isql:quit或exit
3、showserver
显示当前在本机上正在运行的SQL Server。
showserver
4、startserver
启动SQL Server。
startserver [各种开关]
常用的开关有:
-f runserverfile----指定一个运行服务器文件名,
每次重启SQL Server时,以这个文件为参考。在我们的实际机器上,
这个文件名为RUN_SYBASE或RUN_SYB_BACKUP。
-m ----以单用户的方式启动SQL Server。这个方式用于恢复master数据库。
5、syman
显示联机的库例程,系统过程及实用程序手册。
syman [keyword]
syman实用程序的联机文本文件存放在$SYBASE下的doc子目录中。
6、dbcc 数据库一致性检查
Dbcc 用来检查一个数据库的逻辑一致性和
物理一致性。通常在下面的情况下使用dbcc:
x 常规数据库维护
x 确定当一个系统错误后可能损坏的范围
x 在备份数据库之前
x 怀疑数据库受到损坏。
dbcc有两个主要功能:可检查分配表结构
(命令checkalloc、tablealloc和Indexalloc);可检查页链接和页级、
行级上的数据指针。
只有表属主可以用checktable、fix-text和reindex选项执行dbcc命令。
只有数据库属主可以使用checkdb、 checkalloc、checkcatalog、
indexalloc和tablealloc选项。只有系统管理员可以使用dbrepair选项
dbcc命令的完整语法格式如下:
Dbcc
{checktable({表明|表标识}[,Skip_ncindex])|
Checkdb [(数据库名[,skip_ncindex])]|
Checkalloc [(数据库名[,fix|nofix])]|
Talbealloc ({表明|表标识}[,
{full|optimized|fast|null}[,fix|nofix]]))|
Indexalloc ({表明|表标识},索引标识[,
{full|optimized|fast|null}[,fix|nofix]]))|
Checkcatalog [(数据库名)]
Dbrepair (数据库名,dropdb)|
Reindex ({表明|表标识})|
fix_text({表明|表标识})}
十 、SQL客户端软件
1. DOS状态下SQL客户端软件
软件位于c:\sqlbin
运行步骤:
运行TCPIP协议程序tcp.bat
c:\nwclient\lsl /c:\nwclient\net.cfg
c:\nwclient\ne2000
c:\nwclient\tcpip
(2) ping 129.6.114.201 (服务器地址)
返回129.6.114.201 is alive 正常
返回No response from 129.6.114.201 为异常
(3)运行sybclenv.bat------------------
Sybase的DOS接口启动程序,内容如下:
set path=c:\sqlbin\binr;%path% -------------
Sybase的DOS接口程序所在目录
set dsquery=129.6.114.201,4114-------------
连接服务器IP地址和端口号
c:\sqlbin\binr\dbnovtcp
C:\sqlbin\binr\rmineti
dbping 129.6.114.201------------
检查是否连通SYBASE服务器
连接成功出现“Successfully
opened network connection"
(5) isql 朥sa 朠
1> sp_help
2> go
十一、附录
附录1:只有在master数据库中才能有的系统表
系统表名 表中的内容
Sysconfigures 一行记录了用户可设置的配置参数
Syscurconfigs 有关SQL Server当前正使用的配置参数情况
Sysdatabases 一行记录了SQL Server中的一个数据库
Sysdevices 一行记录了数据库的每一磁带转储设备,
磁盘转储设备,数据库设备和磁盘分区
设备和磁盘分区
Syslocks 有关动态锁的情况
Syslogins 一行记录了每一有效的SQL Server的用户帐号
Sysmessages 一行记录了每一系统错误或警告
Sysprocesses 有关Server进程的情况
Sysremotelogins 一行记录了一个远程用户
Sysservers 一行记录了一个远程SQL Server
附录2:Sysusages 一行记录了
分配给一个数据库的每一个磁盘分析
系统表名 表中的内容
Sysalternates 一行记录了SQL Server用户在当前数据库中的标识
syscoumns 一行记录了一个表或视图的每一列,一个存储过程的每一参数
syscomments 一行或多行记录了每一视图、规则、缺省值、触发器和存储过程
sysdepends 一行记录了由一个过程、视图或触发器所参照的每一过程,视图或表
Syskeys 一行记录了每一主码,外码或公用码
Syslogs
sysobjects 一行记录了每一表、视图、存储过程、日志、规则、
缺省值、触发器和临时表(仅在tempdb中)
sysprocedures 一行记录了每一视图、规则、缺省、触发器和过程
syprotects 记录用户的权限信息
sysegments 一行记录了每一片段(命名的的磁盘分片汇集)
systypes 一行记录了每一由系统提供的和用户定义的数据类型
sysusers 一行记录了一个数据库的合法用户,或用户组
附录3: 由SQL Server提供的系统过程功能和执行权
过程名 功能 执行权限
sp_addalias 把数据库中的一个用户映象到另一个用户数据库所有者
sp_addgroup 向数据库增加分组,
在授权和撤权命令中分组被用作聚合名字 数据库所有者
sp_addlanguage 为服务器定义可替换语言,
并把它增加到master,dbo,syslanguages中。
sp_addlogin 通过向master.dbo,syslogins
中增加表项授权新的SQL Server用户 系统管理员
sp_addremotelogin 通过向master,bo,sysremotelogins
增添表项授权新的远程服务器用户
sp_addsegment 在指定的数据库设备上创建一个段 数据库所有者系统管理员
sp_addserver 定义远程服务器,或定义本地服务器名字 数据库所有者系统管理员
sp_addtype 创建用户定义的数据类型 Public
sp_addumpdervce 向SQL Server增加转储设备 系统管理员
sp_adduser 向当前数据库添加新的用户 数据库所有者
sp_bindefault 为一列或用户下义的数据类型定义缺省值 目标(对象)所有者
sp_bindrule 向一列或用户定义的数据类型赋一规则 目标汽有者
sp_changedbowner 改变数据库的所有者 数据库所有者
sp_changegroup 改变用户所属的分组 数据库所有者
sp_checknames 检查当前数据库在7位ASCII码集之外的字符的名字 public
sp_commonkey 在两个表或视图之间定义一
公共键--经常被连接的列 两表(或视图)的所有者
sp_configure 显示或改变配置变量 没有参数或只有第一个参数
的执行权属于public,否则属于系统管理员
sp_dboption 显示或改变数据库选项 不带参数属于public,
带参数时属于数据库所有者
sp_defaultdb 改变一用户的缺省数据库
系统管理员(但每个用户都可以改变他自己的缺省语言)
sp_depends 显示数据库目标相关性的信息 public
sp_diskdefault 设备数据库设备的状态为defaulton或defaultoff(
表明一数据设备是否能用于数据库的岂省存储) 系统管理员
sp_dropalias 删除用sp_addalias建立的用户名别名标识 数据库所有者
sp_dropdevice 删除一SQL Server数据库设备或转储设备 系统管理员
sp_dropgroup 从数据库中删除一分组 数据库所有者
sp_droplanguage 从服务器中删除可替换语言,
并从master.dbo.syslanguages中删掉相应的行 系统管理员
sp_droplogin 通过删掉用户在master,dbo,syslogins中的表项删除SQL Server用户
sp_dropremotelogin 删除远程用户注册 系统管理员
sp_dropsegment 从数据库中删除一个段或从
特定数据库设备上卸掉一个段的映象 数据库所有者
sp_dropserver 删除远程服务器 系统管理员
sp_droptype 删除用户定义的数据类型 数据库所有者数据类型所有者
sp_dropuser 从当前是数据库中删除一用户 数据库属主
sp_extendsegment 把段的区域扩充到另一个数据库设备或
在当前数据库设备上进行扩充 数据库属主
sp_foreignkey 在当前数据库的表或视图上定义一外部键 表的属主
sp_help 报告目标或SQL Server提供的或用户定义的数据库类型的信息 public
sp_helpdb 报告--指定数据库或所有数据库的信息 public
sp_helpdevice 报告--指定设备或所有SQL
Server数据库设备转储设备的信息 public
sp_helpgroup 报告--特定组或当前数据库的所有组的信息 public
sp_helpinde 报告--表中的索引信息 public
sp_helpjoins 列出可连接两个表或视图的列 public
sp_helpkey 报告某个特定表或视图的一主键,
外部键或公共键或者当前数据库中所有键的信息 public
sp_helplanguage 报告一特替换语言或所有语言的信息 public
sp_helplog 报告包括日志第一页的设备名 public
sp_helpremotelogin 报告一特定远程服务器或所有远程服务器的注册信息 public
sp_helprotect 报告一数据库对象或用户权限,且由用户选择对象 public
sp_helpsegment 报告当前数据库中一特定段或所有段的信息 public
sp_helpserver 报告一特定远程服务器或所有远程服务器的信息 public
sp_helpsort 显示SQL Server的缺省排列顺序以及字符集 public
sp_helptext 打印一系统过程、触发器、视图、缺省或规则的定义文本 public
sp_helpuser 报告当前数据库中一个用户或所有用户的信息 public
sp_lock 报告当前上锁的进程的信息 public
sp_logdevice 将系统表syslogs(其中包括事务日志)
放在一个分设的数据库设备中 数据库属主
sp_monitor 显示SQL Server的统计数字 系统管理员
sp_password 增加或改变SQL Server注册的口令 对自己的口令,
权限属于public,系统管理员有权修改所有用户口令
sp_placeobject 为一特定中某个表或索引放置将来的空间分配
表属主,数据库属主系统管理员
sp_primarykey 定义一表或视图上的主键(主码) 表的所有者
sp_recompile 使生个使用被指定表的存储过程、触发器在下次运行时重新编译 public
sp_remoteoption 显示或改变远程注册选项 显示选项时属 public改变选项时属系统管理员
sp_rename 改变当前数据库中一用户建立目标的名称 特定目标,
权限属目标属主对数据库所有对象,权限属数据库所有者
sp_renamedb 改变数据库名 系统管理员
sp_serveroption 显示或改变服务器选项 显示选项,权限,
权限属 public改变选项,权限属系统管理员
sp_setlangalian 分配或改变一替换语言的别名 系统管理员
sp_spaceused 显示行数、数据页数以及当前数据库中由某个
目标或所有目标所占用的空间 public
sp_unbindefault 从一列或用户定义的数据类型中解除一规则 目标属主(所有者)
sp_who 报告特定用户或SQL Server所有当前用户和进程的信息 public
附录4:常用SQL命令 表4
1.load isql -Usa -P --进入ISQL环境
quit ----退出ISQL环境
2.shutdown (server_name) --关闭SYBASE服务器
ex. shutdown SYB_BACKUP
3.use (database_name) --打开数据库
ex. use tele114
4.set rowcount (number) -- 设置显示记录条数
ex. set rowcount 10 (为0则取消设置)
5.select (select_list) from (table_name) where
(search_conditions)
--查看符合要求的内容
ex. select max(UnitNo1) from code_1th
6.update (table_name) set (column_name1)=(value1),
column_name2)=value2)
where (search_conditions) --重新赋值
ex.update code_1th set Password='12345',
RevCode1=substring(RevCode1,1,
datalength(rtrim(RevCode1))-1)
where substring(Code1,1,1)='v' and
substring(Code1,2,1)!=' '
7.select (select_list) into (table_name1) from (table_name2)
where (search_conditions)
--将符合要求的table_name2中的内容存在table_name1中
ex.select * into sample from code_1th where
substring(Code1,1, 1)='V'
8.truncate table (table_name) --删去表
ex.truncate table sample
delete (table_name) where (search_conditions)
-- 删去表的一部分
ex. delete example where County='5'
9.sp_addumpdevice 'disk',(logicalname),
(physicalname) --定义转储设备
ex.sp_addumpdevice 'disk','nbdump_1',
'vol1:\nbdump\nbdump.dat'
10.sp_dropdevice (device_name) --删去转储设备
ex.sp_dropdevice nbdump_1
11.dump tran (database_name) with truncate_only --删去日志
ex.dump tran tele114 with truncate_only
12.sp_configure (config_name),(config_value) --更改设置值
ex.sp_configure 'allow updates',1
13.reconfigure with override --使更改设置值有效
14.sp_who --使用数据库用户列表
15.kill (spid) --删去无效的数据库用户
ex.kill 9 --删去spid为9的数据库用户
16.sp_helpindex (tabel_name) --查看索引情况
ex. sp_helpindex code_2th
17.sp_helpdb (database_name) --查看数据库占用空间情况
ex. sp_helpdb tele114
附录5:SYBASE实用安装、
Sybase 10.0.1 For SCO UNIX3.0.x的安装
(一)安装前准备
1. SCO UNIX需两张补丁盘
a. UOD381异步I/O盘一张
b. aet382网络盘一张
重启UNIX后进入维护模式,用custom命令装入此两张补丁盘
2. 在UNIX系统中增加sybase用户
3. 在工作站上通过TCP/IP将SYB_SCO拷入 /usr/sybase中在工作站上运行
LSL
NE2000
TCPIP
FTP 129.18.114.99 (129.18.114.99为服务器的网络地址)
用sybase用户登录
bi
put SYB_SCO (SYB_SCO在C盘当前目录中)
4. 用cpio 展开安装程序
以root登录
cd/usr/sybase
Cpio 杋dvC 5. 配置UNIX内核
a. 以root登录
b. 设置环境变量,用vi 编辑 /.profile加入以下两行
SYBASE=/usr/sybase
export sybase
c. 用vi编辑/etc/conf/cf.d/mtune
修改参数为
NSTREAM 700
NAIOHBUF 400
d. cd/usr/sybase/install
sh sco_kernal sybase
重新 relink 后reboot
(二)安装
1)以sybase 登录
2)cd/usr/syabsw/install
3)sybinit
4)选3
SYBINIT
1. Rrlease Directory: /sur/u/sybasw-100
2. Edit /View interfaces File
3. Configure a server product
4. Configure an Open Coient/Server Product
5. Configure a Front End Product
5)选1
CONFIGURE SERVER PRODUCTS
1. Configure a mew SQL Server
2. Configure an existing SQL Server
3. Upgrad an existing SQL Server
7)ADD NEW SQL SERVER
1. SQL Server name: lyg114
a. 选1,输入服务器名如:lyg114
b. 按Ctrl-a
SQL SERVER VONFIGURATION
1. CONFIGURE SERVER'S INTERFACES FILE ENTRY Incomplete
2. MASTER DEVICE CONFIGURATION Incomplete
3. SYBSYSTEMPROCS DATABASE CONFIGURATION Incomplete
4. SET ERRORLOG LOCATION Incomplete
5. CONFIGURE DEFAULT BACKUP SERVER Incomplete
6. CONFIGURE LANGUAGES Incomplete
7. CONFIGURE CHARACTER SETS Incomplete
8. CONFIGURE SORT ORDER Incomplete
9. ACTIVATE VUDITING Incomplete
分别选1,2,3,---9配置参数,使各项Incmplete----->complete
参数配置如下:(例)
a. SERVER INTERFACES FILE ENTERY SCREEN
Server name : lyg114
1. Retry Count: 10
2. Retry Delay: 10
Listener services available:
Protocol Address Port Name Alias
rcp scosysv 4114
注意:Port=4114,此参数为1024--65535为间的4个或5个数字
Address=scosysv,此参数为UNIX服务器主机名
b. MASTER DRVICE CONFIGURATION
1. Master Device: /usr /sybase/madter.bay
2. size (Meg) : 30
c. SYBSYSTEMPROCS DATABASE CONFIGURATION
1.sybsytemprocs database size (Meg) : 10
2. sybsystemprocs logical device name: sysprocsdev
3. create new device for the sybsystemprocs database : yes
4. physical name of new device: /usr /sybase/sybtemp.dat
5. size of the new device (Meg) : 10
d. SET ERRORLOG LOCATION
1. SQL Server errorlog: /usr/sybase/errorlog
e. SET THE SQL ERVER'S BACKUP SERVER
1.SQL Server backup Server mname: SYB-BACKUP
注意:此备份服务器名一定要与后面配置的备份服务器名一致
f. SONFIGURE LANGUAGES
选 1. us-english
g.CONFIGURE CHARACTER SETS
选 1. SACII, fro use with unsp 及4.ISO 8859-1 (latin-1)-w (4.为缺省)
h. CONFIGURE SORT ORDER
选 1. Binary ordering ,for the ISO 8859/1 or Latin-1 Charact
i. ACTIVATE AVDITING
1. Install auiting: yes
2. sybsecurity database size (Meg): 5
3. sybsecuyty logical device name : sybsecurity
4. dreate new device for the sybsecurity database : yes
5. sybsecurity physical device name : /usr/sybase/sybsecur.dat
6. size of the new device (Meg): 5
9) 参数配置完后,按Ctrl-a
Execute the SQL Server Configuration now? y
10)看到下面的信息表示SQL Server 安装成功
Configuration completed successfully.
Press to continue.(回车)
11) 按Ctrl-x 退出安装程序
12) 要$提示符下运行
startserver-fRUN-lyg114 启动SQL Server
13) 要$提示符下运行
isql-Usa -P- Slyg114
屏幕出现:1>
安装完毕
Sybase 11.0.2 For SCO UNIX 5.02C的安装
(一)首先建立sybase组,
组号可设为100;再建立sybase用户,
然后修改/usr/sybase/.profile文件,
加入一句:SYBASE=“/usr/sybase”;
export SYBASE。
(二)调整系统核心参数
a. 共享内存:
# cd /etc/conf/cf.d
# ./configure选16,shared data
SHMMAX,输入新值,如83886080
(越大越好,系统启动后省下的全部内存)
退出。
b. 激活异步I/O:
# cd /etc/conf/sdevice.d;进入此目录
# Vi aio将“N”改为“Y”;编辑aio文件
# Vi suds将“N”改为“Y”;编辑suds文件
# Vi /etc/rc2 在最后加入下面一行:
/etc/suds_ctrl -a
c. 重建内核:
# /etc/conf/cf.d/link_unix
d. 重新启动openserver
(三)安装sybase
a. 以sybase登录:
$ ./sybload -D
依输入y 、l,
然后执行”./sybimage“
b. 依提示输入序列号,解完包后:
Vi /usr/sybase/locales/locales.dat
在[SCO]中,加入:
C_C.C.,us-English,ico_1
然后进入Install,配置SYBASE服务器。
※SYBASE 11.0.2 For SCO UNIX 5.0.2安装补充说明
目前SCO UNIX 5.0有多种版本,
针对5.0.2,SYBASE 11.0.2的安装需安装Kernel Patch:
a. OSS437a-streams lock timeout and protocal Data
b. OSS441a-SUDS aio supplement
c. OSS446a-tape drive unload for nonrewinding devices
在SCO UNIX 5.0.4C上不需安装补丁盘。