[英]Get list of tables but not include system tables (SQL Server 2K)?
我知道我可以使用以下查询从给定数据库中获取表的列表:
select *
from information_schema.tables
我如何排除系统表呢?
我知道这是一个相当古老的问题,但有人只是编辑它来复活它,从我的角度来看,“正确”的答案不是列出的两个。 接受的答案包括一些“系统”表(评论中提到了dtproperties
。如果用户有任何复制,他们会发现更多)。
另一个答案使用2005表,但几乎是正确的。 对于2000,您希望使用OBJECTPROPERTY
:
select name from sysobjects where
OBJECTPROPERTY(id,N'IsTable')=1 and
OBJECTPROPERTY(id,N'IsMSShipped')=0
select name from sysobjects where type='U'
SELECT name FROM [database].sys.tables where is_ms_shipped=0
SELECT *
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME NOT LIKE 'sys%'
这不是一个优雅的解决方案,但这是我快速排除dbo.sysdiagrams的方法,这是我列表中唯一的系统表。
我知道这也是一个很老的问题,但你可以执行sql server存储过程:
EXEC sp_tables @table_name =“%”,@ table_owner =“%”,@ table_type =“'TABLE'”
并检索您的表格列表。 但是SQL 2K不支持。 自2005年服务器以来就存在......
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.