如何使用 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 提交?