方法 1:
1. データベースアタッチ時に論理名を指定しなかった場合、SQL2005上では「大文字のフルパス」で表示されます。たとえば、データベース ファイル D:MyTest.mdf および D:MyTest.ldf が SQL サーバーに接続されている場合、論理名が指定されていない場合、SQL2005 では「D:MYTEST.MDF」と表示されます。このとき、C# 接続文字列は "DataSource=dsName;AttachDBFilename="D:MyTest.mdf";User ID=id;Password=pw"; になります。
2. データベースのアタッチ時に論理名を指定した場合、SQL2005上では「論理名」と表示されます。このとき、C#の接続文字列は「DataSource=dsName;AttachDBFilename="D:MyTest.mdf」となります。 ;初期カタログ =aa_LogicName;ユーザー ID=id;パスワード =pw”;
3. 接続されたデータベース名は自由に変更できません。そうしないと、エラーが発生しやすくなります。
方法 2:
文字列 DbPath=System.Environment.CurrentDirectory +@"Demo_Data.MDF ";
文字列 LogPath=System.Environment.CurrentDirectory +@"Demo_Log.LDF ";
string StrSql="exec sp_attach_db @dbname='supmark',@filename1='"+DbPath+"',@filename2='"+LogPath+"'";
string strcon="サーバー=(ローカル);統合セキュリティ=SSPI;データベース=マスター";
SqlConnection cn=new SqlConnection(strcon);
SqlCommand cmd =new SqlCommand (StrSql,cn);
cn.Open();
cmd.ExecuteNonQuery();
cn.Close();
メソッド 3 の詳細なコード:
システムを使用する;
System.Collections.Generic を使用します。
System.Windows.Forms を使用します。
System.Data.SqlClient を使用します。
System.Data を使用します。
System.ServiceProcess を使用します。
名前空間 AdminZJC.DataBaseControl
{
/// <概要>
/// データベース操作制御クラス
/// </概要>
パブリック クラス DataBaseControl
{
/// <概要>
/// データベース接続文字列
/// </概要>
パブリック文字列接続文字列;
/// <概要>
///SQL操作文/ストアドプロシージャ
/// </概要>
パブリック文字列StrSQL;
/// <概要>
/// データベース接続オブジェクトをインスタンス化します。
/// </概要>
プライベート SqlConnection 接続;
/// <概要>
/// 新しいデータベース操作オブジェクトをインスタンス化します Comm
/// </概要>
プライベート SqlCommand コマンド;
/// <概要>
/// 操作対象のデータベースの名前
/// </概要>
パブリック文字列データベース名;
/// <概要>
/// データベースファイルの完全なアドレス
/// </概要>
パブリック文字列DataBase_MDF;
/// <概要>
/// データベースログファイルの完全なアドレス
/// </概要>
パブリック文字列DataBase_LDF;
/// <概要>
/// バックアップファイル名
/// </概要>
パブリック文字列DataBaseOfBackupName;
/// <概要>
/// バックアップファイルのパス
/// </概要>
パブリック文字列DataBaseOfBackupPath;
/// <概要>
/// データベースとテーブルを作成/変更する操作を実行します
/// </概要>
public void DataBaseAndTableControl()
{
試す
{
Conn = 新しい SqlConnection(ConnectionString);
Conn.Open();
Comm = new SqlCommand();
通信接続 = 接続;
Comm.CommandText = StrSQL;
Comm.CommandType = CommandType.Text;
Comm.ExecuteNonQuery();
MessageBox.Show("データベース操作は成功しました!", "情報プロンプト", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (例外例)
{
MessageBox.Show(例:Message、「メッセージ プロンプト」、MessageBoxButtons.OK、MessageBoxIcon.Information);
}
ついに
{
Conn.Close();
}
}
/// <概要>
/// アタッチされたデータベース
/// </概要>
パブリック void AddDataBase()
{
試す
{
Conn = 新しい SqlConnection(ConnectionString);
Conn.Open();
Comm = new SqlCommand();
通信接続 = 接続;
Comm.CommandText = "sp_attach_db";
Comm.Parameters.Add(new SqlParameter(@"dbname", SqlDbType.NVarChar));
Comm.Parameters[@"dbname"].Value = DataBaseName;
Comm.Parameters.Add(new SqlParameter(@"filename1", SqlDbType.NVarChar));
Comm.Parameters[@"filename1"].Value = DataBase_MDF;
Comm.Parameters.Add(new SqlParameter(@"filename2", SqlDbType.NVarChar));
Comm.Parameters[@"filename2"].Value = DataBase_LDF;
Comm.CommandType = CommandType.StoredProcedure;
Comm.ExecuteNonQuery();
MessageBox.Show("データベースが正常に接続されました", "情報プロンプト", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (例外例)
{
MessageBox.Show(例:Message、「メッセージ プロンプト」、MessageBoxButtons.OK、MessageBoxIcon.Information);
}
ついに
{
Conn.Close();
}
}
/// <概要>
/// 別のデータベース
/// </概要>
パブリック void DeleteDataBase()
{
試す
{
Conn = 新しい SqlConnection(ConnectionString);
Conn.Open();
Comm = new SqlCommand();
通信接続 = 接続;
Comm.CommandText = @"sp_detach_db";
Comm.Parameters.Add(new SqlParameter(@"dbname", SqlDbType.NVarChar));
Comm.Parameters[@"dbname"].Value = DataBaseName;
Comm.CommandType = CommandType.StoredProcedure;
Comm.ExecuteNonQuery();
MessageBox.Show("データベースの分離が成功しました", "情報プロンプト", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (例外例)
{
MessageBox.Show(例:Message、「メッセージ プロンプト」、MessageBoxButtons.OK、MessageBoxIcon.Information);
}
ついに
{
Conn.Close();
}
}
/// <概要>
/// データベースをバックアップします
/// </概要>
public void BackupDataBase()
{
試す
{
Conn = 新しい SqlConnection(ConnectionString);
Conn.Open();
Comm = new SqlCommand();
通信接続 = 接続;
Comm.CommandText = "マスターを使用;データベース @dbname をディスクにバックアップ = @backupname;";
Comm.Parameters.Add(new SqlParameter(@"dbname", SqlDbType.NVarChar));
Comm.Parameters[@"dbname"].Value = DataBaseName;
Comm.Parameters.Add(new SqlParameter(@"バックアップ名", SqlDbType.NVarChar));
Comm.Parameters[@"backupname"].Value = @DataBaseOfBackupPath + @DataBaseOfBackupName;
Comm.CommandType = CommandType.Text;
Comm.ExecuteNonQuery();
MessageBox.Show("データベースのバックアップが成功しました", "情報プロンプト", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (例外例)
{
MessageBox.Show(例:Message、「メッセージ プロンプト」、MessageBoxButtons.OK、MessageBoxIcon.Information);
}
ついに
{
Conn.Close();
}
}
/// <概要>
///データベースを復元する
/// </概要>
public void ReplaceDataBase()
{
試す
{
文字列 BackupFile = @DataBaseOfBackupPath + @DataBaseOfBackupName;
Conn = 新しい SqlConnection(ConnectionString);
Conn.Open();
Comm = new SqlCommand();
通信接続 = 接続;
Comm.CommandText = "マスターを使用;ディスクからデータベース @DataBaseName を復元 = @BackupFile を置換して;";
Comm.Parameters.Add(new SqlParameter(@"DataBaseName", SqlDbType.NVarChar));
Comm.Parameters[@"DataBaseName"].Value = DataBaseName;
Comm.Parameters.Add(new SqlParameter(@"BackupFile", SqlDbType.NVarChar));
Comm.Parameters[@"BackupFile"].Value = BackupFile;
Comm.CommandType = CommandType.Text;
Comm.ExecuteNonQuery();
MessageBox.Show("データベースは正常に復元されました", "情報プロンプト", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (例外例)
{
MessageBox.Show(例:Message、「メッセージ プロンプト」、MessageBoxButtons.OK、MessageBoxIcon.Information);
}
ついに
{
Conn.Close();
}
}
}
}
/*
///呼び出し例:
#------------------------------------------------ - --データベースの復元-------------------------------------------------- -- ------------#
private void button0_Click(オブジェクト送信者、EventArgs e)
{
DataBaseControl DBC = new DataBaseControl();
DBC.ConnectionString = "データ ソース = (ローカル);ユーザー ID = sa;パスワード = 123456; 初期カタログ = マスター";
DBC.DataBaseName = "MyDatabase";
DBC.DataBaseOfBackupName = @"back.bak";
DBC.DataBaseOfBackupPath = @"D:Program FilesMicrosoft SQL ServerMSSQLData";
DBC.ReplaceDataBase();
}
#------------------------------------------------ -追加データベース------------------------------------------------ - ----------#
private void button1_Click_1(オブジェクト送信者、EventArgs e)
{
DataBaseControl DBC = new DataBaseControl();
DBC.ConnectionString = "データ ソース = (ローカル);ユーザー ID = sa;パスワード = 123456; 初期カタログ = マスター";
DBC.DataBaseName = "MyDatabase";
DBC.DataBase_MDF = @"D:Program FilesMicrosoft SQL ServerMSSQLDataMyDatabase_Data.MDF";
DBC.DataBase_LDF = @"D:Program FilesMicrosoft SQL ServerMSSQLDataMyDatabase_Log.LDF";
DBC.AddDataBase();
}
#-------------------------------------------データベースのバックアップ------ -------------------------------------------------- -- --------#
private void button2_Click(オブジェクト送信者、EventArgs e)
{
DataBaseControl DBC = new DataBaseControl();
DBC.ConnectionString = "データ ソース = (ローカル);ユーザー ID = sa;パスワード = 123456; 初期カタログ = マスター";
DBC.DataBaseName = "MyDatabase";
DBC.DataBaseOfBackupName = @"back.bak";
DBC.DataBaseOfBackupPath = @"D:Program FilesMicrosoft SQL ServerMSSQLData";
DBC.BackupDataBase();
}
#--------------------------------------------別のデータベース-- ---------------------------------------------------- ---- --------#
private void button3_Click(オブジェクト送信者、EventArgs e)
{
DataBaseControl DBC = new DataBaseControl();
DBC.ConnectionString = "データ ソース = (ローカル);ユーザー ID = sa;パスワード = 123456; 初期カタログ = マスター";
DBC.DataBaseName = "MyDatabase";
DBC.DeleteDataBase();