【问题标题】:cannot drop the view 'XXX' because it does not exist or you do not have permission无法删除视图“XXX”,因为它不存在或您没有权限
【发布时间】:2016-07-28 16:49:26
【问题描述】:

我们将服务器从 2005 年迁移到 2014 年,用户可以在 2005 年的服务器中将其删除 但是在 2014 年,我们收到了错误,因为没有权限或没有退出 我们已授予相同的权限,甚至他是系统管理员。在我们的应用程序方面,他们无法删除应用程序用户通过我们数据库中的用户连接的视图,他拥有所有权限,并且他是系统管理员

【问题讨论】:

  • 视图真的存在吗?
  • 即使我删除了用户并重新创建了它。但还是一样.. 2005 年和 2014 年的权限有什么不同
  • 视图在什么模式下?您正在运行的实际语句是什么?
  • 我们使用用户名作为架构名称。我们只是加入了用户 id ='xxx' 的 2 个表
  • 如果视图存在,请复制并粘贴 DROP 命令中的名称。删除视图 XXX

标签: sql-server sql-server-2005 sql-server-2014 user-permissions


【解决方案1】:

如果应用程序/任何其他进程已经连接到您要删除的数据库,您可能会收到该错误。尝试先断开与数据库的连接并删除架构,它应该可以工作。

【讨论】:

    【解决方案2】:

    自发布以来已经有好几年了。 我遇到了同样的情况。如果我按以下方式运行:

    Drop view [Schemaname.viewname]
    

    会有错误。

    如果我拿走[ ],作为

    Drop view Schemaname.viewname
    

    它有效。不知道是什么原因。

    【讨论】:

    • 你的情况的错误是因为你需要 [Schemaname].[viewname]
    【解决方案3】:

    此问题只要发生就可以轻松解决,请按照以下步骤操作:

    1. 查看您在哪个数据库中工作,例如我在数据库student_fast中工作。
    2. 获得您正在使用的数据库名称后,编写一个查询(使用 database_name)并执行它
    3. 现在试试 drop 命令。
    4. 它可以根据我的问题工作。

    【讨论】:

      【解决方案4】:

      在你的情况下,检查你是否做了两次 Drop view Statement,有时你在两个不同的地方删除了视图,这会导致这个问题。

      【讨论】:

        【解决方案5】:

        我也遇到过同样的问题(SQL Server 2016)。

        这有点奇怪,但是当我使用本地 Windows 帐户(也映射到 sa)通过 Windows 身份验证 连接到 SQL Server 时,我收到此错误。

        当我使用用户名 sa 及其关联密码通过 SQL Server 身份验证 连接到 SQL Server 时,我拥有所有权限并且这个讨厌的错误消失了。

        【讨论】:

          【解决方案6】:

          我有一个非常相似的问题。确保移动数据库时架构没有更改。

          在我的例子中,所有的表和视图都被放置在一个带有数据库名的模式中,所以而不是表被称为例如。 table1,它们被称为database.table1。

          如前所述,这是显示此错误的原因之一。

          编辑:在看到 cmets 后,他们提出了同样的建议,在表名之前使用模式,是的。如果 dbo 是您的架构,则尝试编写 dbo.tablename

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2010-12-08
            • 1970-01-01
            • 1970-01-01
            • 2013-04-09
            • 2021-10-03
            • 2016-11-22
            • 2015-05-27
            相关资源
            最近更新 更多