代码之家  ›  专栏  ›  技术社区  ›  Beatles1692

找不到存储过程

  •  0
  • Beatles1692  · 技术社区  · 16 年前

    我们使用SQL Server 2008作为RDBMS,并且我们有一个数据库,该数据库的所有者不是DBO而是其他用户。

    问题出在一台机器上,除非提到存储过程的所有者,否则它不能运行。

    如果我们使用此用户连接到数据库并尝试执行以下操作:

    exec ourSP
    

    我们得到一个“找不到我们的SP”错误,但这是正常的:

    exec user.ourSP
    

    有人知道什么会导致这种奇怪的行为吗?

    2 回复  |  直到 16 年前
        1
  •  0
  •   Ed Harper    16 年前

    检查正在建立连接的用户的默认架构-可能使用查询

    select default_schema_name from sys.database_principals where name = '~user_name~'
    

    在用户的默认模式中搜索对象,然后搜索dbo。除非您像在第二个查询中那样显式地命名它们,否则不会考虑其他模式。

    在此基础上,似乎a)用户设置不正确,或b)您没有按预期连接。

        2
  •  0
  •   Beatles1692    16 年前

    在服务器安全区域中,如果用户被选中为sysadmin,那么在与数据库建立连接时,它将具有dbo用户名,并将其视为dbo。

    推荐文章