0

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

问题是在一台机器上存储过程不能运行,除非它的所有者被提及。

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

exec ourSP

我们收到“找不到我们的SP”错误,但这工作正常:

exec user.ourSP

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

4

2 回答 2

0

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

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

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

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

于 2010-06-16T21:37:54.890 回答
0

似乎如果在服务器安全区域中将用户检查为 SysAdmin,则在建立与数据库的连接时,它将具有 dbo 用户名,并且将被视为 dbo。

于 2010-06-29T08:04:31.247 回答