8

我遇到了一个问题,同时学到了一些东西....

我从现有的服务器数据库创建了一个 DBML。

我想从 DBML 创建本地数据库(一个 .mdf 文件)。我创建了数据库using DataContext.CreateDatabase("C:\xxxx.mdf")

然后我决定删除它(手动,这显然是一件坏事)因为当我尝试重新创建具有相同名称的数据库时(即使文件被删除),我得到错误 数据库已经存在。使用 CreateDatabase() 选择不同的名称

我尝试通过注册表查看,没有运气...我尝试在整个硬盘驱动器中搜索文件.. 没有运气。

谷歌搜索后,我发现你删除了一个CreateDatabase()DeleteDatabase()... 创建的数据库。然后你可以再次重新创建数据库。

问题是,现在我仍然无法重新创建旧数据库,因为系统认为该名称已经存在。

有没有办法摆脱“不存在”的旧数据库文件的记忆

4

4 回答 4

7

您需要通过在 Visual Studio中打开数据库(添加新连接 + 选择数据库),然后添加一个,键入 并执行它。你也可以使用server explorermasterNew queryDrop Database xxxxSql Server Management Studio.

于 2011-10-15T03:10:50.117 回答
3

一个解决方案(通过这里)是使用SSEUtil分离现有的数据库:

try
{
    // open a connection to the database for test
}
catch (SystemException ex) // Change exception type based on your underlying data provider
{
    if (ex.Message.ToLower().Contains("already exists. choose a different database name"))
    {
        var match = Regex.Match(ex.Message, "database '(.*)' already exists.", 
           RegexOptions.IgnoreCase);

        if (match.Success)
        {
            String dbFileName = match.Groups[1].Value;
            Process p = new Process();
            p.StartInfo.UseShellExecute = true;
            p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
            p.StartInfo.FileName = String.Format("{0}/Tools/SSEUtil.exe", 
              Environment.CurrentDirectory);
            p.StartInfo.WorkingDirectory = Environment.CurrentDirectory;
            p.StartInfo.Arguments = String.Format("-d \"{0}\"", dbFileName);

            p.Start();
        }
    }
}
于 2014-08-25T09:20:23.363 回答
1

这是 localDB 混乱的快速修复。只需在 SQL Mgmt 中连接到 (localdb)\MSSQLLocalDB。工作室/视觉工作室。

SQL Server 连接

然后删除违规者,选中“关闭现有连接”

在此处输入图像描述

于 2020-04-03T02:22:51.827 回答
0

我实际上也有同样的问题。以前,我删除(剪切)了mysqlserver2012中的数据库并将其复制到我的应用程序文件夹中。在我制作了我的应用程序后,我得到了这个错误,并通过删除Initial Catalog我的连接字符串的一部分来解决它。

您的最终连接字符串应如下所示:

Data Source=<your server name>;AttachDbFileName=database path\databaseName.mdf;Integrated Security=True" + ";User Instance=True" + ";Context Connection=False;

于 2017-10-26T09:44:33.840 回答