通过SqlConnection获取系统表和视图

时间:2014-06-30 09:32:39

标签: sql-server sqlconnection getschema

我试图从C#(VS 2012)

中获取LocalDB数据库中的所有表

使用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。

1 个答案:

答案 0 :(得分: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');