適用対象:
.NET Framework
.NET
.NET Standard
ADO.NET のダウンロード
GetSchema メソッドの 2 番目のオプション パラメーターは、返されるスキーマ情報の量を制限するために使用される制限で、文字列の配列として GetSchema メソッドに渡されます。 配列での位置により、渡すことができる値が決定します。これは、制限の番号に相当します。
たとえば、次の表は、Microsoft SqlClient Data Provider for SQL Server を使用する "テーブル" スキーマ コレクションでサポートされている制限を示しています。 SQL Server スキーマ コレクションの追加の制限をこのトピックの終わりに示します。
制限の名前 |
パラメーター名 |
制限の既定値 |
制限の番号 |
Catalog |
@Catalog |
TABLE_CATALOG |
1 |
Owner |
@Owner |
TABLE_SCHEMA |
2 |
テーブル |
@Name |
TABLE_NAME |
3 |
TableType |
@TableType |
TABLE_TYPE |
4 |
制限値の指定
"Tables" スキーマ コレクションの制限の 1 つを使用するには、4 つの要素を使って文字列の配列を作成してから、制限の番号と一致する要素内に値を配置します。 たとえば、GetSchema メソッドにより返されるテーブルを、"Sales" スキーマ内のテーブルのみに制限するには、GetSchema メソッドに渡す前に、配列の 2 番目の要素を "Sales" に設定します。
Note
SqlClient
の制限のコレクションには、追加の ParameterName
列があります。 制限の既定の列は、下位互換性のために存在してはいますが、現在は無視されています。 制限値を指定するときに SQL インジェクション攻撃のリスクを最小限に抑えるには、文字列置換ではなくパラメーター化されたクエリを使用する必要があります。
- 配列内の要素数は、指定したスキーマ コレクションでサポートされる制限数以下にする必要があります。そうでない場合、ArgumentException がスローされます。 制限は最大数よりも小さい場合があります。 指定されていない制限は、null (無制限) と見なされます。
Microsoft SqlClient Data Provider for SQL Server に対してクエリを実行して、サポートされている制限の一覧を確認するには、"Restrictions" という制限のスキーマ コレクションの名前を指定して GetSchema メソッドを呼び出します。 これにより、コレクション名の一覧、制限の名前、既定の制限値、および制限の番号と共に、DataTable が返されます。
例
Microsoft SqlClient Data Provider for SQL Server SqlConnection クラスの GetSchema メソッドを使って、AdventureWorks サンプル データベースに含まれるすべてのテーブルに関するスキーマ情報を取得し、返される情報を "Sales" スキーマ内のテーブルのみに制限する方法について、いくつかの例を次に示します。
using System;
using System.Data;
using Microsoft.Data.SqlClient;
class Program
{
static void Main(string[] args)
{
string connectionString = "Data Source = localhost; Integrated Security = true; Initial Catalog = AdventureWorks";
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
// Specify the restrictions.
string[] restrictions = new string[4];
restrictions[1] = "Sales";
System.Data.DataTable table = connection.GetSchema("Tables", restrictions);
// Display the contents of the table.
DisplayData(table);
Console.WriteLine("Press any key to continue.");
Console.ReadKey();
}
}
private static void DisplayData(System.Data.DataTable table)
{
foreach (System.Data.DataRow row in table.Rows)
{
foreach (System.Data.DataColumn col in table.Columns)
{
Console.WriteLine("{0} = {1}", col.ColumnName, row[col]);
}
Console.WriteLine("============================");
}
}
}
SQL Server スキーマの制限
次の表に、SQL Server スキーマ コレクションの制限を示します。
Users
制限の名前 |
パラメーター名 |
制限の既定値 |
制限の番号 |
User_Name |
@Name |
name |
1 |
データベース
制限の名前 |
パラメーター名 |
制限の既定値 |
制限の番号 |
名前 |
@Name |
名前 |
1 |
[テーブル]
制限の名前 |
パラメーター名 |
制限の既定値 |
制限の番号 |
Catalog |
@Catalog |
TABLE_CATALOG |
1 |
Owner |
@Owner |
TABLE_SCHEMA |
2 |
テーブル |
@Name |
TABLE_NAME |
3 |
TableType |
@TableType |
TABLE_TYPE |
4 |
列
制限の名前 |
パラメーター名 |
制限の既定値 |
制限の番号 |
Catalog |
@Catalog |
TABLE_CATALOG |
1 |
Owner |
@Owner |
TABLE_SCHEMA |
2 |
テーブル |
@Table |
TABLE_NAME |
3 |
Column |
@Column |
COLUMN_NAME |
4 |
StructuredTypeMembers
制限の名前 |
パラメーター名 |
制限の既定値 |
制限の番号 |
Catalog |
@Catalog |
TABLE_CATALOG |
1 |
Owner |
@Owner |
TABLE_SCHEMA |
2 |
テーブル |
@Table |
TABLE_NAME |
3 |
Column |
@Column |
COLUMN_NAME |
4 |
Views
制限の名前 |
パラメーター名 |
制限の既定値 |
制限の番号 |
Catalog |
@Catalog |
TABLE_CATALOG |
1 |
Owner |
@Owner |
TABLE_SCHEMA |
2 |
テーブル |
@Table |
TABLE_NAME |
3 |
ViewColumns
制限の名前 |
パラメーター名 |
制限の既定値 |
制限の番号 |
Catalog |
@Catalog |
VIEW_CATALOG |
1 |
Owner |
@Owner |
VIEW_SCHEMA |
2 |
テーブル |
@Table |
VIEW_NAME |
3 |
Column |
@Column |
COLUMN_NAME |
4 |
ProcedureParameters
制限の名前 |
パラメーター名 |
制限の既定値 |
制限の番号 |
Catalog |
@Catalog |
SPECIFIC_CATALOG |
1 |
Owner |
@Owner |
SPECIFIC_SCHEMA |
2 |
名前 |
@Name |
SPECIFIC_NAME |
3 |
パラメーター |
@Parameter |
PARAMETER_NAME |
4 |
プロシージャ
制限の名前 |
パラメーター名 |
制限の既定値 |
制限の番号 |
Catalog |
@Catalog |
SPECIFIC_CATALOG |
1 |
Owner |
@Owner |
SPECIFIC_SCHEMA |
2 |
名前 |
@Name |
SPECIFIC_NAME |
3 |
種類 |
@Type |
ROUTINE_TYPE |
4 |
IndexColumns
制限の名前 |
パラメーター名 |
制限の既定値 |
制限の番号 |
Catalog |
@Catalog |
db_name() |
1 |
Owner |
@Owner |
user_name() |
2 |
テーブル |
@Table |
o.name |
3 |
ConstraintName |
@ConstraintName |
x.name |
4 |
Column |
@Column |
c.name |
5 |
Indexes
制限の名前 |
パラメーター名 |
制限の既定値 |
制限の番号 |
Catalog |
@Catalog |
db_name() |
1 |
Owner |
@Owner |
user_name() |
2 |
テーブル |
@Table |
o.name |
3 |
UserDefinedTypes
制限の名前 |
パラメーター名 |
制限の既定値 |
制限の番号 |
assembly_name |
@AssemblyName |
assemblies.name |
1 |
udt_name |
@UDTName |
types.assembly_class |
2 |
ForeignKeys
制限の名前 |
パラメーター名 |
制限の既定値 |
制限の番号 |
Catalog |
@Catalog |
CONSTRAINT_CATALOG |
1 |
Owner |
@Owner |
CONSTRAINT_SCHEMA |
2 |
テーブル |
@Table |
TABLE_NAME |
3 |
名前 |
@Name |
CONSTRAINT_NAME |
4 |
関連項目