我有2个SQLServer 2008 R2数据库。一个数据库(A)在测试模式中有一个表Foo。我试图在数据库(B)上创建一个引用A.testing.Foo的视图。但是,这样做时我收到错误。这是查询(登录数据库B时执行)
-- fails with Invalid object name 'A..Foo'
CREATE VIEW testing.Bar
AS
(SELECT * FROM A..Foo)
-- however, this succeeds when issued in the same context (same SSMS tab)
SELECT * FROM A..Foo
-- also, on both A and B
SELECT SCHEMA_NAME() -- returns 'testing'
-- also, this works
CREATE VIEW testing.Bar
AS
(SELECT * FROM A.testing.Foo)
奇怪的是,这适用于其他数据库对,而不是A和B.因此,我认为必定存在一些配置问题,但我不知道在哪里看!什么可能导致这种行为。
答案 0 :(得分:0)
可能是某人已经说过的命名冲突,但我建议您在开始跨越数据库边界时使用3个部分名称(仅为了清晰起见)
ex: [Database].[schema].[tableName]
那样,你身后的人,或者你2周后,知道发生了什么事。如果您跨越数据库服务器边界(速度较慢并增加了一个全新的复杂程度),只需使用4部分名称执行链接服务器
ex: [LinkedServerName].[Database].[schema].[tableName]