Csharp/C#教程:以编程方式分离数据库分享


以编程方式分离数据库

我有一个数据库“D: MDF CONNECTION SAMPLE BIN DEBUG HARMDATABASE.MDF”。 我试图使用以下代码分离或重命名它:

SqlConnection conn = new SqlConnection("Data Source=.\MSSQLSERVER2008;database=Master;Integrated Security=True;"); SqlCommand cmd = new SqlCommand("", conn); cmd.CommandText = @"sys.sp_detach_db D:MDF CONNECTION SAMPLEBINDEBUGHARMDATABASE.MDF"; conn.Open(); cmd.ExecuteNonQuery(); cmd.Dispose(); conn.Dispose(); 

但是得到一个错误:

‘’附近的语法不正确。

你在查询中省略了一个引用,正如@KyleHale指出的那样 – 它需要是数据库的名称,而不是它的路径。

更改:

 cmd.CommandText = @"sys.sp_detach_db D:MDF CONNECTION SAMPLEBINDEBUGHARMDATABASE.MDF;"; 

成为:

 cmd.CommandText = @"sys.sp_detach_db 'dbName'"; 

为了分离数据库而同时解决错误

无法分离数据库’YOUR_DATABASE’,因为它当前正在使用中

您只需使用以下代码:

  private void DetachDatabase() { String databaseConnectionString = "Data Source=localhost;MultipleActiveResultSets=True;Integrated Security=True"; using (SqlConnection sqlDatabaseConnection = new SqlConnection(databaseConnectionString)) { try { sqlDatabaseConnection.Open(); string commandString = "ALTER DATABASE YOUR_DATABASE SET OFFLINE WITH ROLLBACK IMMEDIATE ALTER DATABASE YOUR_DATABASE SET SINGLE_USER EXEC sp_detach_db 'YOUR_DATABASE'"; SqlCommand sqlDatabaseCommand = new SqlCommand(commandString, sqlDatabaseConnection); sqlDatabaseCommand.ExecuteNonQuery(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } } 

请注意, YOUR_DATABASE有时是在没有单引号的情况下编写的,有时也会使用单引号。 只使用没有.mdf扩展名的数据库名称替换YOUR_DATABASE ,并保留字符串的其余部分……

感谢这个网站: 分离数据库丢弃连接

这个网站: SQL Server – 如何分离数据库

顺便说一句,这对我在SQL SERVER 2014上起作用了

使用SMO怎么样?

您需要添加对Microsoft.SqlServer.Smo的引用,该引用在您的开发计算机上安装了SQL Express或SQL Server时可用。

上述就是C#学习教程:以编程方式分离数据库分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

 using Microsoft.SqlServer.Management.Smo; void Detach() { Server smoServer = new Server("MSSQLSERVER2008"); smoServer.DetachDatabase("HARMDATABASE", False); } 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1034948.html

(0)
上一篇 2022年1月19日
下一篇 2022年1月19日

精彩推荐