我必须有2个数据库DB1
和DB2
。
我有一个名为View1
的视图,它存储在数据库DB2
中。现在我想从ALTER VIEW
数据库中DB1
。
我的尝试:
ALTER VIEW DB2..View1
AS
SELECT * FROM DB2..Test;
但是我收到了错误:
'创建/更改视图'不允许将数据库名称指定为对象名称的前缀
答案 0 :(得分:7)
这很简单:您需要更改数据库
USE DB2
GO
ALTER VIEW View1
...
答案 1 :(得分:1)
评论是不言自明的。您需要在数据库中使用您的视图。将您的连接切换为DB2
,您应该能够CREATE
和ALTER
/您的观点。 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 ...