Sql server SQL Server中的某些表需要[user].[table],而其他表则不需要,这是为什么?我可以强制它吗?

Sql server SQL Server中的某些表需要[user].[table],而其他表则不需要,这是为什么?我可以强制它吗?,sql-server,Sql Server,正如标题所示,我很困惑,如果您执行以下操作,为什么我的数据库中的某些表会崩溃 SELECT * FROM [user].[table] 但在另一张桌子上,它工作得很好 我正在测试一些代码,如果您不使用[user].[table],这些代码最终会出现在服务器上,因此我真的想在我的机器上强制执行这些代码 有人能解释一下为什么会发生这种情况,并告诉我如何修复它吗 更多信息 这是我尝试使用[user].[table]而不是仅仅使用[table]运行查询时得到的消息 [Microsoft][ODBC S

正如标题所示,我很困惑,如果您执行以下操作,为什么我的数据库中的某些表会崩溃

SELECT * FROM [user].[table]
但在另一张桌子上,它工作得很好

我正在测试一些代码,如果您不使用[user].[table],这些代码最终会出现在服务器上,因此我真的想在我的机器上强制执行这些代码

有人能解释一下为什么会发生这种情况,并告诉我如何修复它吗

更多信息

这是我尝试使用[user].[table]而不是仅仅使用[table]运行查询时得到的消息

[Microsoft][ODBC SQL Server 驱动程序][SQL Server]对象名称无效 “usr.tbl”


用户位是表所属的模式

因此,可以将dbo.table和user.table放在同一个数据库中

默认情况下,SELECT*FROM table通常会查找dbo.table。但是,如果登录名/用户具有不同的默认模式,那么它将查找该schema.table

要解决此问题,请执行以下操作:

您可以使用来修复当前设置 继续,确保每个表引用在CREATE、ALTER、SELECT上都有正确的模式 另请参见

您所谓的[用户]实际上是一种称为模式的东西。每个用户都有一个默认模式,这意味着当您以该用户的身份登录时,您可以在不使用模式前缀的情况下引用默认模式中的表。解决这个问题的一种方法是确保没有用户拥有表所在的默认模式。基本上,您可以创建一个空模式,并将其用作所有用户的默认模式。
转到数据库->安全->用户,右键单击以更改用户的默认架构,查看属性。

当表属于其他用户而不是您所连接的用户时,您需要指定用户,你不是吗?即使你是用户,也有强制要求用户吗?使用企业管理器,我看不出如何更改模式,谷歌搜索也没有多大帮助,但我会继续支持,干杯!我找到了它,并将我连接的人设置为默认的master,但我仍然遇到同样的问题。