c# - 另一个进程正在使用数据库...但是什么进程?

标签 c# sql-server visual-studio-2010

我编写了一个非常小的 C# 程序,它使用一个非常小的 SQL Server 数据库,纯粹用于学习和测试目的。该数据库仅在这个新项目中使用,别无他处。但是,我在运行程序无法运行的调试时遇到问题,因为数据库“正在被另一个进程使用”。

如果我重新启动我的机器,它会再次工作,然后在几次测试运行后我会再次遇到同样的问题。

我在 Internet 上发现了很多很多类似的问题,但是找不到关于如何解决这个问题的明确答案。首先,如何找出正在使用我的 .mdf 和 .ldf 文件的“其他进程”?那么,我该如何释放这些文件而不是保留这些文件,以便一次又一次地阻止这种情况发生?!?

我是 VS2010、SQL Server 和 C# 的新手,所以请在您给我的任何回复中描述清楚!!!

这是我的代码,如您所见,您无法获得更基本的东西,我当然不应该遇到这么多问题!!!

namespace MySqlTest
{
    public partial class Form1 : Form
    {
        SqlConnection myDB = new SqlConnection(@"Data Source=MEDESKTOP;AttachDbFilename=|DataDirectory|\SqlTestDB.mdf;Initial Catalog=MySqlDB;Integrated Security=True");
        SqlDataAdapter myDA = new SqlDataAdapter();
        SqlCommand mySqlCmd = new SqlCommand();

        string mySQLcmd;
        int myCount;

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            MessageBox.Show("myDB state = " + myDB.State.ToString());
            //Open SQL File
            myDB.Open();
            MessageBox.Show("myDB state = " + myDB.State.ToString());
        }

        private void button2_Click(object sender, EventArgs e)
        {
            myCount++;
            MessageBox.Show("myCount = " + myCount.ToString());
            //Insert Record Into  SQL File
            mySqlCmd.Connection = myDB;
            mySqlCmd.CommandText = "INSERT INTO Parent(ParentName) Values(myCount)";
            myDA = new SqlDataAdapter(mySqlCmd);
            mySqlCmd.ExecuteNonQuery();
        }

        private void button3_Click(object sender, EventArgs e)
        {
            //Read Record From SQL File
        }

        private void button4_Click(object sender, EventArgs e)
        {
            //Read All Records From SQL File
        }

        private void button5_Click(object sender, EventArgs e)
        {
            //Delete Record From DQL File
        }

        private void button6_Click(object sender, EventArgs e)
        {
            MessageBox.Show("myDB state = " + myDB.State.ToString());
            //Close SQL File
            myDB.Close();
            MessageBox.Show("myDB state = " + myDB.State.ToString());
        }

        private void button7_Click(object sender, EventArgs e)
        {
            //Quit
            this.Close();
        }
    }
}

最佳答案

最可能的选择:

  1. 您的程序的先前(崩溃)实例
  2. Visual Studio(打开表设计器或类似工具)

您可以检查 1) 使用 TaskManager 和 2) 通过查看服务器资源管理器。您的数据库应该显示一个小红叉,表示“已关闭”。

并且您应该重写代码以尽快关闭连接。使用 try/finally 或 using(){ } block 。

关于c# - 另一个进程正在使用数据库...但是什么进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9195443/

相关文章:

sql - 如何在向其中插入值时自动递增表变量的列

regex - Visual Studio 使用正则表达式查找和替换

jquery - 使用 Visual Studio Intellisense 构建 jQuery 选择器字符串

c# - 使用 string,string, string,int 和 string,object 创建一个字典

C# .net Core Fluentvalidation 手动验证获取验证器类实例

python - 通过pyodbc在SQL查询中指定列条件会导致错误

sql - 将smallint 转换为varchar 时的情况

c# - 命令超时不工作

c# - 类似于 SQLite 或 SQL CE 的可移植 OLAP 数据库

vb.net - 未定义用户控件类型