2012-04-25 15 views
3

DataAdapter.FillSchemaを使用して、MS SQLからテーブルのスキーマを取得しています。残念ながら、これは列のデフォルト値を返しません。何百ものテーブルを調べる必要があるので、スキーマの一部としてこの値を高速かつ効率的に取り出す方法はありますか?MS SQLデータテーブルから列の既定値を取得する方法

ありがとうございます!

+0

結果のDataTableには、各項目がDefaultValueプロパティを持つColumnsコレクションを持っています。それはそれを正しく満たしていないのですか? –

+0

それはあなたに役立つかどうかはわかりませんが、私は[SQL toolset](http://code.google.com/p/bsn-modulestore/)を書いて、デフォルト値を含むすべてのテーブルから抽象構文ツリーを作成することができますこれがどのように行われているか興味があれば[こちら](http://code.google.com/p/bsn-modulestore/source/browse/bsn.ModuleStore/Sql/DatabaseInventory.cs)から始まるソースを見てください) 。 LGPLとしてライセンスされています。 – Lucero

+0

それは問題です。そのプロパティは満たされていません。 – Daniel

答えて

0

テーブルスキーマを取得するには、このようなものを試す必要があります。

public partial class Form1 : Form 
{ 
    //create connectionString variable 
    const string conString = @"Data Source=.\SQLEXPRESS; Initial Catalog=DBTest; Integrated Security=SSPI"; 

    SqlConnection cn = null; 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     this.getTableSchema(); 
    } 

//function to get the schemas from the Tables in MSSQLSERVER 
    private void getTableSchema() 
    { 
     try 
     { 

      cn = new SqlConnection(conString); 
      cn.Open(); 

      //call the getSchema Method of the SqlConnection Object passing in as a parameter the schema to retrieve 
      DataTable dt = cn.GetSchema("tables"); 

      //Binded the retrieved data to a DataGridView to show the results. 
      this.dataGridView1.DataSource = dt; 


     } 
     catch (Exception) 
     { 

      throw; 
     } 
    } 


} 

EDIT:

7

デフォルト値は行のみ挿入時に決定されるconStringに閉じ引用。

別の方法として、あなたはInformation_schema

SELECT TABLE_NAME, COLUMN_NAME, COLUMN_DEFAULT 
FROM AdventureWorks2012.INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME = 'Person'; 
0

は、次のクエリを試してみてください利用することができます:あなたはFillSchemaの実行を使用していることを行うことができます方法はありません

SELECT object_definition(default_object_id) AS definition 
FROM sys.columns 
WHERE name  ='ColumnName' 
AND object_id = object_id('TableName') 
0

。詳細については、下記のリンクを参照してください。 http://msdn.microsoft.com/en-us/library/229sz0y5.aspx

INFORMATION_SCHEMAはあなたが見るべき場所です。 INFORMATION_SCHEMAには、データベース構造の詳細を示すことができる多くのシステムビューが含まれています。たとえば

INFORMATION_SCHEMA.TABLES:データベース内のテーブルの一覧を表示します。 INFORMATION_SCHEMA.COLUMNS:データベースのすべてのテーブルの列とその属性の一覧を表示します。詳細は以下の場所をご覧ください。

http://msdn.microsoft.com/en-us/library/ms186778.aspx

は、クエリ次使用することができますクエリを使用して、デフォルト値を取得するには、次の

SELECT * 
FROM INFORMATION_SCHEMA.Columns 
WHERE TABLE_NAME = 'YourTableName' 
関連する問題