0

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

使用 OleDbConnection 时,我可以做到

string[] restrictions = new string[4];
connection.GetSchema("Tables", restrictions); 

它将返回所有用户表、所有系统视图和所有系统表

如何使用 SqlConnection 做到这一点?似乎 SqlConnection 上的 GetSchema 只返回用户表和视图,但没有系统表或视图。第 4 个限制参数似乎只接受 VIEW 和 BASE TABLE。

string[] restrictions = new string[4];
restrictions[3] = 'BASE TABLE";
connection.GetSchema("Tables", restrictions); 

我可以为这个参数使用另一个值来获取系统视图和表格吗?还是有另一种方法可以使用 SqlConnection 检索系统视图和表?

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

4

1 回答 1

0

另一种方法是查询 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');
于 2014-06-30T12:11:39.510 回答