• SQL的执行者


    起源:最近有同事在执行存储过程和SQL语句,存储过程中的SQL和SQL语句一样,却发现执行的结果不一样,经分析发现是表的所有者不同造成

     

     

    Create proc TestProc

    @ProductID int

     

    as

     

    Begin

     

        Select ProductName From ProductInfo Where ProductID=@ProductID

     

    End

     

     

     

     

    ----------------------------于查询分析器执行测试----------------------------------------------

     

    测试一

    exec TestProc 2312

     

    测试二

    Select ProductName From ProductInfo Where ProductID=2312

     

    发现测试一没有结果,但测试二有结果

     

     

    当表ProductInfo的所有者不是dbo时,就会发生此种现象,或会出现表中明明有数据,但两种都没有数据返回

     

    测试一无结果,测试二有结果,是因为查询分析登录的恰好为表Product的所有者,如表的所有者为了Berlin,用这个账号去登录查询分析器时,就会产生测试一无结果,测试二有结果了

     

    延伸:为什么测试一也是用表所有者Berlin登录到查询分析器,为什么还是没有结果呢,猜想,执行SP时,用的是SQL Server内置账号执行的,而不是用Berlin去执行的,真的是这样吗?

  • 相关阅读:
    django序列化器Serializers
    django中模型类变更问题
    django图书管理系统-外键字段的增删改查
    django图书管理系统模型创建
    django中使用KindEditor上传图片
    成长
    git提交代码的经验
    react项目打包
    node——moudle
    git
  • 原文地址:https://www.cnblogs.com/berlin/p/1751011.html
Copyright © 2020-2023  润新知