Sql server 通过SqlConnection获取系统表和视图

Sql server 通过SqlConnection获取系统表和视图,sql-server,sqlconnection,getschema,Sql Server,Sqlconnection,Getschema,我试图从C#(VS 2012)中的LocalDB数据库中获取所有表 使用OLEDB连接时,我可以 string[] restrictions = new string[4]; connection.GetSchema("Tables", restrictions); 它将返回所有用户表、所有系统视图和所有系统表 如何使用SqlConnection实现这一点? SqlConnection上的GetSchema似乎只返回用户表和视图,而不返回系统表或视图。第四个限制参数似乎只接受视图和基表 st

我试图从C#(VS 2012)中的LocalDB数据库中获取所有表

使用OLEDB连接时,我可以

string[] restrictions = new string[4];
connection.GetSchema("Tables", restrictions); 
它将返回所有用户表、所有系统视图和所有系统表

如何使用SqlConnection实现这一点? SqlConnection上的GetSchema似乎只返回用户表和视图,而不返回系统表或视图。第四个限制参数似乎只接受视图和基表

string[] restrictions = new string[4];
restrictions[3] = 'BASE TABLE";
connection.GetSchema("Tables", restrictions); 
我是否可以使用此参数的另一个值来获取系统视图和表? 或者是否有其他方法可以使用SqlConnection检索系统视图和表


我无法使用OleDbConnection,因为我必须使用LocalDB,而且似乎无法使用OleDbConnection连接到LocalDB。

另一种方法是查询SQL Server目录视图

SELECT 
      OBJECT_SCHEMA_NAME(object_id) AS SchemaName
    , name AS ObjectName
    , type_desc AS ObjectType
FROM sys.system_objects
WHERE
    type_desc IN('USER_TABLE', 'SYSTEM_TABLE', 'VIEW')
UNION ALL
SELECT 
      OBJECT_SCHEMA_NAME(object_id) AS SchemaName
    , name AS ObjectName
    , type_desc AS ObjectType
FROM sys.objects
WHERE
    type_desc IN('USER_TABLE', 'SYSTEM_TABLE', 'VIEW');

我正在读取sys.all_对象以执行此操作。它可以工作,但如果GetSchema能够完成它的工作,那就太好了。我看不出为什么在SQL Server上使用SqlConnection时返回的结果比在SQL Server上使用OleDbConnection时返回的结果要少。另一种方式会有一些逻辑,但我无法理解。