何时在查询中使用dbo限定表或视图名称?

时间:2010-11-25 13:07:13

标签: sql-server sql-view

我在SQL Server中有一个视图,让我们说MY_VIEW。

当我执行命令SELECT * FROM MY_VIEW时,它工作正常。但是,当我执行它时 SELECT * FROM dbo.MY_VIEW我得到*无效的对象名称'MyDB.dbo.MY_VIEW'*

我使用sa连接到SQL服务器。

这有什么问题?什么时候应该使用dbo.MY_VIEW?何时不使用?

更新:视图上的架构名称为dbo,当我创建视图时,我也与sa连接。

Update2 我发现问题是区分大小写的排序规则。问题不在于dbo。字首。这是因为数据库排序规则区分大小写,查询中的表名称错误。

3 个答案:

答案 0 :(得分:1)

您是否使用与dbo不同的架构名称创建对象?如果您在创建视图时未对其进行限定,则它将取决于您的用户帐户的默认架构名称。在SQL 2k5和2k8中,我认为默认行为是为每个用户创建一个新模式,而不是将它们分配给'dbo'模式。

答案 1 :(得分:1)

您在master数据库中。您在master数据库中创建了该视图。您的实际查询是SELECT * FROM MyDB.dbo.MY_VIEW。请尝试在MyDB数据库中创建视图。

答案 2 :(得分:0)

我发现问题是区分大小写的排序规则。问题不在于dbo。字首。这是因为数据库排序规则区分大小写,查询中的表名称错误。