SSMSで以下を実行すると、テーブルが存在しなければ作成されます。しかし、私のSQLCommandコードでは、接続してエラーなしでクエリを送信しますが、存在しない場合はテーブルを作成しません。何か案は?SQLコマンドはC#SqlCommandではなくSSMSで動作します
string[] tables = new string[6];
tables[0] += ("IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[AD_Authorization]') AND type in (N'U')) " +
"CREATE TABLE [AD_Authorization]([ID] [bigint] IDENTITY(1,1) NOT NULL, " +
" [AD_Account] [varchar](255) NOT NULL, " +
" [AD_SID] [varchar](255) NOT NULL, " +
" [AD_EmailAddress] [varchar](255) NULL, " +
" [DateImported] [datetime] NOT NULL, " +
" [Active] [bit] NULL) ON [PRIMARY]");
for (int i = 0; i <= 5; i++)
{
using (SqlConnection connection = new SqlConnection(ConnectionString))
{
using (SqlCommand cmd = new SqlCommand(tables[i], connection))
{
connection.Open();
cmd.CommandType = CommandType.Text;
cmd.ExecuteNonQuery();
connection.Close();
}
}
}
SSMSのようにログインしているユーザーとは異なるコードでこれを実行するユーザーには、 が異なる場合は、プロジェクト内で使用しているのと同じユーザとして接続してみてください。 –
他にも:sys.objectsではなく、より正確で集中的な 'sys.tables'を使用しますあなたが興味を持っているオブジェクトのタイプを指定する) - '存在しない場合(SELECT * FROM sys.tables WHERE Name = 'AD_Authorization').... - しかし、これは何か違いが生じるのではないかと疑問に思う –
fullコード。 –