DataAdapter.FillSchema
を使用して、MS SQLからテーブルのスキーマを取得しています。残念ながら、これは列のデフォルト値を返しません。何百ものテーブルを調べる必要があるので、スキーマの一部としてこの値を高速かつ効率的に取り出す方法はありますか?MS SQLデータテーブルから列の既定値を取得する方法
ありがとうございます!
DataAdapter.FillSchema
を使用して、MS SQLからテーブルのスキーマを取得しています。残念ながら、これは列のデフォルト値を返しません。何百ものテーブルを調べる必要があるので、スキーマの一部としてこの値を高速かつ効率的に取り出す方法はありますか?MS SQLデータテーブルから列の既定値を取得する方法
ありがとうございます!
テーブルスキーマを取得するには、このようなものを試す必要があります。
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:
デフォルト値は行のみ挿入時に決定されるconStringに閉じ引用。
別の方法として、あなたはInformation_schema
SELECT TABLE_NAME, COLUMN_NAME, COLUMN_DEFAULT
FROM AdventureWorks2012.INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'Person';
は、次のクエリを試してみてください利用することができます:あなたはFillSchemaの実行を使用していることを行うことができます方法はありません
SELECT object_definition(default_object_id) AS definition
FROM sys.columns
WHERE name ='ColumnName'
AND object_id = object_id('TableName')
。詳細については、下記のリンクを参照してください。 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'
結果のDataTableには、各項目がDefaultValueプロパティを持つColumnsコレクションを持っています。それはそれを正しく満たしていないのですか? –
それはあなたに役立つかどうかはわかりませんが、私は[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
それは問題です。そのプロパティは満たされていません。 – Daniel