以编程方式分离数据库
我有一个数据库“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