我想知道C#中是否有办法从SQL数据库实例中检索用户定义表类型的模式。我看到DbConnection
类为获取表模式信息提供了GetSchema()
方法,但我无法找到获取用户定义表类型的模式信息的方法。我对检索感兴趣的是类型的名称,以及有关数据类型,可空,名称等列的信息。有没有人有这方面的经验?谢谢!
注意:这个问题不是询问如何将用户定义的表类型作为参数传递给C#中的存储过程
答案 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