دوستان گرامی سلاممن یه برنامه با C# نوشتم که یه DataBase ولی نمی دونم چطوری این کارو انجام بدم که بعد از نصب برنامه دیگه نیاز به این نباشه که DataBase ام رو تو SqlServer،Attach کنم.ممنون میشم راهنمایی کنید
دوستان گرامی سلاممن یه برنامه با C# نوشتم که یه DataBase ولی نمی دونم چطوری این کارو انجام بدم که بعد از نصب برنامه دیگه نیاز به این نباشه که DataBase ام رو تو SqlServer،Attach کنم.ممنون میشم راهنمایی کنید
سلام.
دوست عزيز، چند وقت پيش من هم مشكل شما را داشتم. با جستجو در سايت ميتونيد راه حل رو پيدا كنيد. ولي بهترين راه ارائه شده اينه كه در اول اجراي برنامه، يك Connection به DB بزني يا با استفاده از دستورات SQL، دنبال DB خودت بگردي. اگه پيداش نكردي يا Connetion خطا داد، با دستورات مربوطه، ديتابيس خودت رو Attach كني.
ميشه اين كدهارو برايه من بنويسيد خيلي بهش احتياج دارم
public bool AttachDB_Script(string ServerName,
string mdfPhysicalPath, string OtherConnectionStr)
{
SqlConnectionStringBuilder sqlConBuild = new SqlConnectionStringBuilder(
"Data Source=" + ServerName + ";"
+ "Initial Catalog=" + Objects.ModuleBO._DBMaster + ";"
+ OtherConnectionStr);
SqlCommand sql_Cmd = new SqlConnection(sqlConBuild.ConnectionString).Create Command();
sql_Cmd.CommandType = CommandType.Text;
sql_Cmd.CommandText =
string.Format("CREATE DATABASE [{0}] ON " +
@"( FILENAME = '{1}' )FOR ATTACH go ",
Objects.ModuleBO._DBName, mdfPhysicalPath);
bool attached = true;
try { sql_Cmd.Connection.Open(); sql_Cmd.ExecuteNonQuery(); }
catch (Exception e) { attached = false; throw e; }
finally
{
sql_Cmd.Connection.Close();
sql_Cmd.Connection.Dispose();
if (attached)
{
sqlConBuild.InitialCatalog = Objects.ModuleBO._DBName;
BaseDefinetionDAL.Sql = new SqlService(sqlConBuild.ConnectionString);
// -------------------------------------------------------------
Properties.Settings.Default.ConnectionString = sqlConBuild.ConnectionString;
WriteConnectionStringToXML(sqlConBuild.ConnectionS tring);
}
}
return attached;
}
مي تونم يه خواهشي بكنم؟لطفا يه كم در مورد كارهايي كه اين كدها مي كننند توضيح بدين ممنون ميشم
if (attached)
{
sqlConBuild.InitialCatalog = Objects.ModuleBO._DBName;
BaseDefinetionDAL.Sql = new SqlService(sqlConBuild.ConnectionString);
// -------------------------------------------------------------
Properties.Settings.Default.ConnectionString = sqlConBuild.ConnectionString;
WriteConnectionStringToXML(sqlConBuild.ConnectionS tring);
}
من با vb.net کار می کنم و این تکه کد رو متوجه نشدم
با سلام
این قسمت ها مربوط به برنامه خودم هست. شما فقط قسمت زیر را در نظر بگیرید.
SqlConnectionStringBuilder sqlConBuild = new SqlConnectionStringBuilder(
"Data Source=" + ServerName + ";"
+ "Initial Catalog=" + DBMasterName + ";"
+ OtherParamConnectionStr);
SqlCommand sql_Cmd = new SqlConnection(sqlConBuild.ConnectionString).Create Command();
sql_Cmd.CommandType = CommandType.Text;
sql_Cmd.CommandText =
string.Format("CREATE DATABASE [{0}] ON " +
@"( FILENAME = '{1}' )FOR ATTACH go ",
DBName, mdfPhysicalPathDBName
);