Sql server 通过SqlConnection获取系统表和视图
我试图从C#(VS 2012)中的LocalDB数据库中获取所有表 使用OLEDB连接时,我可以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
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时返回的结果要少。另一种方式会有一些逻辑,但我无法理解。