При использовании диаграмм базы данных в простой базе данных SQL Server создает таблицу dbo.sysdiagrams в узле Table\Systam Tables (в Microsoft management studio \ object explorer). Но таблица sysdiagrams помечена как пользовательская таблица в SQL Server. вы можете получить таблицу пользователей по запросу ниже.

SELECT * 
FROM sys.tables t
WHERE OBJECTPROPERTY(t.object_id,'IsUserTable') = 1

enter image description here

Я не знаю, является ли таблица sysdiagram системной таблицей или таблицей пользователя.

Существует microsoft_database_tools_support со значением 1 в расширенном свойстве sysdiagram, которое определяет, что эта таблица создается автоматически.

enter image description here

23
mehdi lotfi 8 Мар 2014 в 18:06

2 ответа

Лучший ответ

Системные таблицы используются внутри SQL Server, они одинаковы во всех пользовательских базах данных.

Sysdiagrams не является системной таблицей с точки зрения сервера.

Но SQL Server Management Studio создает его для хранения данных диаграммы, поэтому он также классифицирует его как системную таблицу.

Вы можете исключить подобные системные таблицы, используя упомянутый вами расширенный атрибут.

11
Zev Spitz 28 Дек 2015 в 22:16

Management Studio использует следующее при определении «Системных объектов», где «tbl» - это sys.tables:

CAST(
 case 
    when tbl.is_ms_shipped = 1 then 1
    when (
        select 
            major_id 
        from 
            sys.extended_properties 
        where 
            major_id = tbl.object_id and 
            minor_id = 0 and 
            class = 1 and 
            name = N'microsoft_database_tools_support') 
        is not null then 1
    else 0
end          
             AS bit) AS [IsSystemObject]
17
Maxim 13 Мар 2015 в 19:33