zoukankan      html  css  js  c++  java
  • Procedure 存储过程(转)

    无疑,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,多半是成功注入后利用这里进行下一步权限探讨..

  • 相关阅读:
    小朋友学数据结构(2):栈
    小朋友学数据结构(1):约瑟夫环的链表解法、数组解法和数学公式解法
    小朋友学C++(2)
    小朋友学C++(1)
    小朋友学C语言(8)
    小朋友学C语言(7)
    小朋友学C语言(6)
    小朋友学C语言(5):常量和变量,for循环
    小朋友学C语言(4):单精度浮点数与双精度浮点数
    小朋友学C语言(3):整数、浮点数、字符
  • 原文地址:https://www.cnblogs.com/xh831213/p/326950.html
Copyright © 2011-2022 走看看