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

  • 相关阅读:
    MySql中子查询,左链,右链,内链,关键字join
    MySql数据库约束,主键和外键约束的添加删除,代码实现,sql语句实现
    MySql查询,聚合函数,分组,分页,排序等复杂查询
    DQL简单语句和条件语句
    django vue
    离线部署Django工程
    数据处理与分析实战小案例系列(一)
    Python常用功能函数总结系列
    Python常用功能函数系列总结(六)
    Python常用功能函数系列总结(五)
  • 原文地址:https://www.cnblogs.com/xh831213/p/326950.html
Copyright © 2011-2022 走看看