一、Sybase數(shù)據(jù)庫(kù)簡(jiǎn)介
1.版本 1984年,Mark B. Hiffman和Robert Epstern創(chuàng)建了Sybase公司,并在1987年推出了Sybase數(shù)據(jù)庫(kù)產(chǎn)品。SYBASE主要有三種版本,一是UNIX操作系統(tǒng)下運(yùn)行的版本,二是Novell Netware環(huán)境下運(yùn)行的版本,三是Windows NT環(huán)境下運(yùn)行的版本。對(duì)UNIX操作系統(tǒng)目前廣泛應(yīng)用的為SYBASE 10 及SYABSE 11 for SCO UNIX。 2.Sybase數(shù)據(jù)庫(kù)的特點(diǎn) (1)它是基于客戶/服務(wù)器體系結(jié)構(gòu)的數(shù)據(jù)庫(kù) 一般的關(guān)系數(shù)據(jù)庫(kù)都是基于主/從式的模型的。在主/從式的結(jié)構(gòu)中,所有的應(yīng)用都運(yùn)行在一臺(tái)機(jī)器上。用戶只是通過(guò)終端發(fā)命令或簡(jiǎn)單地查看應(yīng)用運(yùn)行的結(jié)果。 而在客戶/服務(wù)器結(jié)構(gòu)中,應(yīng)用被分在了多臺(tái)機(jī)器上運(yùn)行。一臺(tái)機(jī)器是另一個(gè)系統(tǒng)的客戶,或是另外一些機(jī)器的服務(wù)器。這些機(jī)器通過(guò)局域網(wǎng)或廣域網(wǎng)聯(lián)接起來(lái)。 客戶/服務(wù)器模型的好處是: ● 它支持共享資源且在多臺(tái)設(shè)備間平衡負(fù)載 ● 允許容納多個(gè)主機(jī)的環(huán)境,充分利用了企業(yè)已有的各種系統(tǒng) (2) 它是真正開(kāi)放的數(shù)據(jù)庫(kù) 由于采用了客戶/服務(wù)器結(jié)構(gòu),應(yīng)用被分在了多臺(tái)機(jī)器上運(yùn)行。更進(jìn)一步,運(yùn)行在客戶端的應(yīng)用不必是Sybase公司的產(chǎn)品。對(duì)于一般的關(guān)系數(shù)據(jù)庫(kù),為了讓其它語(yǔ)言編寫(xiě)的應(yīng)用能夠訪問(wèn)數(shù)據(jù)庫(kù),提供了預(yù)編譯。Sybase數(shù)據(jù)庫(kù),不只是簡(jiǎn)單地提供了預(yù)編譯,而且公開(kāi)了應(yīng)用程序接口DB-LIB,鼓勵(lì)第三方編寫(xiě)DB-LIB接口。由于開(kāi)放的客戶DB-LIB允許在不同的平臺(tái)使用完全相同的調(diào)用,因而使得訪問(wèn)DB-LIB的應(yīng)用程序很容易從一個(gè)平臺(tái)向另一個(gè)平臺(tái)移植。 (3) 它是一種高性能的數(shù)據(jù)庫(kù) Sybase真正吸引人的地方還是它的高性能。體現(xiàn)在以下幾方面: ● 可編程數(shù)據(jù)庫(kù) 通過(guò)提供存儲(chǔ)過(guò)程,創(chuàng)建了一個(gè)可編程數(shù)據(jù)庫(kù)。存儲(chǔ)過(guò)程允許用戶編寫(xiě)自己的數(shù)據(jù)庫(kù)子例程。這些子例程是經(jīng)過(guò)預(yù)編譯的,因此不必為每次調(diào)用都進(jìn)行編譯、優(yōu)化、生成查詢規(guī)劃,因而查詢速度要快得多。 ● 事件驅(qū)動(dòng)的觸發(fā)器 觸發(fā)器是一種特殊的存儲(chǔ)過(guò)程。通過(guò)觸發(fā)器可以啟動(dòng)另一個(gè)存儲(chǔ)過(guò)程,從而確保數(shù)據(jù)庫(kù)的完整性。 ● 多線索化 Sybase數(shù)據(jù)庫(kù)的體系結(jié)構(gòu)的另一個(gè)創(chuàng)新之處就是多線索化。一般的數(shù)據(jù)庫(kù)都依靠操作系統(tǒng)來(lái)管理與數(shù)據(jù)庫(kù)的連接。當(dāng)有多個(gè)用戶連接時(shí),系統(tǒng)的性能會(huì)大幅度下降。Sybase數(shù)據(jù)庫(kù)不讓操作系統(tǒng)來(lái)管理進(jìn)程,把與數(shù)據(jù)庫(kù)的連接當(dāng)作自己的一部分來(lái)管理。此外,Sybase的數(shù)據(jù)庫(kù)引擎還代替操作系統(tǒng)來(lái)管理一部分硬件資源,如端口、內(nèi)存、硬盤(pán),繞過(guò)了操作系統(tǒng)這一環(huán)節(jié),提高了性能。 3.Sybase數(shù)據(jù)庫(kù)的組成 Sybase數(shù)據(jù)庫(kù)主要由三部分組成: (1) 進(jìn)行數(shù)據(jù)庫(kù)管理和維護(hù)的一個(gè)聯(lián)機(jī)的關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)Sybase SQL Server; Sybase SQL Server是個(gè)可編程的數(shù)據(jù)庫(kù)管理系統(tǒng),它是整個(gè)Sybase產(chǎn)品的核心軟件,起著數(shù)據(jù)管理、高速緩沖管理、事務(wù)管理的作用。 (2) 支持?jǐn)?shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的建立與開(kāi)發(fā)的一組前端工具Sybase SQL Toolset; ISQL是與SQL Server進(jìn)行交互的一種SQL句法分析器。ISQL接收用戶發(fā)出的SQL語(yǔ)言,將其發(fā)送給SQL Server,并將結(jié)果以形式化的方式顯示在用戶的標(biāo)準(zhǔn)輸出上。 DWB是數(shù)據(jù)工作臺(tái),是Sybase SQL Toolset的一個(gè)主要組成部分,它的作用在于使用戶能夠設(shè)置和管理SQL Server上的數(shù)據(jù)庫(kù),并且為用戶提供一種對(duì)數(shù)據(jù)庫(kù)的信息執(zhí)行添加、更新和檢索等操作的簡(jiǎn)便方法。在DWB中能完成ISQL的所有功能,且由于DWB是基于窗口和菜單的,因此操作比ISQL簡(jiǎn)單,是一種方便實(shí)用的數(shù)據(jù)庫(kù)管理工具。 APT是Sybase客戶軟件部分的主要產(chǎn)品之一,也是從事實(shí)際應(yīng)用開(kāi)發(fā)的主要環(huán)境。APT工作臺(tái)是用于建立應(yīng)用程序的工具集,可以創(chuàng)建從非常簡(jiǎn)單到非常復(fù)雜的應(yīng)用程序,它主要用于開(kāi)發(fā)基于表格(Form)的應(yīng)用。其用戶界面采用窗口和菜單驅(qū)動(dòng)方式,通過(guò)一系列的選擇完成表格(Form)、菜單和處理的開(kāi)發(fā)。 (3) 可把異構(gòu)環(huán)境下其它廠商的應(yīng)用軟件和任何類型的數(shù)據(jù)連接在一起的接口Sybase Open Client/Open Server。 通過(guò)Open Client的DB-LIB庫(kù),應(yīng)用程序可以訪問(wèn)SQL Server。而通過(guò)Open Server的SERVER-LIB,應(yīng)用程序可以訪問(wèn)其它的數(shù)據(jù)庫(kù)管理系統(tǒng)。 二、SYBASE有關(guān)概念 Sybase SQL Server是一個(gè)多庫(kù)數(shù)據(jù)庫(kù)系統(tǒng)。這些數(shù)據(jù)庫(kù)包括系統(tǒng)數(shù)據(jù)庫(kù)和用戶數(shù)據(jù)庫(kù)。 而不論是系統(tǒng)數(shù)據(jù)庫(kù)還是用戶數(shù)據(jù)庫(kù),都建立在數(shù)據(jù)庫(kù)設(shè)備上。 1. 數(shù)據(jù)庫(kù)設(shè)備 所有的數(shù)據(jù)庫(kù)都創(chuàng)建在數(shù)據(jù)庫(kù)設(shè)備上。所謂數(shù)據(jù)庫(kù)設(shè)備,不是指一個(gè)可識(shí)別的物理設(shè)備,而是指用于存儲(chǔ)數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù)對(duì)象的磁盤(pán)原始分區(qū)或操作系統(tǒng)文件。增加一個(gè)新的數(shù)據(jù)庫(kù)設(shè)備時(shí),必須對(duì)這些設(shè)備“初始化”。初始化的過(guò)程就是將物理磁盤(pán)、磁盤(pán)分區(qū)或操作系統(tǒng)文件變?yōu)镾YBASE數(shù)據(jù)庫(kù)可以識(shí)別的設(shè)備。初始化數(shù)據(jù)庫(kù)設(shè)備使用DISK INIT命令: DISK INIT NAME=設(shè)備名, PHYSNAME=物理設(shè)備名, VDEVNO=虛擬設(shè)備號(hào), SIZE=塊數(shù) 其中,NAME指數(shù)據(jù)庫(kù)設(shè)備名,此名將用于CREATE DATABASE和ALTER DATABASE命令。PHYSNAME是原始磁盤(pán)分區(qū)或操作系統(tǒng)文件名。VDEVNO是數(shù)據(jù)庫(kù)設(shè)備的標(biāo)識(shí)號(hào),在SQL Server中,它必須是唯一的。SIZE的單位是2K的塊,對(duì)于新創(chuàng)建的數(shù)據(jù)庫(kù),最小的SIZE是model數(shù)據(jù)庫(kù)的尺寸,即1024個(gè)2K的塊(2M)。 例如:/*將/dev目錄下400M的物理設(shè)備初始化為SYBASE的數(shù)據(jù)庫(kù)設(shè)備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、段 數(shù)據(jù)庫(kù)設(shè)備從邏輯上被劃分為數(shù)據(jù)庫(kù)段以允許將某一特定的對(duì)象放置在指定的段上(創(chuàng)建對(duì)象時(shí)指定),一數(shù)據(jù)庫(kù)設(shè)備可擁有多達(dá)192個(gè)段,一段可使用255個(gè)邏輯設(shè)備上的存儲(chǔ)空間。當(dāng)用戶創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)時(shí),SQL SERVER 會(huì)自動(dòng)在該數(shù)據(jù)庫(kù)中創(chuàng)建三個(gè)段: SYSTEM、LOGSEGMENT 、DEFAULT,這三個(gè)段分別用來(lái)存儲(chǔ)數(shù)據(jù)庫(kù)的系統(tǒng)表、事務(wù)日志和其他數(shù)據(jù)庫(kù)對(duì)象 在數(shù)據(jù)庫(kù)中創(chuàng)建段的步驟是: x 先用Disk init 初始化物理設(shè)備 x 通過(guò)使用Create database 和alter database 的on 子句,使數(shù)據(jù)庫(kù)設(shè)備對(duì)數(shù)據(jù)庫(kù)可用,于是新設(shè)備自動(dòng)增加到數(shù)據(jù)庫(kù)的default 和system段。 一旦數(shù)據(jù)庫(kù)設(shè)備存在并對(duì)數(shù)據(jù)庫(kù)可用,使用存儲(chǔ)過(guò)程Sp_addsegment 定義數(shù)據(jù)庫(kù)的段。語(yǔ)法如下: Sp_addsegment 段名,數(shù)據(jù)庫(kù)名,設(shè)備名 3、 系統(tǒng)數(shù)據(jù)庫(kù) 安裝Sybase數(shù)據(jù)庫(kù)時(shí)自動(dòng)生成的下列系統(tǒng)數(shù)據(jù)庫(kù): ● 主數(shù)據(jù)庫(kù)master; ● 模型數(shù)據(jù)庫(kù)model; ● 系統(tǒng)過(guò)程數(shù)據(jù)庫(kù)sybsystemprocs; ● 臨時(shí)數(shù)據(jù)庫(kù)tempdb。 也可選擇下列數(shù)據(jù)庫(kù): ● 安全審核數(shù)據(jù)庫(kù)sybsecurity; ● 示例數(shù)據(jù)庫(kù)pubs2; ● 命令語(yǔ)法數(shù)據(jù)庫(kù)sybsyntax。 (1) master數(shù)據(jù)庫(kù) 包含許多系統(tǒng)表和系統(tǒng)過(guò)程,從總體上控制用戶數(shù)據(jù)庫(kù)和SQL Server的操作,構(gòu)成了SYBASE系統(tǒng)的數(shù)據(jù)字典。MASTER數(shù)據(jù)庫(kù)主要記錄信息為: ● 登錄賬號(hào)(SQL服務(wù)器用戶名);syslogins,sysremolelogins ● 正在執(zhí)行的過(guò)程;sysprocesses ● 可修改的環(huán)境變量;sysconfigures ● 系統(tǒng)錯(cuò)誤信息;sysmessages ● SQL服務(wù)器上每個(gè)數(shù)據(jù)庫(kù)的信息;sysdatabases ● 每個(gè)數(shù)據(jù)庫(kù)占用的存儲(chǔ)空間;sysusages ● 系統(tǒng)上安裝的磁帶及磁帶信息;sysdevices ● 活動(dòng)鎖信息;syslocks (2) model數(shù)據(jù)庫(kù) 提供了新用戶數(shù)據(jù)庫(kù)的初型。當(dāng)我們每次用CREATE DATABASE命令 時(shí),SQL Server都產(chǎn)生一個(gè)model數(shù)據(jù)庫(kù)的拷貝,然后把它擴(kuò)展到命令要求的尺寸。如果我們修改了model數(shù)據(jù)庫(kù),那么以后新創(chuàng)建的數(shù)據(jù)庫(kù)都將隨它而改變。下面是幾個(gè)通常用到的對(duì)model數(shù)據(jù)庫(kù)的改變: ● 增加用戶數(shù)據(jù)庫(kù)類型、規(guī)則或缺省; ● 可存取SQL Server上所有數(shù)據(jù)庫(kù)的用戶用sp_adduser增加到model數(shù)據(jù)庫(kù)上; ● 缺省權(quán)限(特別是guest賬號(hào))可在model中建立; ● 諸如select into/bulkcopy那樣的數(shù)據(jù)庫(kù)選項(xiàng)可在model中設(shè)置。這些設(shè)置反映到所有新創(chuàng)建的數(shù)據(jù)庫(kù)中。它們?cè)趍odel中最原始的值是關(guān)(off)。 在一般情況下,大多數(shù)用戶無(wú)權(quán)修改model數(shù)據(jù)庫(kù),又沒(méi)被授權(quán)讀取。因?yàn)閙odel中所有內(nèi)容已拷貝到新數(shù)據(jù)庫(kù)中,授權(quán)讀model沒(méi)什么意義。 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數(shù)據(jù)庫(kù) 庫(kù)中存儲(chǔ)系統(tǒng)過(guò)程,當(dāng)用戶執(zhí)行一存儲(chǔ)過(guò)程(以sp_開(kāi)始)時(shí),SQL 服務(wù)器首先在用戶當(dāng)前數(shù)據(jù)庫(kù)中搜索指定的存儲(chǔ)過(guò)程,如果沒(méi)有相應(yīng)過(guò)程,則到系統(tǒng)過(guò)程數(shù)據(jù)庫(kù)中尋找,若沒(méi)有,再到MASTER數(shù)據(jù)庫(kù)中尋找。 (4)臨時(shí)數(shù)據(jù)庫(kù)tempdb 該數(shù)據(jù)庫(kù)為臨時(shí)表和臨時(shí)工作提供了一個(gè)存儲(chǔ)區(qū)域。臨時(shí)數(shù)據(jù)庫(kù)是SQL Server上所有數(shù)據(jù)庫(kù)共享的工作空間。由于這些表都是臨時(shí)的,所以每當(dāng)用戶退出或系統(tǒng)失敗,這些表都將消失。 (5)安全審核數(shù)據(jù)庫(kù)sybsecurity 數(shù)據(jù)庫(kù)中保存系統(tǒng)的安全審核信息,它可跟蹤記錄每個(gè)用戶的操作情況,為維護(hù)系統(tǒng)安全提供控制手段。 (6)示例數(shù)據(jù)庫(kù)pubs2 為用戶提供一個(gè)學(xué)習(xí)SYBASE的數(shù)據(jù)庫(kù)模型。 (7)命令語(yǔ)法數(shù)據(jù)庫(kù)sybsyntax 庫(kù)中保存SYBASE數(shù)據(jù)庫(kù)的命令語(yǔ)法及支持的語(yǔ)言庫(kù)。 4、用戶數(shù)據(jù)庫(kù) 用戶數(shù)據(jù)庫(kù)是指用Create database 命令創(chuàng)建的數(shù)據(jù)庫(kù)。所有新的用戶數(shù)據(jù)庫(kù)都要在master數(shù)據(jù)庫(kù)中創(chuàng)建,也就是說(shuō),不能存取master數(shù)據(jù)庫(kù)的用戶是無(wú)權(quán)創(chuàng)建新的數(shù)據(jù)庫(kù)的。SA可以將創(chuàng)建數(shù)據(jù)庫(kù)的權(quán)限授予其他用戶。新建數(shù)據(jù)庫(kù)中存在一些系統(tǒng)表,在sysusers表中至少有一條記錄,既該數(shù)據(jù)庫(kù)的創(chuàng)建者。數(shù)據(jù)庫(kù)創(chuàng)建時(shí),創(chuàng)建者既為該數(shù)據(jù)庫(kù)的 owner, 當(dāng)然創(chuàng)建者可以將這一地位或這一所有權(quán)用系統(tǒng)過(guò)程授予別的用戶。 5、數(shù)據(jù)庫(kù)對(duì)象 (1)表(Tables) 在一個(gè)關(guān)系數(shù)據(jù)庫(kù)中,表是最重要的數(shù)據(jù)庫(kù)對(duì)象,對(duì)應(yīng)于關(guān)系數(shù)據(jù)庫(kù)理論中關(guān)系,與DBASE或FOXPRO中的DBF文件是類似。一切數(shù)據(jù)都存放在表中。其它數(shù)據(jù)庫(kù)對(duì)象都是為了用戶很好地操作表中的數(shù)據(jù)。表都以一張二維表的形式存在。其中,每一列稱之為一個(gè)字段,或一個(gè)域;而每一行稱之為一個(gè)記錄,也就是一項(xiàng)數(shù)據(jù)。 有一類表,它們的名字都是以sys開(kāi)頭的,這些表稱為系統(tǒng)表,系統(tǒng)表記錄著有關(guān)SQL Server的信息。在master數(shù)據(jù)庫(kù)中的表大部分為系統(tǒng)表,這些表是隨著master數(shù)據(jù)庫(kù)的創(chuàng)建而建立的。另外,每個(gè)用戶數(shù)據(jù)庫(kù)在創(chuàng)建時(shí)都有一個(gè)系統(tǒng)表的子集。 例如,只有在master數(shù)據(jù)庫(kù)中才有的系統(tǒng)表有:sysconfigures、sysdatabases、sysdevices、syslogins等;在用戶數(shù)據(jù)庫(kù)和系統(tǒng)數(shù)據(jù)庫(kù)中都有的系統(tǒng)表有: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 說(shuō)明見(jiàn)附錄表1 (2)視圖(Views) 視圖是查看一張或幾張表中的數(shù)據(jù)的一種方式。通過(guò)將一張或幾張表中的一部分?jǐn)?shù)據(jù)進(jìn)行組合得到視圖。視圖看上去與表非常相象,但與表還是有著本質(zhì)的區(qū)別。通過(guò)視圖看到的數(shù)據(jù)實(shí)際上都是存放在表中的,在數(shù)據(jù)庫(kù)中僅存在視圖的定義。 使用視圖的好處是: ● 操作方便 ● 安全性 (3)索引(Index) 索引是對(duì)字段生成的,用于加快數(shù)據(jù)的檢索。在Sybase數(shù)據(jù)庫(kù)中,索引是由系統(tǒng)自動(dòng)管理的,也就是說(shuō),Sybase的索引操作對(duì)用戶是透明的。表的索引一旦建立,系統(tǒng)會(huì)自動(dòng)對(duì)其進(jìn)行更新維護(hù)以使它與相應(yīng)表對(duì)應(yīng)一致;操作時(shí),用戶無(wú)須指定索引,系統(tǒng)會(huì)自動(dòng)確定是否使用索引進(jìn)行操作。 Sybase支持三種不同類型的索引,一是復(fù)合索引,即包含幾個(gè)列的索引;二是唯一性索引,即任意兩行中的索引列不能有相同的取值;三是簇類索引(Clustered indexes)和非簇類索引(Nonclustered indexs),簇類索引使SQL服務(wù)器不斷重排表行的物理順序以使其與邏輯索引順序相一致,非簇類索引則不需要表行的物理順序與邏輯順序一致。每個(gè)表最多只能建立一個(gè)簇類索引,非簇類索引則可建立多個(gè)。與非簇類索引相比,簇類索引的檢索速度要快。應(yīng)當(dāng)在建立任何非簇類索引以前建立簇類索引。 (4)存儲(chǔ)過(guò)程(Stored procedures) 存儲(chǔ)過(guò)程是用T-SQL語(yǔ)言編寫(xiě)成的SQL子例程,它存儲(chǔ)于SQL服務(wù)器上供用戶調(diào)用執(zhí)行。與一般的SQL語(yǔ)句和批處理語(yǔ)句不同的是,存儲(chǔ)過(guò)程是經(jīng)過(guò)預(yù)編譯的。當(dāng)首次運(yùn)行一個(gè)存儲(chǔ)過(guò)程時(shí),SQL Server的查詢處理器將對(duì)其分析,并產(chǎn)生最終的執(zhí)行方案。由于查詢處理的大部分工作已經(jīng)完成,所以以后執(zhí)行存儲(chǔ)過(guò)程時(shí)速度將會(huì)很快。執(zhí)行存儲(chǔ)過(guò)程時(shí)可帶參數(shù)并可調(diào)用其他存儲(chǔ)過(guò)程,執(zhí)行完畢后返回信息以指示是否成功完成相應(yīng)操作。存儲(chǔ)過(guò)程有兩種:一種是SQL服務(wù)器安裝時(shí)自動(dòng)建立的系統(tǒng)存儲(chǔ)過(guò)程(系統(tǒng)過(guò)程),另一種是用戶自己創(chuàng)建的存儲(chǔ)過(guò)程。 系統(tǒng)過(guò)程是用于系統(tǒng)管理,并且為用戶提供了從事數(shù)據(jù)庫(kù)管理的一種途徑。這些系統(tǒng)過(guò)程都是以sp_開(kāi)頭的,它們都放在master數(shù)據(jù)庫(kù)中且隸屬于sa(系統(tǒng)管理員) 。也有很多可以在任一個(gè)數(shù)據(jù)庫(kù)中運(yùn)行的系統(tǒng)過(guò)程。 常見(jiàn)的系統(tǒng)過(guò)程有: Sp_addgroup 在當(dāng)前數(shù)據(jù)庫(kù)中建立一個(gè)數(shù)據(jù)庫(kù)用戶組 Sp_addlogin 建立一個(gè)SQL服務(wù)器用戶 Sp_adduser 在當(dāng)前數(shù)據(jù)庫(kù)中增加一個(gè)用戶 sp_changegroup 改變數(shù)據(jù)庫(kù)用戶組 Sp_dboption 查詢或改變數(shù)據(jù)庫(kù)系統(tǒng)設(shè)置 Sp_dropdevice 刪除設(shè)備 Sp_dropgroup 刪除組 Sp_droplogin 刪除賬號(hào) Sp_help 查詢數(shù)據(jù)庫(kù)對(duì)象及所有數(shù)據(jù)庫(kù)信息 Sp_helpdb 查詢數(shù)據(jù)庫(kù)信息 Sp_helpdevice 查詢?cè)O(shè)備信息 Sp_helpgroup 查詢組信息 Sp_helpindex 查詢給定表信息 Sp_helpuser 查詢用戶信息 Sp_lock 查詢當(dāng)前加鎖信息 Sp_monitor 查詢SQL服務(wù)器統(tǒng)計(jì)信息 Sp_password 改變登錄賬號(hào)口令 Sp_spaceused 查詢表中的行數(shù)、數(shù)據(jù)頁(yè)數(shù)及空間大小 Sp_who 查詢當(dāng)前用戶及過(guò)程信息 Sp_syntax 查詢操作語(yǔ)法 Sp_configure 配置系統(tǒng)參數(shù) 例: 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)觸發(fā)器(Triggers) 觸發(fā)器是一種特殊的存儲(chǔ)過(guò)程,用來(lái)維護(hù)不同表中的相關(guān)數(shù)據(jù)的一致性。當(dāng)在一張表中插入、刪除和修改數(shù)據(jù)時(shí),觸發(fā)器就會(huì)觸發(fā)另一個(gè)存儲(chǔ)過(guò)程,從而保持?jǐn)?shù)據(jù)的一致性。 (6)缺省與規(guī)則(Defaults and rules) 缺省是在數(shù)據(jù)錄入時(shí),若用戶沒(méi)有輸入數(shù)據(jù),SQL Server自動(dòng)輸入的值。 規(guī)則是可以理解為對(duì)數(shù)據(jù)庫(kù)、某一列、某用戶數(shù)據(jù)類型的限制。 三、SQL 查詢語(yǔ)言 SQL不僅包括查詢數(shù)據(jù)的有關(guān)命令,還包括創(chuàng)建數(shù)據(jù)庫(kù)及其對(duì)象,增、刪、改數(shù)據(jù)等功能。分別定義為數(shù)據(jù)查詢語(yǔ)言,數(shù)據(jù)定義語(yǔ)言及數(shù)據(jù)操作語(yǔ)言。這里先介紹數(shù)據(jù)查詢語(yǔ)言。其基本句法為: Select select_list from table_list where search_conditions 1、簡(jiǎn)單查詢 A、選擇若干列 Select expression [,expression]... From table_list B、選擇若干行 查出電話號(hào)碼以415到頭的記錄 Select * from code_1th where tel like '415%' 查詢中消除值重復(fù)的行 Select distinct tel from code_1th 對(duì)Text 和 char 可用 like ,其中可用通配符‘%’及‘-’,分別代表多個(gè)字符和單個(gè)字符。 其他常用查詢條件有:(出text類型除外) 大小比較 =、>、<、>=、<=、!=、!>、!< 范圍確定 between exp1 and exp2 /net between exp1 and exp2 列表或集合 in (exp1[,exp2,[...]]) not in (...) 謂詞 like 多重條件 and or not 2、連接查詢 A、等值連接和不等值連接:通過(guò)‘=’來(lái)比較兩個(gè)表之間的數(shù)據(jù)時(shí),稱為等值連接;而通過(guò)其他比較符時(shí),稱為不等值連接 等值連接: Select * from publishers, authors where publishers.city=authors.city 不等值連接: B、自然連接: 在連接的目標(biāo)列中相同名的列只保留一個(gè) Select publishers.pub_id publishers.pub_name, publishers.state, authors.* From publishers, authors where publishers.city=authors.city 3、子查詢 A、表達(dá)式子查詢 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、相關(guān)查詢 相關(guān)查詢即嵌套查詢依賴于外部父查詢的值,嵌套查詢要重復(fù)執(zhí)行若干次。 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、集函數(shù)、分組與排序 A、對(duì)查詢結(jié)果進(jìn)行聚集處理 聚集函數(shù): 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 子句對(duì)查詢結(jié)果分組 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 不能用聚集函數(shù)。 C、用Order by 對(duì)查詢結(jié)果進(jìn)行排序 Select type ,avg(price) from titles group by type order by avg(price) D、Compute 子句 完成基于每一組中的值的聚集運(yùn)算,聚集值作為一個(gè)新行出現(xiàn)在查詢結(jié)果中。 Select type ,price advance from titles order by type compute sum(price), sum(advance) by type 四、數(shù)據(jù)庫(kù)、數(shù)據(jù)庫(kù)對(duì)象的增、刪、改 1、數(shù)據(jù)庫(kù) x 打開(kāi)數(shù)據(jù)庫(kù) Use tele114 x 創(chuàng)建數(shù)據(jù)庫(kù)。擁有創(chuàng)建數(shù)據(jù)庫(kù)權(quán)利的用戶可以創(chuàng)建自己的數(shù)據(jù)庫(kù)。 CREATE DATABASE tele114 ON tele114_def01=10,tele114_run01=200,tele114_idx01=200 LOG ON tele114_log01=80 x 刪除數(shù)據(jù)庫(kù) Drop database tele114 x 修改數(shù)據(jù)庫(kù) Alter database tele114 on tele114_run02=100, tele114_idx02=100 2、表 x 建表 create table spec_code ( No tinyint not null, /*特編號(hào)(0--99)*/ Name varchar(50) null, /*名稱*/ Addr varchar(50) null, /*地址*/ Tel varchar(8) null, /*電話號(hào)碼*/ StaffNo varchar(4) not null /*錄入員工號(hào)*/ ) on segrun /*將表放在segrun段上*/ x 刪除表 Drop tabel tele114_1th x 修改表,在表中增加新的列(用這個(gè)命令增加的列必須允許null值) Alter table friends_etc add country varchar(20 ) null x 表級(jí)或列級(jí)約束 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 指定默認(rèn)值 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 不允許空值,常用來(lái)產(chǎn)生唯一的聚集索引,unique 允許空值,常用來(lái)產(chǎn)生唯一的非聚集索引 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 : 建立聚集索引,使得數(shù)據(jù)行的邏輯順序與物理順序一致,查詢速度較快;每個(gè)表僅允許建立一個(gè)唯一性索引。(非聚集索引nonclustered) On segrun:將索引放在segrun上 x 刪除索引: drop index code_1th.code1thidx1 4、 默認(rèn):當(dāng)用戶沒(méi)有顯示地為某一列賦值時(shí),SQL SERVER 為該列插入的值 x 創(chuàng)建默認(rèn)值CA,把默認(rèn)值CA用到friends_etc表中的State列上 Creat default statedflt Go Sp_bindefault statedflt, "frends_etc.state" go x 斷離默認(rèn) Sp_unbindefault "frends_etc.state" x 刪除默認(rèn) Drop default statedflt 5、規(guī)則:可以理解為對(duì)數(shù)據(jù)庫(kù)、某一列、某用戶數(shù)據(jù)類型的限制.規(guī)則中的任何變量名必須 冠以@,不能直接引用列或其他數(shù)據(jù)庫(kù)對(duì)象。 x 創(chuàng)建規(guī)則并把他關(guān)聯(lián)到用戶定義的數(shù)據(jù)類型P#上 Create rule phonerule as @phone like 415[0-9][0-9][0-9][0-9] Sp_bindrule phonerule ,"p#" x 斷離規(guī)則 Sp_unbindrule "p#" x 刪除規(guī)則 Drop rule phonerule 6視圖:視圖是從一個(gè)或多個(gè)基本表或其他視圖上導(dǎo)出的表,可以在視圖上進(jìn)行增、刪、改 x 創(chuàng)建視圖 創(chuàng)建視圖的句法為: create view view_name (column_1,...,column_n) as select_statements 例:在authors表和publishers表上定義一個(gè)視圖如下: Create view cities (authorname, acity, publishername, pcity) As select au_lname,authors.city, pub_name, publishers.city From authors, publishers x 通過(guò)使用Drop view 命令來(lái)撤消一個(gè)視圖 Drop view view_name 7、存儲(chǔ)過(guò)程 x 創(chuàng)建存儲(chǔ)過(guò)程 CREATE PROCEDURE procedure_name [(para1[,para2, ...])] As sql_statements 存儲(chǔ)工程的參數(shù)名必須一@開(kāi)頭,包括@最長(zhǎng)為30個(gè)字符。 x 執(zhí)行存儲(chǔ)過(guò)程 EXEC[UTE] procedure_name [(para1[,para2, ...])] 存儲(chǔ)過(guò)程能夠返回一個(gè)整數(shù),用來(lái)指示存儲(chǔ)過(guò)程執(zhí)行是完全錯(cuò)誤還是錯(cuò)誤。SQL SERVER 用0指示成功的返回,-1~-99指示不同的錯(cuò)誤。當(dāng)前所用的0及-1~-14的含義如表所示。 值 含義 0 過(guò)程執(zhí)行無(wú)錯(cuò) -1 丟失對(duì)象 -2 數(shù)據(jù)類型錯(cuò)誤 -3 進(jìn)程被選作死鎖的犧牲品 -4 權(quán)限錯(cuò)誤 -5 語(yǔ)法錯(cuò)誤 -6 各種用戶錯(cuò)誤 -7 資源錯(cuò)誤:如空間錯(cuò)誤 -8 非嚴(yán)重的內(nèi)部錯(cuò)誤 -9 觸及系統(tǒng)限制 -10 嚴(yán)重的內(nèi)部不一致 -11 嚴(yán)重的內(nèi)部不一致 -12 表或索引壞了 -13 數(shù)據(jù)庫(kù)壞了 -14 硬件錯(cuò)誤 x 更改存儲(chǔ)過(guò)程名 Sp_rename objname newname x 刪除存儲(chǔ)過(guò)程 DROP PROCEDURE procedure_name 8 、觸發(fā)器 x 創(chuàng)建觸發(fā)器 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 觸發(fā)器的刪除 DROP TRIGGER [owner.]trigger_name 五、批處理和流控制語(yǔ)言 1、批處理 SYBASE系統(tǒng)允許用戶將若干條相關(guān)的語(yǔ)句組成一個(gè)整體,交給系統(tǒng)同時(shí)處理。 一批語(yǔ) 句的結(jié)束以go語(yǔ)句為標(biāo)志。嚴(yán)格地講,單條SQL語(yǔ)句也是一個(gè)批處理。 例:Select count(*) from titles Select count(*) from authors Go 也可以將一組SQL命令放在一個(gè)操作系統(tǒng)文件中,再將這個(gè)文件交給isql執(zhí)行。 2、流控制語(yǔ)言 流控制語(yǔ)句 在批處理中,我們可以加入流程控制語(yǔ)句,從而達(dá)到編程的目的。在T-SQL語(yǔ)言中, 流控制語(yǔ)句有: · 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" 使用批處理有以下規(guī)則: x CREATE PROCEDURE、CREATE RULE、 CREATE DEFAULT 、CREATE TRIGGER 以及CREATE VIEWE 必須單獨(dú)交給SQL SERVER, 他們不能和別的SQL語(yǔ)句一起作批處理(CREATE DATABASE、CREATE TABLE 和CREATE INDEX 能和其他語(yǔ)句組成批處理)。 x 規(guī)則和默認(rèn)值都不能在一組批處理中剛關(guān)聯(lián)就使用。 x USE命令必須在引用這個(gè)數(shù)據(jù)庫(kù)的對(duì)象的語(yǔ)句的前一組批處理中提交。 x 不能剛刪除(DROP)一個(gè)數(shù)據(jù)庫(kù)對(duì)象又在同一批處理中重新創(chuàng)建他。 x 用SET語(yǔ)句做的任何選擇設(shè)置在批處理尾處發(fā)生作用。可以把SET語(yǔ)句和查詢語(yǔ)句放入一組批處理中,但SET選擇項(xiàng)不能在這組批處理中使用。 六、系統(tǒng)的啟動(dòng)和關(guān)閉 1、啟動(dòng)SQL Server 應(yīng)用SQL Server安裝程序(sybinit)創(chuàng)建SQL Server或Backup Server, 默認(rèn)文件名為RUN_SYBASE 和RUN_SYB_BACKUP,放在¥SYBASE/INSTALL目錄下。 Startserver 用來(lái)啟動(dòng)一SQL Server 或Backup Server: Startserver -f RUN_SYBASE Startserver -f RUN_SYB_BAKUP 可以通過(guò)showserver查看SQL ServerBackup Server是否已經(jīng)啟動(dòng),在$SYASE/INSTALL下運(yùn)行showserver 查看SQL Server 是否啟動(dòng) UID PID PPID C STIME TTY TIME CMD (Backup Server已啟動(dòng)的信息) 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已啟動(dòng)的信息) 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的啟動(dòng)過(guò)程 master數(shù)據(jù)庫(kù)啟動(dòng)-----------鄐ybsystemproces數(shù)據(jù)庫(kù)啟動(dòng)-----------嗲蹇誸empdb---------嗥舳淥菘 -------嗍攣竦幕毓 2、啟動(dòng)SQL Server的單用戶模式 如果要恢復(fù)一已被損壞的master數(shù)據(jù)庫(kù),則必須要啟動(dòng)SQL Server的單用戶模式。單用戶模式下僅允許一個(gè)系統(tǒng)管理員向SQL Server注冊(cè)。 Startserver -f RUN_SYBASE -m 3、關(guān)閉服務(wù)器 關(guān)閉SQL Server可以在isql中使用T-SQL命令: 關(guān)閉SQL備服務(wù)器 shutdown SYB_BACKUP 關(guān)閉SQL主服務(wù)器 shutdown [with nowait] 4、Sybase數(shù)據(jù)庫(kù)目錄說(shuō)明 /usr/sybase =.. 主目錄 .. /install 安裝程序 ../bin 執(zhí)行程序 ../include 庫(kù)函數(shù)文件 ../lib 宿主語(yǔ)言庫(kù) ../doc 聯(lián)機(jī)文件 ../scripts SQL 動(dòng)態(tài)描述文件 ../help 幫助信息 ../locales 語(yǔ)言限制文件 ../termdef 終端定義文件 ../charsets 字符集文件 七、SQL Server的用戶及權(quán)限 Sybase中的用戶分為兩種:SQL服務(wù)器用戶(登錄賬號(hào))和數(shù)據(jù)庫(kù)用戶。 安裝完SQL服務(wù)器后,系統(tǒng)自動(dòng)建立一個(gè)SQL服務(wù)器用戶sa,口令為空,即系統(tǒng)管理員,他對(duì)整個(gè)系統(tǒng)有操作權(quán),其他用戶均由系統(tǒng)管理員建立。 在SQL Server中有三種特殊的用戶:系統(tǒng)管理員、用戶數(shù)據(jù)庫(kù)所有者(建立相應(yīng)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)用戶)DBO、一般用戶。系統(tǒng)管理員對(duì)整個(gè)系統(tǒng)有操作權(quán);用戶數(shù)據(jù)庫(kù)所有者對(duì)他所建立的數(shù)據(jù)庫(kù)具有全部操作權(quán)利;一般用戶對(duì)給定的數(shù)據(jù)庫(kù)只有被授權(quán)的操作權(quán)限。 數(shù)據(jù)庫(kù)用戶一般可分為用戶組,任一數(shù)據(jù)庫(kù)在建立后即被賦予一個(gè)用戶組public。 1、建立SQL服務(wù)器用戶名(登錄賬號(hào)) 作為一個(gè)用戶,為了使用SQL Server,他必須在SQL Server上有一個(gè)SQL服務(wù)器用戶名(登錄賬號(hào))。這個(gè)賬號(hào)是系統(tǒng)管理員通過(guò)sp_addlogin來(lái)增加的。 sp_addlogin 登錄名,口令,庫(kù)名,語(yǔ)言,全名 例:建立用戶zhang, 口令為zhangling(最低六位),全名為Zhang ling 1> sp_addlogin zhang,zhangling,null,null,"Zhang ling" 2> go 3> select * from syslogins 4> go 2、增加數(shù)據(jù)庫(kù)用戶名 同樣,為了使用SQL Server上的數(shù)據(jù)庫(kù),他必須在數(shù)據(jù)庫(kù)中有一個(gè)用戶名,這個(gè)用戶名是數(shù)據(jù)庫(kù)所有者通過(guò)sp_adduser來(lái)增加的。數(shù)據(jù)庫(kù)用戶名不必和用戶帳戶一樣,而且在不同的數(shù)據(jù)庫(kù)中用戶名可以不同。多個(gè)用戶可以有相同的SQL Server帳戶。同樣,多個(gè)SQL Server帳戶可以有相同的數(shù)據(jù)庫(kù)名。 sp_adduser 登錄名,別名,組名 登錄名為用戶的SQL服務(wù)器登錄名;別名為用戶在數(shù)據(jù)庫(kù)中的用戶名;組名為用戶所屬的數(shù)據(jù)庫(kù)用戶組。 例:用戶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、數(shù)據(jù)庫(kù)操作授權(quán) grant 命令序列 to 用戶名 A. 系統(tǒng)管理員可以授予其他用戶CREATE DATABASE的權(quán)限,使其他用戶可以成為數(shù)據(jù)庫(kù)所有者。 B. 數(shù)據(jù)庫(kù)所有者在他所擁有的數(shù)據(jù)庫(kù)中,可以授予其他用戶的權(quán)限有: l CREATE TABLE ------------------- 建表 lCREATE DEFAULT ------------------ 建缺省 lCREATE RULE ------------------- 建規(guī)則 lCREATE PROCedure ------------------ 建存儲(chǔ)過(guò)程 lCREATE VIEW ------------------- 建視圖 lDUMP DATABASE ------------------- 備份數(shù)據(jù)庫(kù) lDUMP TRANsaction ------------------ 備份日志 C. 數(shù)據(jù)庫(kù)對(duì)象所有者可以授予其他用戶的操作權(quán)限有: l SELECT l UPDATE l INSERT l EXECute l DELETE l REFERENCE 例:授予zhang1在數(shù)據(jù)庫(kù)tele114上建表,建視圖,建存儲(chǔ)過(guò)程;對(duì)表students有select,reference權(quán);對(duì)name,native字段有update權(quán)。 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 八、數(shù)據(jù)庫(kù)備份與恢復(fù) SQL Server提供了兩種不同類型的恢復(fù):一類是系統(tǒng)自動(dòng)完成的恢復(fù);另一類是人工完成的恢復(fù)。 1.系統(tǒng)軟件故障恢復(fù) 系統(tǒng)自動(dòng)恢復(fù)是在系統(tǒng)軟件出現(xiàn)故障的情況下通過(guò)重新啟動(dòng)SQL Server進(jìn)行恢復(fù)。 自動(dòng)恢復(fù)從master數(shù)據(jù)庫(kù)開(kāi)始,然后是model數(shù)據(jù)庫(kù),再是temporary數(shù)據(jù)庫(kù),最后是用戶數(shù)據(jù)庫(kù)。在每個(gè)數(shù)據(jù)庫(kù)上,恢復(fù)機(jī)制觀察事務(wù)日志。如果日志寫(xiě)入比數(shù)據(jù)庫(kù)更近的數(shù)據(jù),則向前恢復(fù)數(shù)據(jù)庫(kù)。如果事務(wù)尚未完成,則要回退它們。 所謂事務(wù)日志就是一張系統(tǒng)表,syslogs。在這張表中記錄著對(duì)數(shù)據(jù)庫(kù)的更新請(qǐng)求,例如插入、修改和刪除。查詢操作不記入事務(wù)日志中。 2.介質(zhì)故障的恢復(fù) 一旦介質(zhì)發(fā)生故障,只有通過(guò)以前備份的數(shù)據(jù)庫(kù)和事務(wù)日志才能恢復(fù)數(shù)據(jù)庫(kù),為此我們需要經(jīng)常備份數(shù)據(jù)庫(kù)和事務(wù)日志。備份數(shù)據(jù)庫(kù)和事務(wù)日志我們使用dump命令,而恢復(fù)數(shù)據(jù)庫(kù)和事務(wù)日志我們使用load命令。 與創(chuàng)建數(shù)據(jù)庫(kù)需要一個(gè)數(shù)據(jù)庫(kù)設(shè)備類似,我們備份數(shù)據(jù)庫(kù)和事務(wù)日志也需要一個(gè)卸出設(shè)備。增加卸出設(shè)備可以通過(guò)系統(tǒng)過(guò)程sp_addumpdevice來(lái)實(shí)現(xiàn)。卸出設(shè)備可以是磁盤(pán)、磁帶或操作系統(tǒng)文件。 sp_addumpdevice "type",device_name,physicalname 例: sp_addumpdevice "disk", "db114", "/usr/sybase/zyl114.bak",1 (1) 備份數(shù)據(jù)庫(kù)和事務(wù)日志 備份數(shù)據(jù)庫(kù)的語(yǔ)法為: dump database database_name to dump_device 例如: dump database tele114 to db114 備份事務(wù)日志的語(yǔ)法為: dump transaction database_name to dump_device [with truncate_only | with no_log | with no_truncate] 前兩項(xiàng)在日志中刪除提交的事務(wù),后一項(xiàng)不刪除。 在備份數(shù)據(jù)庫(kù)前的所有事務(wù)日志備份都是沒(méi)有意義的。我們一般不經(jīng)常備份數(shù)據(jù)庫(kù),但我們要經(jīng)常備份事務(wù)日志。這是因?yàn)閭浞菔聞?wù)日志比備份數(shù)據(jù)庫(kù)需要更少的時(shí)間和存儲(chǔ)空間。 (2)恢復(fù)用戶數(shù)據(jù)庫(kù) 要恢復(fù)已被破壞的數(shù)據(jù)庫(kù),可以按如下步驟進(jìn)行: · 用帶no_truncate選項(xiàng)的dump命令卸出用戶數(shù)據(jù)庫(kù)事務(wù)日志。 · 用和被破壞的數(shù)據(jù)庫(kù)的同樣的結(jié)構(gòu)建立一個(gè)新的數(shù)據(jù)庫(kù)。 · 用load命令重新裝入數(shù)據(jù)庫(kù)和事務(wù)日志。 裝入數(shù)據(jù)庫(kù)的語(yǔ)法為: load database database_name from file_name 裝入事務(wù)日志的語(yǔ)法為: load transaction database_name from file_name 例:數(shù)據(jù)庫(kù)備份 1> dump db_name to file_name 2> go 數(shù)據(jù)庫(kù)恢復(fù) 1> load db_name from file_name 2> go 日志備份 1> dump transaction db_name to file_name 2> go 日志恢復(fù) 1> load transaction db_name from file_name 2> go 日志刪除 1> dump transaction db_name with truncate_only 2> Go (3)master數(shù)據(jù)庫(kù)的恢復(fù) A、保存系統(tǒng)表的拷貝:sysdatabases、sysdevices、sysusages、sysloginroles和Syslogins。 B、轉(zhuǎn)儲(chǔ)主設(shè)備上的用戶數(shù)據(jù)庫(kù)。 C、關(guān)閉SQL Server并使用buildmaster建立新的master數(shù)據(jù)庫(kù)或主設(shè)備。 Buildmaster -m ...僅重建master數(shù)據(jù)庫(kù) Buildmaster ...重建主設(shè)備 D、已單用戶模式啟動(dòng)SQL Server( Master-Recover ) Startserver -f RUN_服務(wù)器名 -m E、若master數(shù)據(jù)庫(kù)用alter database 命令擴(kuò)展過(guò),嚴(yán)格重建它在sysusages中的分配。 F、若Backup Server 的網(wǎng)絡(luò)名(接口文件中的名字)不是SYB_BACKUP,在sysservers中改動(dòng)網(wǎng)絡(luò)名。 Update sysservers set srvnetname="PRODUCTION_BSRV" where srvname="SYB_BACKUP" G、使用showserver查看,檢查確保Backup Server正運(yùn)行,若有必要,重啟Bakup Server H、裝載master的備份。 Load database master from 'master.bak' Load database執(zhí)行成功后,SQL Server 自動(dòng)關(guān)閉。 I、若自master的上次轉(zhuǎn)儲(chǔ)以來(lái)增加過(guò)數(shù)據(jù)庫(kù)設(shè)備,執(zhí)行disk reinit命令以重建sysdevices。 J、若執(zhí)行了disk reinit,或自上次轉(zhuǎn)儲(chǔ)以來(lái)使用過(guò)create database或alter database,執(zhí)行disk refit 重建sysusages和sysdatabases表,執(zhí)行完畢后SQL Server自動(dòng)關(guān)閉。 K、檢查一致性:比較sysusages和sysdatabases的備份和新的聯(lián)機(jī)版本,對(duì)每個(gè)數(shù)據(jù)庫(kù)執(zhí)行dbcc checkalloc, 并檢查每個(gè)數(shù)據(jù)庫(kù)中重要的表;若發(fā)現(xiàn)錯(cuò)誤重新執(zhí)行disk reinit和disk refit。 L、若恢復(fù)了整個(gè)主設(shè)備,則恢復(fù)model數(shù)據(jù)庫(kù)。 Cd $SYBASE/scripts Setenv DSQUERY 服務(wù)器名 Isql -Usa -P口令 -S服務(wù)器名 M、重新裝載所有受影響的用戶數(shù)據(jù)庫(kù)。 N、恢復(fù)服務(wù)器用戶ID。 O、以多用戶模式重新啟動(dòng)SQL Server。 (4)恢復(fù)model 數(shù)據(jù)庫(kù) Buildmaster -d/設(shè)備名 -x (5)恢復(fù)sybsystemproces數(shù)據(jù)庫(kù) A、刪除sybsystemproces數(shù)據(jù)庫(kù)(若物理磁盤(pán)損壞,刪除設(shè)備,使用Disk init 重建設(shè)備) B、重建數(shù)據(jù)庫(kù) Create database sybsystemporces on 設(shè)備名=數(shù)據(jù)庫(kù)大小 C、恢復(fù)數(shù)據(jù)庫(kù) Cd $SYBASE/scripts Setenv DSQUERY 服務(wù)器名 Isql -Usa -P口令 -S服務(wù)器名 九、幾個(gè)實(shí)用程序 1、bcp 以用戶指定的形式將數(shù)據(jù)庫(kù)表拷貝到操作系統(tǒng)文件中,或從操作系統(tǒng)文件中拷貝一個(gè)數(shù)據(jù)庫(kù)表。提供了在數(shù)據(jù)庫(kù)表和操作系統(tǒng)文件之間傳遞數(shù)據(jù)的一個(gè)方便、快速的方法。 bcp [[database-name.]owner.]table_name {in|out} datafile [各種開(kāi)關(guān)] 其中,table_name是想要拷貝的數(shù)據(jù)庫(kù)表名;{in/out}為拷貝方向,in表示從文件到數(shù)據(jù)庫(kù)的拷貝,out表示從數(shù)據(jù)庫(kù)到文件的拷貝;datafile是操作系統(tǒng)文件的全路徑名。 常用的開(kāi)關(guān)有: -f formatfile----存有上次使用bcp處理同一表時(shí)得到的應(yīng)答文件的全路徑名,格式文件名的擴(kuò)展名為.fmt。使用格式文件,省去了再重復(fù)回答前面的問(wèn)題。 -U username----允許用戶指定一個(gè)注冊(cè)名。 -P password----允許用戶指定當(dāng)前的SQL Server口令。如果未使用-P選項(xiàng),bcp將提示輸入一個(gè)口令。 -S Server----允許用戶指定與其相連的SQL Server的名字。 例:在客戶端備份tele114數(shù)據(jù)庫(kù)中code_1th表,按照code_1th.fmt的格式 c> bcp tele114..code_1th out code_1th.txt -杅code_1th.fmt 朥sa 朠 2、 isql 與SQL Server交互的SQL句法分析器。 isql [各種開(kāi)關(guān)] 常用的開(kāi)關(guān)有: -U username----允許用戶指定一個(gè)注冊(cè)名。 -P password----允許用戶指定當(dāng)前的SQL Server的口令。 -S Server----允許用戶指定與其連接的SQL Server的名稱。 -i輸入文件 -o輸出文件 終止一條命令:go 清除查詢緩沖:reset 調(diào)用編輯器:vi 執(zhí)行一條操作系統(tǒng)命令:??!命令 退出isql:quit或exit 3、showserver 顯示當(dāng)前在本機(jī)上正在運(yùn)行的SQL Server。 showserver 4、startserver 啟動(dòng)SQL Server。 startserver [各種開(kāi)關(guān)] 常用的開(kāi)關(guān)有: -f runserverfile----指定一個(gè)運(yùn)行服務(wù)器文件名,每次重啟SQL Server時(shí),以這個(gè)文件為參考。在我們的實(shí)際機(jī)器上,這個(gè)文件名為RUN_SYBASE或RUN_SYB_BACKUP。 -m ----以單用戶的方式啟動(dòng)SQL Server。這個(gè)方式用于恢復(fù)master數(shù)據(jù)庫(kù)。 5、syman 顯示聯(lián)機(jī)的庫(kù)例程,系統(tǒng)過(guò)程及實(shí)用程序手冊(cè)。 syman [keyword] syman實(shí)用程序的聯(lián)機(jī)文本文件存放在$SYBASE下的doc子目錄中。 6、dbcc 數(shù)據(jù)庫(kù)一致性檢查 Dbcc 用來(lái)檢查一個(gè)數(shù)據(jù)庫(kù)的邏輯一致性和物理一致性。通常在下面的情況下使用dbcc: x 常規(guī)數(shù)據(jù)庫(kù)維護(hù) x 確定當(dāng)一個(gè)系統(tǒng)錯(cuò)誤后可能損壞的范圍 x 在備份數(shù)據(jù)庫(kù)之前 x 懷疑數(shù)據(jù)庫(kù)受到損壞。 dbcc有兩個(gè)主要功能:可檢查分配表結(jié)構(gòu)(命令checkalloc、tablealloc和Indexalloc);可檢查頁(yè)鏈接和頁(yè)級(jí)、行級(jí)上的數(shù)據(jù)指針。 只有表屬主可以用checktable、fix-text和reindex選項(xiàng)執(zhí)行dbcc命令。只有數(shù)據(jù)庫(kù)屬主可以使用checkdb、checkalloc、checkcatalog、indexalloc和tablealloc選項(xiàng)。只有系統(tǒng)管理員可以使用dbrepair選項(xiàng) dbcc命令的完整語(yǔ)法格式如下: Dbcc {checktable({表明|表標(biāo)識(shí)}[,Skip_ncindex])| Checkdb [(數(shù)據(jù)庫(kù)名[,skip_ncindex])]| Checkalloc [(數(shù)據(jù)庫(kù)名[,fix|nofix])]| Talbealloc ({表明|表標(biāo)識(shí)}[,{full|optimized|fast|null}[,fix|nofix]]))| Indexalloc ({表明|表標(biāo)識(shí)},索引標(biāo)識(shí)[,{full|optimized|fast|null}[,fix|nofix]]))| Checkcatalog [(數(shù)據(jù)庫(kù)名)] Dbrepair (數(shù)據(jù)庫(kù)名,dropdb)| Reindex ({表明|表標(biāo)識(shí)})| fix_text({表明|表標(biāo)識(shí)})} 十 、SQL客戶端軟件 1. DOS狀態(tài)下SQL客戶端軟件 軟件位于c:\sqlbin 運(yùn)行步驟: 運(yùn)行TCPIP協(xié)議程序tcp.bat c:\nwclient\lsl /c:\nwclient\net.cfg c:\nwclient\ne2000 c:\nwclient\tcpip (2) ping 129.6.114.201 (服務(wù)器地址) 返回129.6.114.201 is alive 正常 返回No response from 129.6.114.201 為異常 (3)運(yùn)行sybclenv.bat------------------ Sybase的DOS接口啟動(dòng)程序,內(nèi)容如下: set path=c:\sqlbin\binr;%path% -------------Sybase的DOS接口程序所在目錄 set dsquery=129.6.114.201,4114--------------連接服務(wù)器IP地址和端口號(hào) c:\sqlbin\binr\dbnovtcp C:\sqlbin\binr\rmineti dbping 129.6.114.201------------檢查是否連通SYBASE服務(wù)器 連接成功出現(xiàn)“Successfully opened network connection" (5) isql 朥sa 朠 1> sp_help 2> go 十一、附錄 附錄1:只有在master數(shù)據(jù)庫(kù)中才能有的系統(tǒng)表 系統(tǒng)表名 表中的內(nèi)容 Sysconfigures 一行記錄了用戶可設(shè)置的配置參數(shù) Syscurconfigs 有關(guān)SQL Server當(dāng)前正使用的配置參數(shù)情況 Sysdatabases 一行記錄了SQL Server中的一個(gè)數(shù)據(jù)庫(kù) Sysdevices 一行記錄了數(shù)據(jù)庫(kù)的每一磁帶轉(zhuǎn)儲(chǔ)設(shè)備,磁盤(pán)轉(zhuǎn)儲(chǔ)設(shè)備,數(shù)據(jù)庫(kù)設(shè)備和磁盤(pán)分區(qū) 設(shè)備和磁盤(pán)分區(qū) Syslocks 有關(guān)動(dòng)態(tài)鎖的情況 Syslogins 一行記錄了每一有效的SQL Server的用戶賬號(hào) Sysmessages 一行記錄了每一系統(tǒng)錯(cuò)誤或警告 Sysprocesses 有關(guān)Server進(jìn)程的情況 Sysremotelogins 一行記錄了一個(gè)遠(yuǎn)程用戶 Sysservers 一行記錄了一個(gè)遠(yuǎn)程SQL Server 附錄2:Sysusages 一行記錄了分配給一個(gè)數(shù)據(jù)庫(kù)的每一個(gè)磁盤(pán)分析 系統(tǒng)表名 表中的內(nèi)容 Sysalternates 一行記錄了SQL Server用戶在當(dāng)前數(shù)據(jù)庫(kù)中的標(biāo)識(shí) syscoumns 一行記錄了一個(gè)表或視圖的每一列,一個(gè)存儲(chǔ)過(guò)程的每一參數(shù) syscomments 一行或多行記錄了每一視圖、規(guī)則、缺省值、觸發(fā)器和存儲(chǔ)過(guò)程 sysdepends 一行記錄了由一個(gè)過(guò)程、視圖或觸發(fā)器所參照的每一過(guò)程,視圖或表 Syskeys 一行記錄了每一主碼,外碼或公用碼 Syslogs sysobjects 一行記錄了每一表、視圖、存儲(chǔ)過(guò)程、日志、規(guī)則、缺省值、觸發(fā)器和臨時(shí)表(僅在tempdb中) sysprocedures 一行記錄了每一視圖、規(guī)則、缺省、觸發(fā)器和過(guò)程 syprotects 記錄用戶的權(quán)限信息 sysegments 一行記錄了每一片段(命名的的磁盤(pán)分片匯集) systypes 一行記錄了每一由系統(tǒng)提供的和用戶定義的數(shù)據(jù)類型 sysusers 一行記錄了一個(gè)數(shù)據(jù)庫(kù)的合法用戶,或用戶組 附錄3: 由SQL Server提供的系統(tǒng)過(guò)程功能和執(zhí)行權(quán) 過(guò)程名 功能 執(zhí)行權(quán)限 sp_addalias 把數(shù)據(jù)庫(kù)中的一個(gè)用戶映象到另一個(gè)用戶 數(shù)據(jù)庫(kù)所有者 sp_addgroup 向數(shù)據(jù)庫(kù)增加分組,在授權(quán)和撤權(quán)命令中分組被用作聚合名字 數(shù)據(jù)庫(kù)所有者 sp_addlanguage 為服務(wù)器定義可替換語(yǔ)言,并把它增加到master,dbo,syslanguages中。 系統(tǒng)管理員 sp_addlogin 通過(guò)向master.dbo,syslogins中增加表項(xiàng)授權(quán)新的SQL Server用戶 系統(tǒng)管理員 sp_addremotelogin 通過(guò)向master,bo,sysremotelogins增添表項(xiàng)授權(quán)新的遠(yuǎn)程服務(wù)器用戶 系統(tǒng)管理員 sp_addsegment 在指定的數(shù)據(jù)庫(kù)設(shè)備上創(chuàng)建一個(gè)段 數(shù)據(jù)庫(kù)所有者系統(tǒng)管理員 sp_addserver 定義遠(yuǎn)程服務(wù)器,或定義本地服務(wù)器名字 數(shù)據(jù)庫(kù)所有者系統(tǒng)管理員 sp_addtype 創(chuàng)建用戶定義的數(shù)據(jù)類型 Public sp_addumpdervce 向SQL Server增加轉(zhuǎn)儲(chǔ)設(shè)備 系統(tǒng)管理員 sp_adduser 向當(dāng)前數(shù)據(jù)庫(kù)添加新的用戶 數(shù)據(jù)庫(kù)所有者 sp_bindefault 為一列或用戶下義的數(shù)據(jù)類型定義缺省值 目標(biāo)(對(duì)象)所有者 sp_bindrule 向一列或用戶定義的數(shù)據(jù)類型賦一規(guī)則 目標(biāo)汽有者 sp_changedbowner 改變數(shù)據(jù)庫(kù)的所有者 數(shù)據(jù)庫(kù)所有者 sp_changegroup 改變用戶所屬的分組 數(shù)據(jù)庫(kù)所有者 sp_checknames 檢查當(dāng)前數(shù)據(jù)庫(kù)在7位ASCII碼集之外的字符的名字 public sp_commonkey 在兩個(gè)表或視圖之間定義一公共鍵--經(jīng)常被連接的列 兩表(或視圖)的所有者 sp_configure 顯示或改變配置變量 沒(méi)有參數(shù)或只有第一個(gè)參數(shù)的執(zhí)行權(quán)屬于public,否則屬于系統(tǒng)管理員 sp_dboption 顯示或改變數(shù)據(jù)庫(kù)選項(xiàng) 不帶參數(shù)屬于public,帶參數(shù)時(shí)屬于數(shù)據(jù)庫(kù)所有者 sp_defaultdb 改變一用戶的缺省數(shù)據(jù)庫(kù) 系統(tǒng)管理員(但每個(gè)用戶都可以改變他自己的缺省語(yǔ)言) sp_depends 顯示數(shù)據(jù)庫(kù)目標(biāo)相關(guān)性的信息 public sp_diskdefault 設(shè)備數(shù)據(jù)庫(kù)設(shè)備的狀態(tài)為defaulton或defaultoff(表明一數(shù)據(jù)設(shè)備是否能用于數(shù)據(jù)庫(kù)的豈省存儲(chǔ)) 系統(tǒng)管理員 sp_dropalias 刪除用sp_addalias建立的用戶名別名標(biāo)識(shí) 數(shù)據(jù)庫(kù)所有者 sp_dropdevice 刪除一SQL Server數(shù)據(jù)庫(kù)設(shè)備或轉(zhuǎn)儲(chǔ)設(shè)備 系統(tǒng)管理員 sp_dropgroup 從數(shù)據(jù)庫(kù)中刪除一分組 數(shù)據(jù)庫(kù)所有者 sp_droplanguage 從服務(wù)器中刪除可替換語(yǔ)言,并從master.dbo.syslanguages中刪掉相應(yīng)的行 系統(tǒng)管理員 sp_droplogin 通過(guò)刪掉用戶在master,dbo,syslogins中的表項(xiàng)刪除SQL Server用戶 系統(tǒng)管理員 sp_dropremotelogin 刪除遠(yuǎn)程用戶注冊(cè) 系統(tǒng)管理員 sp_dropsegment 從數(shù)據(jù)庫(kù)中刪除一個(gè)段或從特定數(shù)據(jù)庫(kù)設(shè)備上卸掉一個(gè)段的映象 數(shù)據(jù)庫(kù)所有者 sp_dropserver 刪除遠(yuǎn)程服務(wù)器 系統(tǒng)管理員 sp_droptype 刪除用戶定義的數(shù)據(jù)類型 數(shù)據(jù)庫(kù)所有者數(shù)據(jù)類型所有者 sp_dropuser 從當(dāng)前是數(shù)據(jù)庫(kù)中刪除一用戶 數(shù)據(jù)庫(kù)屬主 sp_extendsegment 把段的區(qū)域擴(kuò)充到另一個(gè)數(shù)據(jù)庫(kù)設(shè)備或在當(dāng)前數(shù)據(jù)庫(kù)設(shè)備上進(jìn)行擴(kuò)充 數(shù)據(jù)庫(kù)屬主 sp_foreignkey 在當(dāng)前數(shù)據(jù)庫(kù)的表或視圖上定義一外部鍵 表的屬主 sp_help 報(bào)告目標(biāo)或SQL Server提供的或用戶定義的數(shù)據(jù)庫(kù)類型的信息 public sp_helpdb 報(bào)告--指定數(shù)據(jù)庫(kù)或所有數(shù)據(jù)庫(kù)的信息 public sp_helpdevice 報(bào)告--指定設(shè)備或所有SQL Server數(shù)據(jù)庫(kù)設(shè)備轉(zhuǎn)儲(chǔ)設(shè)備的信息 public sp_helpgroup 報(bào)告--特定組或當(dāng)前數(shù)據(jù)庫(kù)的所有組的信息 public sp_helpinde 報(bào)告--表中的索引信息 public sp_helpjoins 列出可連接兩個(gè)表或視圖的列 public sp_helpkey 報(bào)告某個(gè)特定表或視圖的一主鍵,外部鍵或公共鍵或者當(dāng)前數(shù)據(jù)庫(kù)中所有鍵的信息 public sp_helplanguage 報(bào)告一特替換語(yǔ)言或所有語(yǔ)言的信息 public sp_helplog 報(bào)告包括日志第一頁(yè)的設(shè)備名 public sp_helpremotelogin 報(bào)告一特定遠(yuǎn)程服務(wù)器或所有遠(yuǎn)程服務(wù)器的注冊(cè)信息 public sp_helprotect 報(bào)告一數(shù)據(jù)庫(kù)對(duì)象或用戶權(quán)限,且由用戶選擇對(duì)象 public sp_helpsegment 報(bào)告當(dāng)前數(shù)據(jù)庫(kù)中一特定段或所有段的信息 public sp_helpserver 報(bào)告一特定遠(yuǎn)程服務(wù)器或所有遠(yuǎn)程服務(wù)器的信息 public sp_helpsort 顯示SQL Server的缺省排列順序以及字符集 public sp_helptext 打印一系統(tǒng)過(guò)程、觸發(fā)器、視圖、缺省或規(guī)則的定義文本 public sp_helpuser 報(bào)告當(dāng)前數(shù)據(jù)庫(kù)中一個(gè)用戶或所有用戶的信息 public sp_lock 報(bào)告當(dāng)前上鎖的進(jìn)程的信息 public sp_logdevice 將系統(tǒng)表syslogs(其中包括事務(wù)日志)放在一個(gè)分設(shè)的數(shù)據(jù)庫(kù)設(shè)備中 數(shù)據(jù)庫(kù)屬主 sp_monitor 顯示SQL Server的統(tǒng)計(jì)數(shù)字 系統(tǒng)管理員 sp_password 增加或改變SQL Server注冊(cè)的口令 對(duì)自己的口令,權(quán)限屬于public,系統(tǒng)管理員有權(quán)修改所有用戶口令 sp_placeobject 為一特定中某個(gè)表或索引放置將來(lái)的空間分配 表屬主,數(shù)據(jù)庫(kù)屬主系統(tǒng)管理員 sp_primarykey 定義一表或視圖上的主鍵(主碼) 表的所有者 sp_recompile 使生個(gè)使用被指定表的存儲(chǔ)過(guò)程、觸發(fā)器在下次運(yùn)行時(shí)重新編譯 public sp_remoteoption 顯示或改變遠(yuǎn)程注冊(cè)選項(xiàng) 顯示選項(xiàng)時(shí)屬 public改變選項(xiàng)時(shí)屬系統(tǒng)管理員 sp_rename 改變當(dāng)前數(shù)據(jù)庫(kù)中一用戶建立目標(biāo)的名稱 特定目標(biāo),權(quán)限屬目標(biāo)屬主對(duì)數(shù)據(jù)庫(kù)所有對(duì)象,權(quán)限屬數(shù)據(jù)庫(kù)所有者 sp_renamedb 改變數(shù)據(jù)庫(kù)名 系統(tǒng)管理員 sp_serveroption 顯示或改變服務(wù)器選項(xiàng) 顯示選項(xiàng),權(quán)限,權(quán)限屬 public改變選項(xiàng),權(quán)限屬系統(tǒng)管理員 sp_setlangalian 分配或改變一替換語(yǔ)言的別名 系統(tǒng)管理員 sp_spaceused 顯示行數(shù)、數(shù)據(jù)頁(yè)數(shù)以及當(dāng)前數(shù)據(jù)庫(kù)中由某個(gè)目標(biāo)或所有目標(biāo)所占用的空間 public sp_unbindefault 從一列或用戶定義的數(shù)據(jù)類型中解除一規(guī)則 目標(biāo)屬主(所有者) sp_who 報(bào)告特定用戶或SQL Server所有當(dāng)前用戶和進(jìn)程的信息 public 附錄4:常用SQL命令 表4 1.load isql -Usa -P --進(jìn)入ISQL環(huán)境 quit ----退出ISQL環(huán)境 2.shutdown (server_name) --關(guān)閉SYBASE服務(wù)器 ex. shutdown SYB_BACKUP 3.use (database_name) --打開(kāi)數(shù)據(jù)庫(kù) ex. use tele114 4.set rowcount (number) -- 設(shè)置顯示記錄條數(shù) ex. set rowcount 10 (為0則取消設(shè)置) 5.select (select_list) from (table_name) where (search_conditions) --查看符合要求的內(nèi)容 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中的內(nèi)容存在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) --定義轉(zhuǎn)儲(chǔ)設(shè)備 ex.sp_addumpdevice 'disk','nbdump_1','vol1:\nbdump\nbdump.dat' 10.sp_dropdevice (device_name) --刪去轉(zhuǎn)儲(chǔ)設(shè)備 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) --更改設(shè)置值 ex.sp_configure 'allow updates',1 13.reconfigure with override --使更改設(shè)置值有效 14.sp_who --使用數(shù)據(jù)庫(kù)用戶列表 15.kill (spid) --刪去無(wú)效的數(shù)據(jù)庫(kù)用戶 ex.kill 9 --刪去spid為9的數(shù)據(jù)庫(kù)用戶 16.sp_helpindex (tabel_name) --查看索引情況 ex. sp_helpindex code_2th 17.sp_helpdb (database_name) --查看數(shù)據(jù)庫(kù)占用空間情況 ex. sp_helpdb tele114 附錄5:SYBASE實(shí)用安裝、 Sybase 10.0.1 For SCO UNIX3.0.x的安裝 (一)安裝前準(zhǔn)備 1. SCO UNIX需兩張補(bǔ)丁盤(pán) a. UOD381異步I/O盤(pán)一張 b. aet382網(wǎng)絡(luò)盤(pán)一張 重啟UNIX后進(jìn)入維護(hù)模式,用custom命令裝入此兩張補(bǔ)丁盤(pán) 2. 在UNIX系統(tǒng)中增加sybase用戶 3. 在工作站上通過(guò)TCP/IP將SYB_SCO拷入 /usr/sybase中在工作站上運(yùn)行 LSL NE2000 TCPIP FTP 129.18.114.99 (129.18.114.99為服務(wù)器的網(wǎng)絡(luò)地址) 用sybase用戶登錄 bi put SYB_SCO (SYB_SCO在C盤(pán)當(dāng)前目錄中) 4. 用cpio 展開(kāi)安裝程序 以root登錄 cd/usr/sybase Cpio 杋dvC 5. 配置UNIX內(nèi)核 a. 以root登錄 b. 設(shè)置環(huán)境變量,用vi 編輯 /.profile加入以下兩行 SYBASE=/usr/sybase export sybase c. 用vi編輯/etc/conf/cf.d/mtune 修改參數(shù)為 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,輸入服務(wù)器名如: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配置參數(shù),使各項(xiàng)Incmplete----->complete 參數(shù)配置如下:(例) 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,此參數(shù)為1024--65535為間的4個(gè)或5個(gè)數(shù)字 Address=scosysv,此參數(shù)為UNIX服務(wù)器主機(jī)名 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 注意:此備份服務(wù)器名一定要與后面配置的備份服務(wù)器名一致 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) 參數(shù)配置完后,按Crtl-a Execute the SQL Server Configuraion now? y 10)看到下面的信息表示SQL Server 安裝成功 Configrration completed successfully. rpess to continue.(回車(chē)) 11) 按Ctrl-x 退出安裝程序 12) 要$提示符下運(yùn)行 startserver-fRUN-lyg114 啟動(dòng)SQL Server 13) 要$提示符下運(yùn)行 isql-Usa -P- Slyg114 屏幕出現(xiàn):1> 安裝完畢 Sybase 11.0.2 For SCO UNIX 5.02C的安裝 (一)首先建立sybase組,組號(hào)可設(shè)為100;再建立sybase用戶,然后修改/usr/sybase/.profile文件,加入一句:SYBASE=“/usr/sybase”;export SYBASE。 (二)調(diào)整系統(tǒng)核心參數(shù) a. 共享內(nèi)存: # cd /etc/conf/cf.d # ./configure選16,shared data SHMMAX,輸入新值,如83886080(越大越好,系統(tǒng)啟動(dòng)后省下的全部?jī)?nèi)存) 退出。 b. 激活異步I/O: # cd /etc/conf/sdevice.d;進(jìn)入此目錄 # Vi aio將“N”改為“Y”;編輯aio文件 # Vi suds將“N”改為“Y”;編輯suds文件 # Vi /etc/rc2 在最后加入下面一行: /etc/suds_ctrl -a c. 重建內(nèi)核: # /etc/conf/cf.d/link_unix d. 重新啟動(dòng)openserver (三)安裝sybase a. 以sybase登錄: $ ./sybload -D 依輸入y 、l, 然后執(zhí)行”./sybimage“ b. 依提示輸入序列號(hào),解完包后: Vi /usr/sybase/locales/locales.dat 在[SCO]中,加入: C_C.C.,us-English,ico_1 然后進(jìn)入Install,配置SYBASE服務(wù)器。 ※SYBASE 11.0.2 For SCO UNIX 5.0.2安裝補(bǔ)充說(shuō)明 目前SCO UNIX 5.0有多種版本,針對(duì)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上不需安裝補(bǔ)丁盤(pán) |
|