簡體   English   中英

刪除數據庫SQL Server 2008 R2 Express Edition-異常

[英]Drop Database SQL Server 2008 R2 Express Edition - Exception

我正在使用C#解決方案,可以在SQL Server 2008 R2 Express Edition中刪除數據庫。 我搜索了WWW,找到了以下解決方案: 殺死所有與數據庫的連接的腳本(比RESTRICTED_USER ROLLBACK還要多)

我還嘗試從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'附近的語法不正確。

我也嘗試了沒有逃脫\\ n!

有什么建議么?

謝謝,tro

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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM