我在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。字首。这是因为数据库排序规则区分大小写,查询中的表名称错误。
答案 0 :(得分:1)
您是否使用与dbo不同的架构名称创建对象?如果您在创建视图时未对其进行限定,则它将取决于您的用户帐户的默认架构名称。在SQL 2k5和2k8中,我认为默认行为是为每个用户创建一个新模式,而不是将它们分配给'dbo'模式。
答案 1 :(得分:1)
您在master数据库中。您在master数据库中创建了该视图。您的实际查询是SELECT * FROM MyDB.dbo.MY_VIEW
。请尝试在MyDB数据库中创建视图。
答案 2 :(得分:0)
我发现问题是区分大小写的排序规则。问题不在于dbo。字首。这是因为数据库排序规则区分大小写,查询中的表名称错误。