5

我试图创建链接 2 个表管理员和新闻的视图

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 server 但是....

4

2 回答 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
于 2013-09-03T20:24:01.507 回答
1

三件事:

  1. 您必须使用 JOINS 并且查询的编写方式很糟糕。只是一个观察。与你的问题无关。
  2. 你试过跑步SELECT * FROM v_news吗?那将返回结果。
  3. 右键单击并在 SSMS 中查看并选择刷新。它将显示在列表中

拉吉

于 2013-09-03T10:02:43.057 回答