C#コードからSQLServer2005からデータベースをデタッチしたいと思います。DROPクエリを使用してデタッチします。しかし、それは私のローカルシステムからファイルを削除するステートメントです。データベースをデタッチし、実行時にそのデータベースをコピーしたいと思います。
5 に答える
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();
SQL Server SMO APIを使用すると、SQL Server Management Studioで実行できるすべてのことを実行できます(c#コードから)。このリンクをチェックしてください http://msdn.microsoft.com/en-us/library/ms162175.aspx
次のコードを使用して、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();
問題に対してストアドプロシージャを使用できます。次のリンクが役立ちます。
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);
編集:今ここで私のブログに文書化されています