【问题标题】:Can create a table but doesn't display in Object explorer, can't select, or delete table?可以创建表格但不显示在对象资源管理器中,无法选择或删除表格?
【发布时间】:2021-04-22 18:18:50
【问题描述】:

使用 SQL Server 2016。有一个本地托管的数据库,该数据库使用 Windows 登录 sa,这是我用来登录的。

昨天我跑了

CREATE TABLE [Otis].[AnalyzerGroups] 
(
    [id] [int] IDENTITY,
    [Name] [varchar](50) NULL
);

并成功完成命令。今天我尝试从这个表中选择但得到一个错误:

消息 208,第 16 级,状态 1,第 1 行
无效的对象名称“Otis.AnalyzerGroups”

所以我以为我记错了,并尝试再次运行 create 语句,但随后出现错误 -

消息 15530,第 16 级,状态 1,第 1 行
名称为“AnalyzerGroups”的对象已存在。
该语句已终止。

然后我尝试了DROP TABLE [Otis].[AnalyzerGroups]; 并得到了

消息 3701,第 11 级,状态 5,第 1 行
无法删除表“Otis.AnalyzerGroups”,因为它不存在或您没有权限。

我尝试制作一个新的测试表和同样的东西。第一次运行创建语句命令成功完成,但是我无法从表中选择/插入/删除,我也无法在对象资源管理器中看到它。

我认为这一定是一些权限问题,但我不知道是什么属性阻止我查看这些表 - 这不像我在这些表上设置了安全性,我可以看到我们数据库中的所有其他表。有什么想法吗?

【问题讨论】:

  • 你在改变数据库上下文,是不是一个不同的查询窗口?
  • 我右键单击我正在使用的数据库,然后在我的对象编辑器中单击“新建查询”。除了我正在使用的数据库之外,还有 3 个其他数据库,但是我检查了所有这些数据库,也没有看到我在其中任何一个中创建的表。
  • 在左上角,您可以选择要使用的数据库。 CREATE TABLE 之后对象资源管理器不会更新,除非您右键单击并按刷新

标签: sql-server sql-server-2016


【解决方案1】:

你很可能把它放在错误的数据库中。试试这个。

sp_MSforeachdb 'SELECT "?" AS DB, * FROM [?].sys.tables WHERE name like 
''%AnalyzerGroups%'''

【讨论】:

    【解决方案2】:

    SQL Server 数据库中的触发器在任何时候在任何架构下创建新表时都会触发,然后将其传输到dbo 架构。所以我的表确实存在,但由于这个触发器,它们在我期望的模式下。为什么会存在这个触发器?得到我。但它已经投入生产并且已经有十多年了,所以有一些原因/它肯定不会改变。感谢大家的帮助。

    【讨论】:

      猜你喜欢
      • 2015-03-27
      • 1970-01-01
      • 2021-10-16
      • 1970-01-01
      • 2019-09-12
      • 2021-06-17
      • 2010-12-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多