2012-01-18 34 views
0

新しいデータベースを作成し、そのデータベースにテーブルを追加するプログラムを作成しています。ここに私のコードです....C#.netを使用してSQL MSDE 2000で新しいデータベースと新しいテーブルをプログラムで作成するにはどうすればよいですか?

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(); 
} 

データベースの作成が正常に動作しますが、コードがテーブルを作成するためにtrysとき、私はエラーを取得します。

Error = "指定されたスキーマ名" iBlast "が存在しないか、または あなたはそれを使用する権限を持っていません。

ご協力いただければ幸いです。

+0

を使用すると、MSDE 2000の代わりに、SQL Expressを使用しているのはなぜ? – Oded

+0

プログラムはWindows 2000のみを実行するPLCで動作しています。 – MagnumPI

答えて

3

"iBlast"を初期カタログとして指定しています。クエリでそれを指定する必要はありません:あなたはそれを指定する必要がなかった場合、構文はiBlast..tblBoreHolesまたはiBlast.dbo.tblBoreHolesだろう

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

+0

私は元々それを残していましたが、同じエラーが発生していました。それが私が追加した理由です。これは、関数がデータベースとテーブルを追加するためです。しかし、iBlast.dbo.tblBoreHoles ...は機能しました。ありがとう、私は自分自身を実現していない愚かな感じ! – MagnumPI

1

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

+0

2つの回答を正しいものとしてマークすることはできませんが、これも正解です...ありがとうございます。 – MagnumPI

2

2番目の行にiBlastを使用してデータベースを指定していない場合は、現在のデータベースのスキーマを指定しています。 。。 は、[データベース]のようなものであるべき[スキーマ] [テーブル]

+0

私は2つの答えを正しいものとしてマークすることはできませんが、これも正解でした...ありがとう – MagnumPI

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"); 
関連する問題