0

新しいデータベースを作成し、そのデータベースにテーブルを追加するプログラムを作成しています。これが私のコードです....

InsertTable("Create Database iBlast", "Null");
InsertTable("Create Table iBlast.tblBoreHoles (HoleID uniqueIdentifier, HoleName nvarchar(40), JobID uniqueidentifier, CreateDate datetime, Longitude float, Latitude float, Altitude float, HoleDia real, ExpectedDepth float)", "iBlast");


static void InsertTable(String sqlQuery, string InitialCatalog)
{
    SqlConnection sqlConn = new SqlConnection();
    //sqlConn.ConnectionString = "Data Source=VIRTUAL2KB;Initial Catalog=PCS6000SQL;User ID=sa;Password=password;Integrated Security=False";
    if (InitialCatalog == "Null")
    {
        sqlConn.ConnectionString = "Data Source=VEEMER11;Integrated Security=True";
    }
    else
    {
        sqlConn.ConnectionString = "Data Source=VEEMER11;Initial Catalog=" + InitialCatalog + ";Integrated Security=True";
    }   
    sqlConn.Open();
    SqlCommand sqlCommand = new SqlCommand(sqlQuery, sqlConn);
    sqlCommand.ExecuteNonQuery();
}

データベースの作成は正常に機能しますが、コードがテーブルを作成しようとするとエラーが発生します。

エラー = 「指定されたスキーマ名 "iBlast" が存在しないか、使用する権限がありません。」

どんな助けでも大歓迎です。

4

4 に答える 4

3

「iBlast」を初期カタログとして指定しているため、クエリで指定する必要はありません。

 InsertTable("Create Table tblBoreHoles (...)", "iBlast");

指定する必要がある場合、構文はiBlast..tblBoreHolesorになりますiBlast.dbo.tblBoreHoles

于 2012-01-18T15:35:38.160 に答える
2

あなたの場合、2 行目に iBlast を使用してデータベースを指定しているのではなく、現在のデータベースのスキーマを指定しています。[データベース].[スキーマ].[テーブル] のようにする必要があります。

于 2012-01-18T15:35:58.327 に答える
1

iblast.dbo.tblBoreHoles または iBlast..tblBoreHoles を実行する必要があります。SQLの命名規則では、テーブル名の直前の部分は常にスキーマであり、「iBlast」で参照しようとしているようには見えません

于 2012-01-18T15:34:53.647 に答える
0

これを試して:

    else
    {
        sqlConn.ConnectionString = "Data Source=VEEMER11;Initial Catalog=" + InitialCatalog + ";Integrated Security=SSPI";
    } 

SSPIに変更すると、必要なアクセス許可が得られる場合があります。Windowsユーザーが完全なDBO権限を持っていることをサーバーで確認してください。

また、インサートを次のように変更します。

InsertTable("Create Table tblBoreHoles (HoleID uniqueIdentifier, HoleName nvarchar(40), JobID uniqueidentifier, CreateDate datetime, Longitude float, Latitude float, Altitude float, HoleDia real, ExpectedDepth float)", "iBlast");
于 2012-01-18T15:37:05.587 に答える