meh*_*tfi 19 sql-server sql-server-2008 sql-server-2008-r2 sql-server-2012
在简单数据库中使用数据库图时,SQL Server在Table\Systam Tables节点中创建一个dbo.sysdiagrams表(在Microsoft management studio\object explorer中).但sysdiagrams表在SQL Server中标记为用户表.您可以通过以下查询获取用户表.
SELECT *
FROM sys.tables t
WHERE OBJECTPROPERTY(t.object_id,'IsUserTable') = 1
Run Code Online (Sandbox Code Playgroud)

我不知道sysdiagram表是系统表还是用户表.
存在microsoft_database_tools_support的值1在sysdiagram的扩展属性中,它确定自动创建的表.

小智 13
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]
Run Code Online (Sandbox Code Playgroud)
系统表由SQL Server在内部使用,它们在每个用户数据库中都是相同的.
从服务器的角度来看,sysdiagrams不是系统表.
但SQL Server Management Studio创建它以存储图表数据,因此它还将其分类为系统表.
您可以使用您提到的扩展属性排除此类系统表.
| 归档时间: |
|
| 查看次数: |
17335 次 |
| 最近记录: |