在sqlserver中创建视图

时间:2013-09-03 09:57:05

标签: sql-server database sql-server-2008 views

我尝试创建链接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但....

2 个答案:

答案 0 :(得分:4)

您的视图使用的是ANSI 92语法。虽然这适用于较旧的数据库版本,但它在SQL Server 2012中不起作用。有关此主题,请参阅Mike Walsh's blog

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

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

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

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)

三件事:

  1. 您必须使用JOINS并且查询的写入方式不好。只是一个观察。与你的问题无关。
  2. 您是否尝试过SELECT * FROM v_news?这将返回结果。
  3. 在SSMS中右键单击并查看视图,然后选择刷新。它将显示在列表中
  4. 拉​​吉