PDA

View Full Version : ایجاد دیتابیس اسکیوال با استفاده از اسکریپت دیتابیس



samiasoft
سه شنبه 03 بهمن 1396, 19:10 عصر
سلام دوستان

ما در اسکیوال سرور یک دیتابیس داریم...حالا اومدیم از اون یک اسکریپت تهیه کردیم.

برای اینکه در سیستم مشتری دیتابیس ساخته بشه بایستی مثلا با استفاده از ستاپ سازها این اسکریپت رو اجرا کنیم تا دیتابیس ساخته بشه که کاری با این مساله نداریم.

من میخواستم درواقع با کدنویسی در سی شارپ بدون استفاده از ستاپ سازها این اسکریپت رو به دیتابیس در اسکیوال سرور تبدیل کنم.


ممنون میشوم راهنمایی کنید

samiasoft
سه شنبه 03 بهمن 1396, 21:34 عصر
دوستان بدین صورت نوشتم و به راحتی دیتابیس ایجاد شد به نظرتون مشکلی نداره که؟

private void CreateDatabase() {

SqlConnection conn = new SqlConnection(@"Data Source =.\SQLEXPRESS; Initial Catalog = master; Integrated Security = True");
try
{


conn.Open();


string script = File.ReadAllText(Application.StartupPath + @"\script.sql");


// split script on GO command
IEnumerable<string> commandStrings = Regex.Split(script, @"^\s*GO\s*$", RegexOptions.Multiline | RegexOptions.IgnoreCase);
foreach (string commandString in commandStrings)
{
if (commandString.Trim() != "")
{
new SqlCommand(commandString, conn).ExecuteNonQuery();
}
}
MessageBox.Show("Database updated successfully.");


}
catch (SqlException er)
{
MessageBox.Show( er.Message);

}
finally
{
conn.Close();
}
}

samiasoft
سه شنبه 03 بهمن 1396, 22:24 عصر
با استفاده از دستورات ریجکس هم میتوانید مسیر دیتابیس رو قبل ایجاد شدن تغییر بدید :


//پیداکردن نام دیتابیس

string dbname = Regex.Match(script, @"Database .*.]").ToString().Replace("Database [", "").Replace("]", "");

//پیداکردن مسیرذخیره دیتابیس

string dbpatch = Regex.Match(script, @"FILENAME = N'.*.'").ToString().Replace("FILENAME = N'", "").Replace(dbname + ".mdf'", "");

//تغییر دادن مسیر جدید به دیتابیس
script = script.Replace(dbpatch , textPatch.Text + @"/");