Sybase資料庫簡介 (轉載)

zenzuguo發表於2006-10-23


一、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,這三個段分別用來儲存資料庫的系統表、事務日誌和其他資料庫物件
在資料庫中建立段的步驟是:
x 先用Disk init 初始化物理裝置
x 透過使用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(8) 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資料庫啟動-----------鄐ybsystemproces資料庫啟動-----------嗲蹇誸empdb---------嗥舳?淥??菘 -------嗍攣竦幕毓

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:nwclientlsl /c:nwclientnet.cfg
c:nwclientne2000
c:nwclienttcpip
(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:sqlbinbinr;%path% -------------Sybase的DOS介面程式所在目錄
set dsquery=129.6.114.201,4114--------------連線伺服器IP地址和埠號
c:sqlbinbinrdbnovtcp
C:sqlbinbinrrmineti

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:nbdumpnbdump.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
8)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) 引數配置完後,按Crtl-a
Execute the SQL Server Configuraion now? y
10)看到下面的資訊表示SQL Server 安裝成功
Configrration completed successfully.
rpess 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上不需安裝補丁盤。

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/106285/viewspace-873333/,如需轉載,請註明出處,否則將追究法律責任。

相關文章