PDA

View Full Version : آموزش: کپی گرفتن از یک پایگاه داده و ساخت پایگاه داده جدید با نام دیگر از داخل سی شارپ



Behnam6670
شنبه 23 فروردین 1393, 07:16 صبح
سلام خدمت دوستان عزیز
تو پروژم یجا لازم بود که یه دیتابیس جدید بسازم منظورم آخر سال بود که میخواستم از داخل برنامم و از قسمت مدیریت پایگاه داده دیتابیس سال جدید رو بسازم و باید هم دقیقا یه دیتا بیس با همون ساختار میساختم و بعد از قسمت خالی کردن جدولها جدولهایی که اطلاعاتشون رو نمیخواستم اونارو خالی میکردم .کدشو گذاشتم تا شاید دوستانی که به این موضوع برخورد کردن ازش استفاده کنن.
امیدوارم به کارتون بیاد



using Microsoft.SqlServer.Management.Smo;
using Microsoft.SqlServer.Management.Common;
using System.Threading;
.
.
.
Thread th;
InitializeComponent();

th = new Thread(new ThreadStart(CreatDB));
th.IsBackground = true;
.
.
.

private void btnCreatDB_Click(object sender, EventArgs e)
{

this.Cursor = Cursors.WaitCursor;

th.Start();
}
public void CreatDB()
{

try
{
ServerConnection conn = new ServerConnection(".", "UserName", "Password");
Server srv = new Server(conn);
Transfer trsfrDB = new Transfer(srv.Databases["DBName"]);


Database newDatbase = new Database(srv, "NewDBNam");
newDatbase.Create();


ScriptingOptions options = new ScriptingOptions();
options.DriAll = true;
options.ClusteredIndexes = true;
options.Default = true;
options.Indexes = true;
trsfrDB.Options = options;
trsfrDB.CopyAllObjects = true;
trsfrDB.CopyAllViews = true;
trsfrDB.CopyAllUsers = true;
trsfrDB.CopyAllDefaults = true;
trsfrDB.CopyAllDatabaseTriggers = true;
trsfrDB.CopyAllUserDefinedTableTypes = true;
trsfrDB.CopyAllSchemas = true;
//Copy all user defined data types from source to destination
trsfrDB.CopyAllUserDefinedDataTypes = true;
//Copy all tables from source to destination
trsfrDB.CopyAllTables = true;
//Copy data of all source tables to destination tables
//It actually generates INSERT statement for destination
trsfrDB.CopyData = true;//اگر انتخاب شود دیتای دیتابیس هم کپی میشود در غیر این صورت فقط ساختار دیتابیس کپی خواهد شد
//Copy all stored procedure from source to destination
trsfrDB.CopyAllStoredProcedures = true;
//specify the destination server name
trsfrDB.DestinationServer = srv.Name;
trsfrDB.DestinationLoginSecure = false;
trsfrDB.DestinationLogin = "UserName";
trsfrDB.DestinationPassword = "Password";
"trsfrDB.DestinationDatabase ="NewDBNam;
trsfrDB.TransferData();
}
catch (System.Exception ex)
{
MessageBox.Show(this, "ایجاد پایگاه داده جدید با خطا مواجه شده است.مجددا تلاش نمایید", "خطا درایجاد پایگاه داده جدید", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign);
}
finally
{
this.Cursor = Cursors.Arrow;

MessageBox.Show(this, "پایگاه داده مورد نظر با موفقیت ایجاد شد", "ایجاد پایگاه داده جدید", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign);
th.Abort();
}
}