在任何 Windows 上轻松使用 SQL Server mdf 文件,无需任何身份验证

Posted

技术标签:

【中文标题】在任何 Windows 上轻松使用 SQL Server mdf 文件,无需任何身份验证【英文标题】:Using a SQL Server mdf file easy on any Windows without any authentication 【发布时间】:2017-07-29 08:53:59 【问题描述】:

我有一个 SQL Server .MDF 数据库文件,其中包含我需要加载到我的项目中并添加或更新该数据的数据和表,因此当我附加文件并在第二台具有 SQL Server 的 PC 上运行我的程序时已经安装了,提示找不到数据库!

注意1:数据库是在SQL Server 2012本地主机服务器和Windows身份验证模式下创建的。

我正在使用此代码来加载和使用数据库:

SqlConnection c = new SqlConnection(@"Data Source=.;Initial Catalog=db1;Integrated Security=True");

private void Form1_Load(object sender, EventArgs e)

    String str;
    SqlConnection myConn = new SqlConnection(@"Data Source=.;Initial Catalog=db1;Integrated Security=True");

    str = "CREATE DATABASE db1";
    SqlCommand myCommand = new SqlCommand(str, myConn);

    try
    
        myConn.Open();
        myCommand.ExecuteNonQuery();
        MessageBox.Show("First db is Created", "MyProgram", MessageBoxButtons.OK, MessageBoxIcon.Information);
    
    catch (System.Exception ex)
    
        // MessageBox.Show("DB is exist");
    
    finally
    
        if (myConn.State == ConnectionState.Open)
        
            myConn.Close();
        
    

    using (SqlConnection con = new SqlConnection(@"Data Source=.;Initial Catalog=db1;Integrated Security=True"))
    
        try
        
            //Open.the SqlConnection;
            con.Open();

            //The following code uses a SqlCommand based on the SqlConnection
            using (SqlCommand command = new SqlCommand("CREATE TABLE contents(id int IDENTITY(100, 1),Name char(50) NOT NULL,Lastname char(50) NOT NULL,Number char(50) ,Area nvarchar(50) ,Date nvarchar(50)NULL,Duration nvarchar(MAX),description nvarchar(MAX),gender nvarchar(50),number2 nvarchar(50),DT datetime NULL);", con))
                    command.ExecuteNonQuery();
        
        catch (Exception ex)
        
            //MessageBox.Show("Tables created");
        
    

加载表格

private void button4_Click(object sender, EventArgs e)

    SqlDataAdapter a = new SqlDataAdapter("select * from contents", c);
    DataTable t = new DataTable();
    a.Fill(t);

    dataGridView1.DataSource = t;
    dataGridView1.FirstDisplayedScrollingRowIndex = dataGridView1.RowCount - 1;
    dataGridView1.AutoResizeColumns();

但它不是很独特和有用,数据库每天都会移动到另一台 PC,它必须完美加载,而且我在 SQL 文件中有一些静态表,它们不需要为它们编码,我只想将它们用作资源。我还听说了一些方法可以将嵌入式或本地数据库用作应用程序数据文件夹中的数据库,并且可以明智地与应用程序一起移动,所以我需要一些帮助。谢谢

【问题讨论】:

如果你想使用.mdf文件,你必须有 SQL Server才能访问它,而使用SQL Server时,你必须使用 Windows 或 SQL Server 身份验证 - 您不能访问 .mdf 文件而无需任何形式的身份验证 .... 您为什么不直接备份该数据库并在新 PC 上恢复它。或者,如果两台 PC 在同一个 LAN 中,则直接连接到数据库。 【参考方案1】:

您可以使用您的 mdf 文件作为源,而不是每次都创建原始数据库,如下所示

Create database dbname 
On 
(   
Filename= 'path where you copied mdf file' 

)
For attach; 

【讨论】:

嗯很好,所以我们可以将 URL 用于 mdf 文件?有趣的是,实际上我想将 db 复制到程序文件夹中,我猜是调试所以使用 Simplicity 的默认执行补丁 路径可以是共享路径

以上是关于在任何 Windows 上轻松使用 SQL Server mdf 文件,无需任何身份验证的主要内容,如果未能解决你的问题,请参考以下文章

Windows Server 2016-Win Ser 2016已删减内容

通过ComboBox的Sql查询不返回任何记录

windows/macOS操作系统镜像文件

创建Linux服务,轻松管理(自启动,恢复)进程

局域网共享打印机构建

win10远程桌面连接都有哪些工具