正如标题所暗示的那样,如果您执行类似的操作,我很困惑为什么我的数据库中的某些表会崩溃;
SELECT * FROM [user].[table]
但在另一张 table 上它工作正常。
我正在测试一些代码,如果您不使用 [user].[table],这些代码最终会出现在服务器上,所以我真的很想在我的机器上强制执行此操作。
谁能解释为什么会发生这种情况,并告诉我如何解决它。
更多信息
这是我尝试使用 [user].[table] 而不是 [table] 运行查询时收到的消息;
[Microsoft][ODBC SQL Server Driver][SQL Server]Invalid object name 'usr.tbl'
最佳答案
“用户”位是表所属的模式
因此您可以在同一数据库中拥有 dbo.table
和 user.table
。
默认情况下,SELECT * FROM table
通常会查找 dbo.table
。但是,如果登录名/用户有不同的默认架构,那么它将查找 thatschema.table
修复它:
- 您可以使用
ALTER SCHEMA .. TRANSFER..
修复当前设置 - 持续进行,确保每个表引用在 CREATE、ALTER、SELECT 等方面都有正确的架构
关于sql-server - SQL Server 中的某些表需要 [user].[table] 而其他表则不需要,这是为什么,我可以强制执行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3889165/