数据库已存在。 使用CreateDatabase()选择不同的名称

我遇到了一个问题并同时学到了一些东西……

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

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

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

我试过通过注册表,没有运气…我试图搜索整个硬盘驱动器的文件..没有运气。

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

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

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

您需要通过Visual Studio中的server explorer打开master数据库(添加新连接+选择master数据库),然后添加New query ,键入Drop Database xxxx并执行它。 您还可以使用Sql Server Management Studio.

一个解决方案(通过这里 )是使用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(); } } } 

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

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

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