非系统表在 SQL Server 2017 Dev 中显示为主数据库表

非系统表在 SQL Server 2017 Dev 中显示为主数据库表

尝试安装 AdventureWorks(运行它,针对主数据库进行查询)几次失败后,我不知何故最终将许多 AdventureWorks 表以某种方式最终作为默认实例的主数据库的一部分;请参阅附件中左侧部分。我不知道该怎么办。请提出一些建议:

在此处输入图片描述

答案1

可能的情况是,您的一次尝试最终导致您create table在连接到 master 数据库时执行了命令(这可能是您登录的用户的默认数据库 - 我自己也遇到过这种情况,但这不是一种好的做法)。我将列出几个选项:

  • 1st - 删除多余的表

您只向主数据库添加了一些用户表,因此删除它们不会造成任何损害。如果您没有在 SQL Server 2017 Dev 上安装任何类型的第三方软件或脚本,您可以降低所有来自的用户表表格文件夹,不用担心会损坏某些东西。但不要从子文件夹中删除对象。

如果您连接到主数据库并查询sys.objects,您应该能够列出您创建的所有表:

USE master;
GO

SELECT name, type_desc, create_date, is_ms_shipped 
FROM sys.objects 
WHERE type = 'U'
    AND is_ms_shipped = 0;
GO

正确完成安装后,您还可以检查 AdventureWorks 上的表的名称,以确保仅从主数据库中删除相应的表。

  • 第二步 - 从备份中恢复(如果你恰好有一个可用的备份)

自从掌握数据库是一个非常重要的数据库,甚至可能导致你的 SQL Server 无法启动,微软提供了有关如何还原主数据库 (Transact-SQL)以防万一它被损坏或出现类似情况。

  • 第三步-从模板重建

您可以按照文档了解如何重建系统数据库。但是使用此方法有一个缺点:它就像 master、model、msdb 和 tempdb 系统数据库的出厂恢复。

相关内容