4.7.1 BACKUP BACKUP 命令用于將數據庫內容或其事務處理日志備份到存儲介質上(軟盤、硬盤、磁帶)。等SQL Server 7.0 以前的版本用的是DUMP 命令來執行此功能,從SQL Server 2000起,不再使用DUMP 命令。關于BACKUP 命令的詳情請參見“數據備份與恢復”章節。 4.7.2 CHECKPOINT 語法如下: CHECKPOINT CHECKPOINT 命令用于將當前工作的數據庫中被更改過的數據頁data page 或日志頁(log page)從數據緩沖器(data buffer cache)中強制寫入硬盤。 4.7.3 DBCC DBCC Database Base Consistency Checker,數據庫一致性檢查程序)命令用于驗證數據庫完整性、查找錯誤、分析系統使用情況等。 DBCC 命令后必須加上子命令,系統才知道要做什么。如DBCC CHECKALLOC 命令檢查目前數據庫內所有數據頁的分配和使用情況。 關于DBCC 命令的詳情,請參見附錄。
4.7.4 DECLARE 語法如下: DECLARE {{ @local_variable data_type } | { @cursor_variable_name CURSOR } | { table_type_definition } } [,...n]] DECLARE 命令用于聲明一個或多個局部變量、游標變量或表變量。在用DECLARE命令聲明之后,所有的變量都被賦予初值NULL。需要用SELECT 或SET命令來給變量賦值。變量類型可為系統定義的或用戶定義的類型,但不能為TEXT、NTEXT、IMAGE類型。CURSOR 指名變量是局部的游標變量。 例4-16 declare @x float @y datetime select @x = pi @y = getdate print @x print @y 運行結果如下: 3.14159 Jun 17 2000 4:32PM 注意:如果變量為字符型,那么在data_type表達中應指明 其最大長度,否則系統認為其長度為1。 例4-17 declare @x char @y char 10 select @x = '123' @y = 'data_type' print @x print @y 運行結果如下 1 data_type
4.7.5 EXECUTE EXECUTE 命令用來執行存儲過程,其具體用法請參見“存儲過程”章節。 4.7.6 KILL KILL 命令用于終止某一過程的執行,其具體用法請參見“存儲過程”章節。 4.7.7 PRINT 語法如下: PRINT 'any ASCII text' | @local_variable | @@FUNCTION | string_expression PRINT 命令向客戶端返回一個用戶自定義的信息,即顯示一個字符串(最長為255個字符)、局部變量或全局變量。如果變量值不是字符串的話,必須先用數據類型轉換函數CONVERT(),將其轉換為字符串。其中,string_expression 是可返回一個字符串的表達式。表達式的長度可以超過8000 個字符,但超過8000 的字符將不會顯示。 例4-18: declare @x char 10 @y char 10 select @x = 'SQL' @y = 'Server' print '科技' print @x + @y
運行結果如下: 科技 SQL Server
4.7.8 RAISERROR RAISERROR 命令用于在SQL Server 系統返回錯誤信息時,同時返回用戶指定的信息。其具體用法請參見“存儲過程”章節。 4.7.9 READTEXT READTEXT 命令語法如下 READTEXT {table.column text_pointer offset size} [HOLDLOCK] READTEXT 命令用于從數據類型為TEXT、NTEXT 或IMAGE 的列中讀取數據。命令從偏移位置offset+1 個字符起讀取size 個字符,如果size 為0, 則會讀取4KB 的數據。其中text_pointer 是指向存儲文本的第一個數據庫頁的指針,它可以用TEXTPTR()函數來獲取。關于TEXTPTR ()函數的使用請參見“4.8.7 TEXT 和IMAGE 函數”。HOLDLOCK 選項用于鎖定所讀取的數據直到傳輸結束,這段時間內,其它用戶只能讀取數據,不能更改數據。 例4-19: use pangu declare @t_pointer varbinary (16) select @t_pointer = textptr (d_intro) from department where d_name = '技術部' readtext department.d_intro @t_pointer 0 42 運行結果如下: d_intro -------------------------------------------------------------------- 進行技術研究與開發,提供最新的技術動態信息 (1 row (s) affected)
注意:如果數據列為漢字,則offset值應取o或其它偶數,如果用奇數,則會出現亂碼
4.7.10 RESTORE RESTORE 命令用來將數據庫或其事務處理日志備份文件由存儲介質回存到SQL Server系統中。SQL Server 7.0 以前的版本用的是LOAD命令來執行此功能,從SQL Server 2000起,不再使用LOAD 命令。關于RESTORE 命令的詳情,請參見“數據備份與恢復”章節 4.7.11 SELECT SELECT 命令可用于給變量賦值其語法如下: SELECT {@local_variable = expression } [ ...n] SELECT 命令可以一次給多個變量賦值。當表達式expression 為列名時,SELECT 命令可利用其查詢功能一次返回多個值,變量中保存的是其返回的最后一個值。如果SELECT命令沒有返回值,則變量值仍為其原來的值。當表達式expression 是一個子查詢時,如果子查詢沒有返回值則變量被設為NULL。 例4-20: use pangu declare @x char (30) select @x = 'CPU' select @x = d_name from department where dept_id = 9999 select @x 運行結果如下: ----------------------- CPU 例4-21: use pangu declare @x char 30 select @x = 'Main Board' select @x = (select d_name from department where dept_id=9999) select @x 運行結果如下 ----------------------- NULL
4.7.12 SET SET 命令有兩種用法: 1 用于給局部變量賦值 其語法如下: SET { {@local_variable = expression} | { @cursor_variable = { @cursor_variable cursor_name | { CURSOR [FORWARD_ONLY | SCROLL] [STATIC | KEYSET | DYNAMIC | FAST_FORWARD] [READ_ONLY | SCROLL_LOCKS | OPTIMISTIC] [TYPE_WARNING] FOR select_statement [FOR {READ ONLY | UPDATE [OF column_name [ ...n]] } ] } } } } 其中的CURSOR 等參數將在“游標”一章中講述。 在用DECLARE 命令聲明之后,所有的變量都被賦予初值NULL。 需要用SET 命令來給變量賦值。但與SELECT 命令不同的是,SET 命令一次只能給一個變量賦值。不過由于SET 命令功能更強,且更嚴密,因此,SQL Server 推薦使用SET 命令來給變量賦值。
例4-22 declare @x char (30) set @x = 'This is a SET command.' select @x 運行結果如下 ------------------------------ This is a SET command. 例4-23 use pangu declare @department_num int @x char (10) set @department_num = select count (*) from department) set @x = '部門數目' print @x select @department_num 運行結果如下 部門數目 ----------- 7
2 用于設定用戶執行SQL 命令,時SQL Server 的處理選項設定 有以下幾種設定方式:
- SET 選項ON
- SET 選項OFF
- SET 選項值
關于此類SET 命令的詳情,請參見附錄。 語法如下 SHUTDOWN [WITH NOWAIT] SHUTDOWN 命令用于停止SQL Server 的執行,當使用NOWAIT 參數時,SHUTDOWN命令立即停止SQL Server,在終止所有的用戶過程并對每一現行的事務發生一個回滾后,退出SQL Server。當沒有用NOWAIT 參數時,SHUTDOWN 命令將按以下步驟執行: (1) 終止任何用戶登錄SQL Server。 (2) 等待尚未完成的Transact-SQL 命令或存儲過程執行完畢。 (3) 在每個數據庫中執行CHECKPOINT 命令 (4) 停止SQL Server 的執行 例4-24 shutdown with nowait 運行結果如下: ------------------------------ Changed language setting to us_english. Server shut down by request. SQL Server is terminating this process. 停止SQL Server 的執行的方法還有好幾種,我們將在“企業管理器EnterpriseManager” 章節中介紹。
4.7.14 WRITETEXT 語法如下: WRITETEXT {table.column text_pointer} [WITH LOG] {data} WRITETEXT 命令用于向數據類型為TEXT、 NTEXT 或IMAGE 的列中讀取數據。其中text_pointer 是指向存儲文本的第一個數據庫頁的指針,它可以用TEXTPTR()來獲取。關于TEXTPTR 函數的使用請參見“4.8.7 TEXT 和IMAGE 函數”。WOTH LOG選項用于記錄所寫入的數據。data 可為文字或變量,其最大長度為120KB。注意:WRITETEXT命令不能作用于視圖。
推薦使用UPDATETEXT 命令來修改TEXT、NTEXT 和IMAGE 類型的數據。因為WRITETEXT 命令將數據列的數據完全替換,而UPDATETEXT 命令可以只更改數據列的一部分。關于UPDATETEXT 命令的使用將在“數據庫更新”章節中講述。 例4-25 declare @t_pointer binary (16) use pangu select @t_pointer = textptr d_intro from department where d_name = '技術部' writetext department.d_intro @t_pointer '進行技術研究與開發提供最新的技術動態信息'
4.7.15 USE 語法如下 USE {databasename} USE 命令用于改變當前使用的數據庫為指定的數據庫。用戶必須是目標數據庫的用戶成員或目標數據庫建有GUEST 用戶賬號時,使用USE 命令才能成功切換到目標數據庫。
|