无疑,Procedure是一重大课题 。。
对于自定义Procedure,之前没有操作SQL-Server的经验 ,但是写Procedure却是比较熟手的,也是拜高老师所赐吧..
下面是一个之前程序用过的prodecure, 里面包括传入、传出的参数设置。
/**/
/****** Object: Stored Procedure dbo.pro_CheckAdminLogin Script Date: 2004-6-4 16:37:25 ******/
CREATE
PROCEDURE
pro_CheckAdminLogin
(
@username
nvarchar
(
20
),
@password
char
(
32
),
@lastloginip
char
(
15
),
@output
int
output
)
AS
if
exists
(
Select
id
from
admin
where
username
=
@username
and
password
=
@password
)
begin
update
admin
set
lastLoginIP
=
@lastloginip
,lastlogintime
=
getdate
()
where
username
=
@username
set
@output
=
0
--
验证通过
end
else
begin
set
@output
=-
1
--
帐号密码不正确
end
GO
--
---------
//
//
Alter
Alter
procedure
Pro_procedureName
as
[
SQL statements
]
//
Drop
Drop
procedure
pro_ProcedureName
通过阅读,了解到MS-SQLserver 的procedure 是可以加密的
例
Create
procedure
P_XXX
with
encryption
as
[
SQL statements
]
go
Procedure的好处:
系统有预编译 即编译1次,大大提高效益
某些业务规则可在procedure里面完成, 方便修改(不需改源前后台程序)
当然,还有我才知道的加密--安全性提高 Encryption
SQL-server还提供系统Procedure(sp_)和扩展Procedure(xp_)
利用系统存储过程新添用户的例子:
EXEC sp_addlogin 'LALA_ConnectName','PWD','DB_Name'
go
----
相对也明白了,具有SA权限后 利用扩展Procedure可以操作windows命令行解释器,
Use Master [<--Master数据库是 SQL-server存放系统procedure的数据库]
go
EXEC xp_cmdShell 'dir C:\*.exe'
这个XP_CmdShell就是在SQLserver系统执行命令行的方法
估计前段时间Hack最多的SQL injected,多半是成功注入后利用这里进行下一步权限探讨..
大概的 , Procedure掌握的就这些 需要反复练习 :)