删除数据库 SQL Server 2008 R2 速成版 - 异常

本文关键字:异常 R2 数据库 SQL Server 2008 删除 | 更新日期: 2023-09-27 18:34:38

我正在研究一个C#解决方案,我可以在SQL Server 2008 R2 Express Edition中删除数据库。我搜索了WWW并找到了以下解决方案:用于终止与数据库的所有连接的脚本(超过 RESTRICTED_USER 回滚(

我还尝试从SQL Server创建脚本:

EXEC msdb.dbo.sp_delete_database_backuphistory @database_name = N'apm4reform'
GO
USE [master]
GO
ALTER DATABASE [apm4reform] SET  SINGLE_USER WITH ROLLBACK IMMEDIATE
GO
USE [master]
GO
/****** Object:  Database [apm4reform]    Script Date: 10/10/2013 00:58:06 ******/
DROP DATABASE [apm4reform]
GO

在这里,我使用的代码:

private static bool DropDatabase(SqlConnection tmpConn, string connectionString, string databaseName)
        {
            string sqlDropDBQuery;
            bool result = false;
            try
            {
                tmpConn.ConnectionString = connectionString;
                tmpConn.Open();
                SqlCommand thisCommand = new SqlCommand();
                thisCommand.Connection = tmpConn;
                sqlDropDBQuery = string.Format("EXEC msdb.dbo.sp_delete_database_backuphistory @database_name = N'{0}''n GO'n USE [master]'n GO'n ALTER DATABASE [{0}] SET  SINGLE_USER WITH ROLLBACK IMMEDIATE GO'n USE [master]'n GO'n DROP DATABASE [{0}]'n GO'n", databaseName);
                thisCommand.CommandText = sqlDropDBQuery;
                thisCommand.ExecuteNonQuery();
                result = true;
            }
            catch (Exception ex)
            {
                result = false;
            }
            finally
            {
                tmpConn.Close();
            }
            return result;
        }

不幸的是,我总是得到一个例外:

"GO"附近的语法不正确。"GO"附近的语法不正确。不對 "GO"附近的语法。

我也尝试了没有逃跑'!

有什么建议吗?

谢谢特罗

删除数据库 SQL Server 2008 R2 速成版 - 异常

GO 是一个语句分隔符,仅由 Sql Server Management Studio
使用。不能由 C# 代码通过 ExecuteNonQuery 在语句中使用。只需删除它并确保每个语句都以分号结尾

sqlDropDBQuery = string.Format("EXEC msdb.dbo.sp_delete_database_backuphistory " + 
                 "@database_name = N'{0}';USE [master];" + 
                 "ALTER DATABASE [{0}] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;" +
                 "USE [master];DROP DATABASE [{0}];", databaseName);

你可以试试这个。 一

var s =string. Format( @"EXEC msdb.dbo.sp_delete_database_backuphistory @database_name = N'{0}';
    USE master;
    ALTER DATABASE {0} SET  SINGLE_USER WITH ROLLBACK IMMEDIATE


    DROP DATABASE {0}",yourdbname);