如何从C#以编程方式创建SQL Server数据库文件(.mdf)?

如何从C#以编程方式创建SQL Server数据库文件(.mdf)?,c#,sql-server,database,winforms,C#,Sql Server,Database,Winforms,我是新来的。最近,我的老板命令我从Winforms应用程序创建SQL Server数据库。我正在尝试以编程方式创建数据库。但每次我收到错误信息 可以通过编程方式创建SQL Server数据库文件(.mdf)吗 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using S

我是新来的。最近,我的老板命令我从Winforms应用程序创建SQL Server数据库。我正在尝试以编程方式创建数据库。但每次我收到错误信息

可以通过编程方式创建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();
                }
        }
    }
}

我的代码哪里有问题?

错误消息表明SQL server无法在“D:”驱动器上创建文件。确保运行SQL server的用户具有对该驱动器的必要映射和访问权限。

错误消息表示SQL server无法在“D:”驱动器上创建文件。确保运行SQL server的用户具有对该驱动器的必要映射和访问权限。

你可以用

你可以用


我建议首先以管理员身份运行VisualStudio。右键单击Visual Studio图标并“以管理员身份运行”

我还建议在这里落实答案:

因此,您的应用程序需要在其运行的计算机上具有管理员访问权限,如果它正在创建/删除文件,通常需要管理员访问权限


编辑:如果在Visual Studio以管理员身份运行时仍然无法访问该驱动器,则可能是该窗口对该驱动器的权限问题,而不是项目的任何问题。

我建议首先以管理员身份运行Visual Studio。右键单击Visual Studio图标并“以管理员身份运行”

我还建议在这里落实答案:

因此,您的应用程序需要在其运行的计算机上具有管理员访问权限,如果它正在创建/删除文件,通常需要管理员访问权限


编辑:如果您在Visual Studio以管理员身份运行时仍然无法访问该驱动器,则可能是该窗口对该驱动器的权限问题,而不是项目的任何问题。

拒绝访问非常有用。您没有权限在尝试创建文件的位置创建文件。我将此评论作为答案发布,因此请参考我使用的其他位置。但它显示了相同的错误。看起来您没有访问D:\驱动器的权限。您的错误消息显示“访问被拒绝”。虽然我以管理员身份运行visual studio,但问题仍然相同。访问被拒绝非常有用。您没有权限在尝试创建文件的位置创建文件。我将此评论作为答案发布,因此请参考我使用的其他位置。但它显示了相同的错误。看起来您没有访问D:\驱动器的权限。您的错误消息显示“访问被拒绝”。尽管我以管理员身份运行visual studio,但仍然存在相同的问题。我试图将数据库保存到驱动器的其余部分。但它显示相同的错误消息。需要权限的不是你。这是SQL server。在services.msc中查看SQL server的运行状态。这就是需要权限的用户。我试图将数据库保存到驱动器的其余部分。但它显示相同的错误消息。需要权限的不是你。这是SQL server。在services.msc中查看SQL server的运行状态。这就是需要权限的用户。我对编程非常陌生。我不明白你的答案,先生。我对编程很陌生。我不明白你的答案,先生。
//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);