これは誰かが同じ問題を抱えている場合の情報提供のためのものです。私にこの道を邪魔してくれた@Panagiotis Kanavosに感謝します。
SQL Serverは大文字と小文字を区別しないと考えられていますが、すべてのインストールで大文字と小文字が区別されない場合は、テーブル名にUPPERを使用しています。 INDEXNAMEは/ object_idのサブクエリが必要とされていないuniquetheテーブルである場合
private static bool GetSqlServerIndexUniqueness(DbConnection cnctn, string tableName, string indexName)
{
bool isUnique = false;
using (SqlCommand cmd = ((SqlConnection) cnctn).CreateCommand())
{
cmd.CommandText =
"SELECT is_unique FROM sys.indexes WHERE name = @IndexName AND object_id = " +
"(SELECT object_id FROM sys.tables WHERE upper(name) = @TableNameUpper)";
cmd.Parameters.AddWithValue("@IndexName", indexName);
cmd.Parameters.AddWithValue("@TableNameUpper", tableName.ToUpper());
var readValue = cmd.ExecuteScalar();
if (readValue != null)
isUnique = Convert.ToInt32(readValue) != 0;
}
return isUnique;
}
:NOTEこれは、それはかなり遅いのであれば、それは大文字小文字を区別しないということを確認することができ、こののようにそれをしません。これはそれをより速くするでしょう。
投票の理由をコメントしてくれてありがとうございます。すごく元気にしましょう! –
実際に質問は何ですか?私はdownvoteをしませんでしたが、*何をしようとしていますか、なぜGetSchemaを使ってそれをやっていますか?あなたが言うように、ドキュメンテーションでGetSchemaを使うことができないと言われたら、なぜ 'sys'ビューに問い合わせるのではなく、なぜそれを使用していますか? –
実際、私はそれに値するが、downvotedときに私は本当に説明を感謝します。ドキュメントは何年も古いので、私はそれが今では同等のもので可能かもしれないと思った。私は私の質問を書き換えます。私はsys viewについて@PanagiotisKanavosモードを聞きたい。 –