SQL Server数据库技术(17)[MSSQL防范]
本文“SQL Server数据库技术(17)[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
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 号令才能成功切换到目标数据库.
本文地址: | 与您的QQ/BBS好友分享! |