在SQL Server中创建视图

5

我正在尝试创建一个视图,将两个表(管理员和新闻)链接起来。

create view v_news as
SELECT [n_id]
  ,[n_title]
  ,[n_detail]
  ,[n_date]
  ,[n_sdate]
  ,[n_edate]
  ,[n_admin]
  ,[a_name]
  ,[a_email]
  ,[a_role]
  ,[a_status]
FROM hed2.dbo.hed_news,hed2.dbo.hed_admins
where hed_admins.a_id=hed_news.n_admin

显示以下消息:

Command(s) completed successfully.

但是在VIEWS文件夹中没有视图。

当我尝试再次运行相同的查询时,它会提示:

There is already an object named 'v_news' in the database.

我使用Windows身份验证进行连接。 我尝试重新连接并重启了SQL服务器,但是....


您需要在创建视图的模式上创建查看权限,以及(可能)ALTER SCHEMA权限。 - David Brabant
2个回答

5

您的视图正在使用ANSI 92语法。虽然这可以用于旧版数据库,但在SQL Server 2012中无法工作。请查看Mike Walsh的博客来了解更多信息。

1 - 当使用SSMS视图时,不会立即显示。右键单击并选择刷新。

2 - 确保您在正确的数据库中非常重要。我相信许多人,包括我在内,都在master中创建了一个或两个对象。这是新登录的默认设置。

可以通过更改登录的默认数据库来更改此设置。

3 - 使用USE命令执行更改数据库上下文(默认)。

以下代码段是符合SQL Server 2012标准的版本。

USE [hed2]
GO

create view v_news as
SELECT [n_id]
  ,[n_title]
  ,[n_detail]
  ,[n_date]
  ,[n_sdate]
  ,[n_edate]
  ,[n_admin]
  ,[a_name]
  ,[a_email]
  ,[a_role]
  ,[a_status]
FROM dbo.hed_news JOIN dbo.hed_admins ON hed_news.n_admin = hed_admins.a_id
GO

1

三件事:

  1. 你必须使用连接(JOINS),你的查询方式不好。这只是一个观察,与你的问题无关。
  2. 你尝试运行过 SELECT * FROM v_news 吗?那将返回结果。
  3. 在 SSMS 中右键点击视图并选择刷新。它会出现在列表中。

Raj


SELECT * FROM v_news 显示结果 但不知道视图存储在哪里 如何查找并移动到视图文件夹 我刷新了视图文件夹,但这里没有它 - Your Yummy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接