zoukankan      html  css  js  c++  java
  • 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去执行的,真的是这样吗?

  • 相关阅读:
    C++数字与字符串相互转化
    NextDate问题
    Mac使用host屏蔽某指定网站
    Pycharm里面使用anaconda配置环境
    Logisim
    XML有关知识
    Mac环境下的Tomcat
    Allow apps downloaded from Anywhere
    寻找两数之和
    最大子序列
  • 原文地址:https://www.cnblogs.com/berlin/p/1751011.html
Copyright © 2011-2022 走看看