【问题标题】:creating view in sqlserver在sql server中创建视图
【发布时间】:2013-09-06 12:16:47
【问题描述】:

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

【问题讨论】:

  • 您必须在创建视图的架构上创建视图权限以及(可能)ALTER SCHEMA 权限。

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


【解决方案1】:

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

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

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

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

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

下面的 sn-p 是符合 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

【讨论】:

    【解决方案2】:

    三件事:

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

    拉吉

    【讨论】:

    • yes SELECT * FROM v_news 显示结果但不知道视图存储在哪里我如何找到并移动到视图文件夹我刷新了视图文件夹但它不在这里
    猜你喜欢
    • 1970-01-01
    • 2011-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-28
    • 2023-03-16
    • 2012-02-15
    相关资源
    最近更新 更多