从C#中检索用户定义的表类型的模式

时间:2014-11-08 00:33:10

标签: c# sql-server schema

我想知道C#中是否有办法从SQL数据库实例中检索用户定义表类型的模式。我看到DbConnection类为获取表模式信息提供了GetSchema()方法,但我无法找到获取用户定义表类型的模式信息的方法。我对检索感兴趣的是类型的名称,以及有关数据类型,可空,名称等列的信息。有没有人有这方面的经验?谢谢!

注意:这个问题不是询问如何将用户定义的表类型作为参数传递给C#中的存储过程

3 个答案:

答案 0 :(得分:0)

使用程序

sp_columns' TableName'

在SqlServer中获取架构信息。

答案 1 :(得分:0)

使用SMO。我只是一名DBA,所以Powershell是我的首选工具,但这些概念应该可以立即转让:

import-module sqlps -disablenamechecking;
$s = new-object microsoft.sqlserver.management.smo.server '.';
$db = $s.databases['myDatabase'];

$db.UserDefinedTableTypes | select schema, name;

一旦有了UserDefinedTableType SMO对象,就可以在给定类型上使用Columns方法,该方法将返回Column对象的集合。其中每一个都将包含列的所有相关信息(名称,类型,可空性等)

答案 2 :(得分:0)

不是一个完美的解决方案。但这会奏效。假设您使用的已定义表格类型名称为" UDT_Sample"

DECLARE @UDT UDT_Sample
SELECT * INTO tempUDT FROM @UDT
EXECUTE sp_columns 'tempUDT'
DROP TABLE tempUDT