SQL Server 2008 R2:'创建/更改视图'不允许将数据库名称指定为对象名称的前缀

时间:2015-09-28 16:50:20

标签: sql-server sql-server-2008-r2

我必须有2个数据库DB1DB2

我有一个名为View1的视图,它存储在数据库DB2中。现在我想从ALTER VIEW数据库中DB1

我的尝试:

ALTER VIEW DB2..View1 
AS 
   SELECT * FROM DB2..Test;

但是我收到了错误:

  

'创建/更改视图'不允许将数据库名称指定为对象名称的前缀

4 个答案:

答案 0 :(得分:7)

这很简单:您需要更改数据库

USE DB2
GO

ALTER VIEW View1
    ...

答案 1 :(得分:1)

评论是不言自明的。您需要在数据库中使用您的视图。将您的连接切换为DB2,您应该能够CREATEALTER /您的观点。 From MSDN

答案 2 :(得分:1)

就我而言,我正在尝试运行一个脚本来创建/更改不同数据库中的视图,所以我使用 EXEC (...) 创建我的视图..
但是我遇到了一些问题一个悖论: EXEC ('CREATE VIEW...') 不会让您指定数据库。您必须切换到该数据库才能创建视图。
但是您不能执行 EXEC ('USE [db]; CREATE VIEW...'),因为 CREATE VIEW 会要求它成为第一个命令。 我解决了这个问题,感觉就像我去了Inception
EXEC('USE [db]; EXEC('CREATE VIEW'))

答案 3 :(得分:0)

我在 Azure Data Studio 中连接到我想要查看的同一个数据库 server:DB1,并由此得到错误:

CREATE OR ALTER VIEW DB1.dbo.my_View AS
SELECT ...

我删除了前缀,这奏效了:

CREATE OR ALTER VIEW my_View AS
SELECT ...