从C#中删除/分离数据库

时间:2018-02-23 09:34:50

标签: c# sql-server database detach

我有一个程序可以在执行系统上执行大量配置,共享文件夹,检查防火墙,查找孤立的数据库等等。
它做的一件事是它查找已删除MDF文件的数据库。我希望程序使用缺少的MDF分离或删除数据库。该程序使用SMO进行数据库操作。

我尝试了以下

string sqlCommand = string.Format("DROP DATABASE [{0}]", databasename); 
server.KillAllProcesses(databasename);
server.ConnectionContext.ExecuteNonQuery(sqlCommand);

server.DetachDatabase(databasename, false);

string dbQuery = string.Format("ALTER DATABASE \"{0}\" SET OFFLINE WITH ROLLBACK IMMEDIATE ALTER DATABASE \"{0}\" SET SINGLE_USER EXEC sp_detach_db '{0}'", databasename);
server.ConnectionContext.ExecuteNonQuery(dbQuery);

无论我尝试删除或分离数据库,我都会遇到异常:

  

Microsoft.SqlServer.Management.Common.ExecutionFailureException:执行Transact-SQL语句或批处理时发生异常。 ---> System.Data.SqlClient.SqlException:无法打开物理文件“掩码文件名”。操作系统错误2:“2(系统找不到指定的文件。)”。          vid Microsoft.SqlServer.Management.Common.ConnectionManager.ExecuteTSql(ExecuteTSqlAction操作,Object execObject,DataSet fillDataSet,Boolean catchException)          vid Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery(String sqlCommand,ExecutionTypes executionType)

有没有其他方法可以通过编程方式执行此操作,还是以错误的方式处理事情?

0 个答案:

没有答案