簡體   English   中英

從C#檢索用戶定義表類型的架構

[英]Retrieve schema of User Defined Table Type from C#

我想知道C#中是否有一種方法可以從SQL數據庫實例檢索用戶定義表類型的架構。 我看到DbConnection類提供了用於獲取表架構信息的GetSchema()方法,但是我還沒有找到一種方法來獲取用戶定義的表類型的架構信息。 我感興趣的是類型的名稱,以及有關列的信息,例如數據類型,可為空,名稱等。是否有人有這樣做的經驗? 謝謝!

注意:這個問題不是在問如何從C#將用戶定義的表類型作為參數傳遞給存儲過程。

使用程序

sp_columns'TableName'

獲取SqlServer中的架構信息。

使用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對象的集合。 這些中的每一個都將具有列的所有相關信息(名稱,類型,可為空性等)

不是一個完美的解決方案。 但這會起作用。 假設您使用的已定義表類型名稱為“ UDT_Sample”

DECLARE @UDT UDT_Sample
SELECT * INTO tempUDT FROM @UDT
EXECUTE sp_columns 'tempUDT'
DROP TABLE tempUDT
        using (var connection = CreateConnection())
        {
            connection.Open();
            UserDefinedSchemaTable = connection.GetSchema("StructuredTypeMembers", new string[] { null, null, null,null });
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM