2016-06-17 17 views
0

ここに来ました。最近、WinformsアプリケーションからSQL Serverデータベースを作成するように私の上司から命じられました。プログラムでデータベースを作成しようとしています。しかし、たびにエラーメッセージが表示されます。C#からSQL Serverデータベースファイル(.mdf)をプログラムで作成するにはどうすればよいですか?

enter image description here

それはプログラムでSQL Serverデータベースファイル(.mdf)を作成することは可能ですか?

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 
using System.Data.SqlClient; 

namespace mdf_creator 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void btnCreateDatabase_Click(object sender, EventArgs e) 
     { 
      String str; 
      SqlConnection myConn = new SqlConnection("Data Source =(LocalDB)\\MSSQLLocalDB; Integrated security =SSPI;database=master"); 
     str = "CREATE DATABASE ss ON PRIMARY " + 
      "(NAME = ss_Data, " + 
      "FILENAME = 'D:\\ss.mdf', " + 
      "SIZE = 3MB, MAXSIZE = 10MB, FILEGROWTH = 10%) " + 
      "LOG ON (NAME = ss_Log, " + 
      "FILENAME = 'D:\\ss.ldf', " + 
      "SIZE = 1MB, " + 
      "MAXSIZE = 5MB, " + 
      "FILEGROWTH = 10%)"; 

     SqlCommand myCommand = new SqlCommand(str, myConn); 

     try 
     { 
      myConn.Open(); 
      myCommand.ExecuteNonQuery(); 
      MessageBox.Show("DataBase is Created Successfully", "MyProgram",  MessageBoxButtons.OK, MessageBoxIcon.Information); 
     } 
     catch (System.Exception ex) 
     { 
      MessageBox.Show(ex.ToString(), "MyProgram", 
MessageBoxButtons.OK, MessageBoxIcon.Information); 
     } 
     finally 
     { 
       if (myConn.State == ConnectionState.Open) 
       { 
        myConn.Close(); 
       } 
     } 
    } 
} 

私のコードにはどこの問題がありますか?

+0

アクセスが拒否されました。ファイルを作成しようとしている場所にファイルを作成する権限がありません。 – LarsTech

+0

私はこのコメントを回答として投稿しましたので、 – Justin

+0

を参照してください。別の場所も使用しました。しかし、同じエラーが表示されます。 –

答えて

2

エラーメッセージは、SQL Serverが 'D:'ドライブにファイルを作成できなかったことを示しています。 SQLサーバーが実行されているユーザーが、そのドライブに必要なマッピングとアクセス権を持っていることを確認します。

+0

データベースをドライブの残りの部分に保存しようとしました。同じエラーメッセージが表示されます。 –

+0

あなたが許可を必要とするのはあなたではありません。これはSQLサーバーです。 services.mscを見て、どのユーザーのSQLサーバーが動作しているかを確認してください。それは許可が必要なユーザーです。 – GWLlosa

0

はい。

あなたは、私が最初に管理者としてのVisual Studioを実行することをお勧めSQL Server Managments Objects

//Connect to the local, default instance of SQL Server. 
Server srv = new Server(); 

// Define a Database object variable by supplying the server and the 
// database name arguments in the constructor. 
Database db = new Database(srv, "Test_SMO_Database"); 

//Create the database on the instance of SQL Server. 
db.Create(); 

//Reference the database and display the date when it was created. 
db = srv.Databases["Test_SMO_Database"]; 
Console.WriteLine(db.CreateDate); 
+0

私はプログラミングがとても新しいです。私はあなたの答えを理解していません。 –

0

を使用することができます。 Visual Studioアイコンを右クリックし、[管理者として実行]をクリックします。

私もここに答えを実装することをお勧め:How to request administrator permissions when the program starts?

これには、アプリケーションは、ファイルを削除/作成している場合、それは一般的に必要となる、稼働しているマシンの管理者アクセスが必要になりますです。

編集:Visual Studioが管理者として実行されているときにドライブにアクセスできない場合は、プロジェクトの問題ではなく、そのドライブのウィンドウのアクセス権があります。

関連する問題