2017-09-19 95 views
0

當我使用C#創建新數據庫並創建表時,我可以關閉並打開它的連接。如果我嘗試在我的應用程序的同一個會話中分離數據庫,它告訴我我不能。 如果我重新啓動應用程序,然後打開數據庫,然後關閉並分離 - 它的工作。 爲什麼會發生這種情況,我該如何解決?連接到數據庫的c#應用程序 - 無法分離

P.S.我已經嘗試使用SET OFFLINE WITH ROLLBACK IMMEDIATE,它工作,但更改我的數據庫權限,我真的不希望這樣做。

我的連接字符串:

myConn.ConnectionString = String.Format("Server={0};Integrated security=SSPI;", serverName); 

我分離字符串:

str = string.Format("EXEC sp_detach_db '{0}'", databaseName); 
+0

您是否嘗試從與同一數據庫的連接中分離數據庫?大概是 – GuidoG

+0

。我連接應用程序負載,並在應用程序關閉時斷開連接。問題在於db創建之後。後來,如果我打開應用程序並連接,我可以分離。 –

+0

您無法分離正在使用的數據庫。所以在發送呼叫之前首先要分離你必須切換到另一個數據庫,例如像這樣'使用主' – GuidoG

回答

0

不能分離數據庫正在使用中。
因此,如果您連接到要分離的同一個數據庫,請首先切換到數據庫主數據庫。

str = string.Format("use master GO EXEC sp_detach_db '{0}'", databaseName); 
+0

是的。完全正確。非常感謝:)對不起,我對c#和sql非常感興趣。 –

0

這位朋友你好,你使用: 「Microsoft.SqlServer.Management.Smo;」 ?
如果NO然後用它來分離數據庫

Server MyServer = new Server("your server name"); MyServer .DetachDatabase("name of database",true);


如果請註明你的問題

+0

我使用這個: str = string.Format(「EXEC sp_detach_db'{0}'」,databaseName); com = new SqlCommand(str,myConn); //執行SQL命令 com.ExecuteNonQuery(); myConn.Close(); –

+0

編輯你的問題,並把這個信息在那裏,不在這裏 – GuidoG

+0

使用系統;使用System.Windows.Forms的 ; using Microsoft.SqlServer.Server; using Microsoft.SqlServer.Management.Common; using Microsoft.SqlServer.Management.Sdk; using Microsoft.SqlServer.Management.Smo; 命名空間DB_SERVER { 公共部分Form1類:形式 { 服務器MYS =新服務器( 「」); public Form1() { InitializeComponent(); } private void DeAttach_Click(object sender,EventArgs e) MyS.DetachDatabase(comboBox1.Text,true); MessageBox.Show(「」+ MyS.Name); } }} –

相關問題