正如标题所示,我很困惑为什么我的数据库中的某些表会因为你做的事情而失败;
SELECT * FROM [user].[table]
然而在另一张桌子上它运作良好。
我正在测试一些代码,这些代码最终会出现在服务器上,如果你不使用[user]那就会哭。[table]所以我真的想在我的机器上强行执行此操作。
有人可以解释为什么会发生这种情况,并且可能会告诉我如何修复它。
更多信息
以下是我尝试使用[user]。[table]而不仅仅是[table]运行查询时得到的消息。
[Microsoft] [ODBC SQL Server 驱动程序] [SQL Server]无效的对象名称 'usr.tbl'
答案 0 :(得分:4)
“user”位是表所属的架构
因此,您可以在同一个数据库中拥有dbo.table
和user.table
。
默认情况下,SELECT * FROM table
通常会查找dbo.table
。但是,如果登录/用户具有不同的默认架构,则它将查找thatschema.table
修复它:
ALTER SCHEMA .. TRANSFER..
修复当前设置答案 1 :(得分:1)
您所指的[user]
实际上是一种称为架构的东西。每个用户都有一个默认架构,这意味着当您以该用户身份登录时,您可以引用默认架构中没有架构前缀的表。解决此问题的一种方法是确保没有用户具有表所在的默认架构。基本上,您可以创建一个emptry架构,并将其用作所有用户的默认架构。
转到 YourDatabase - > Security->用户,然后查看属性(通过右键单击)更改用户的默认架构。