如何使用 SqlConnection.GetSchema 获取同义词信息?

Posted

技术标签:

【中文标题】如何使用 SqlConnection.GetSchema 获取同义词信息?【英文标题】:How can I use SqlConnection.GetSchema to get synonym information? 【发布时间】:2015-11-02 13:53:01 【问题描述】:

使用这样的代码:

DataTable schema = conn.GetSchema();
DataTable tables = conn.GetSchema("Tables");
DataTable columns = conn.GetSchema("Columns");

可以获取有关架构的大量信息,但元数据版本(即:GetSchema())不会返回任何有关同义词的信息。

我们在环境中大量使用同义词。我可以使用 GetSchema 获取有关它们的 Schema 信息,还是需要其他方法?

【问题讨论】:

GetSchema() 是一个非常糟糕的东西,它报告了给定数据库信息的 5%(对于其他数据库,它甚至比 SQL Server 还要好)。我建议您使用sys.synonyms,此处记录:msdn.microsoft.com/en-us/library/ms189458.aspx 【参考方案1】:

Synonyms for SQL Server 没有架构集合:

SQL Server Schema Collections

似乎有一种方法可以用 .NET 3.5 覆盖集合。我从来没有这样做过,所以我不知道它是否真的有效。基本思想是创建一个 XML 文件来定义 getschema 如何定义和查询模式数据。然后更改应用程序配置以使用此 XML 文件覆盖可用的集合。

GetSchema Override

提供的链接中有一些示例可以将主键集合添加到架构中。如果您决心使用getschema,它看起来很有希望。否则,您可以创建自己的架构函数并查询 sys.synonyms 以获取同义词。

【讨论】:

谢谢,抱歉回复晚了。我害怕这个。我很欣赏这个建议,但由于我对它的使用有限,我想我会回到编写查询以读取信息模式视图的旧技巧。

以上是关于如何使用 SqlConnection.GetSchema 获取同义词信息?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用本机反应创建登录以及如何验证会话

如何在自动布局中使用约束标识符以及如何使用标识符更改约束? [迅速]

如何使用 AngularJS 的 ng-model 创建一个数组以及如何使用 jquery 提交?

如何使用laravel保存所有行数据每个行名或相等

如何使用 Math.Net 连接矩阵。如何使用 Math.Net 调用特定的行或列?

WSARecv 如何使用 lpOverlapped?如何手动发出事件信号?