2

C#コードからSQLServer2005からデータベースをデタッチしたいと思います。DROPクエリを使用してデタッチします。しかし、それは私のローカルシステムからファイルを削除するステートメントです。データベースをデタッチし、実行時にそのデータベースをコピーしたいと思います。

4

5 に答える 5

3

SQL Serverまず、以下のようにデータベース名またはパスを指定せず にに接続してみてください。

ConnectionString = @"Data Source= YourDataSource ;Integrated Security=True;Connect Timeout=30";

注:
YourDataSourceは、orまたはorまたはorまたはetcのいずれ..\SQLEXPRESS.\MSSQLSERVERなり(local)\SQLEXPRESSます(localdb)\v11.0

次に、次のクエリを使用して、データベースをデタッチします。

"ALTER DATABASE [your DB] SET OFFLINE WITH ROLLBACK IMMEDIATE \n\r exec sp_detach_db @dbname = [your DB]";

Ok。

私のサンプルコード:

sql_connect1.ConnectionString = @"Data Source=.\sqlexpress;Integrated Security=True;Connect Timeout=30";
sql_command.CommandText = "ALTER DATABASE [IRAN] SET OFFLINE WITH ROLLBACK IMMEDIATE \n\r exec sp_detach_db @dbname = [IRAN]";
                  sql_command.Connection = sql_connect1;
                  sql_connect1.Open();
                  sql_command.ExecuteNonQuery();
                  sql_connect1.Close(); 
于 2015-01-03T14:38:55.890 に答える
2

SQL Server SMO APIを使用すると、SQL Server Management Studioで実行できるすべてのことを実行できます(c#コードから)。このリンクをチェックしてください http://msdn.microsoft.com/en-us/library/ms162175.aspx

于 2012-05-26T03:51:02.133 に答える
1

次のコードを使用して、SqlServer上のデータベースをデタッチできます。データベースをデタッチするためのストアドプロシージャがSqlServedr'sp_detach_db'にあり、引数DataBaseNameが1つあります。ここでコード「MyDatabase」はデータベース名であり、データベース名に変更する必要があります

// C# Code

SqlConnection conn = new SqlConnection("Server=(local); Data Source=;Integrated Security=SSPI");
SqlCommand cmd = new SqlCommand("", conn);

cmd.CommandText = "sys.sp_detach_db MyDatabase";

conn.Open();

cmd.ExecuteNonQuery();

cmd.Dispose();
conn.Dispose();
于 2012-11-19T11:25:06.533 に答える
0

問題に対してストアドプロシージャを使用できます。次のリンクが役立ちます。

http://msdn.microsoft.com/en-us/library/aa259611.aspx

于 2013-06-21T15:52:51.590 に答える
0

Myo Thuのコメントは私を正しい方向に導いてくれるので、データベースを切り離す方法の概要を以下に示します。

ステップ1:プロジェクトで次のDLLを参照します[参照]

Microsoft.SqlServer.ConnectionInfo.dll

Microsoft.SqlServer.Smo.dll

Microsoft.SqlServer.Management.Sdk.Sfc.dll

Microsoft.SqlServer.SqlEnum.dll

ステップ2:使用:

using Microsoft.SqlServer.Management.Smo;
using Microsoft.SqlServer.Management.Common;

ステップ3:コード

var server = new Server(new ServerConnection(@"MyMachine\SQL2012"));
// Ensure database is not in use
server.KillAllProcesses("TestDatabase");
server.DetachDatabase("TestDatabase", true);

編集:今ここで私のブログに文書化されています

于 2014-04-25T12:28:34.833 に答える