🙂 İNSANLARIN EN HAYIRLISI INSANLARA FAYDALI OLANDIR 🙂

Ramazan HABER / C# Athena / MSSQLDATAOBJECOPY

1-) C# Athena - MSSQLDATAOBJECOPY

 

 

 

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Data.SqlClient;

using System.Drawing;

using System.IO;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

using Microsoft.SqlServer.Management.Common;

using Microsoft.SqlServer.Management.Smo;

 

namespace MSSQLDATAOBJECOPY {

    public partial class Form1 : Form {

        public Form1() {

            InitializeComponent();

        }

 

        private void MyAllScriptCreate() { // hata buradan kaynaklanıyor 2 tane table eklerken cunku 1 tabloyu eklerken dıgerlerınıde eklıyor o yuzden dıagram olmayan tabloda deneme yap

            var server = new Server(new ServerConnection { ConnectionString = new SqlConnectionStringBuilder { DataSource = @"YAZILIM2\ATHENA", IntegratedSecurity = true, }.ToString() });

            server.ConnectionContext.Connect();

            var database = server.Databases["Not_Defteri1"];

            var output = new StringBuilder();

            foreach (Table table in database.Tables) {

                var scripter = new Scripter(server) {

                    Options = {

                        ScriptData =           true,

                        Default =              true,

                        ClusteredIndexes =     true,

                        FullTextIndexes =      true,

                        Indexes =              true,

                        NonClusteredIndexes =  true,

                        SchemaQualify =        true,

                        ScriptSchema =         true,

                        Statistics =           true,

                        Triggers =             true,

                        WithDependencies =     true,

                        DriAll =               true

                    }

                };

                var script = scripter.EnumScript(new SqlSmoObject[] { table });

                foreach (var line in script)

                    output.AppendLine(line);

            }

            File.WriteAllText(@"MyDatabase1.sql", output.ToString());

        }

        private void MyScriptCreate(string alinacak_servername, string alinacak_veritabani, string alinacak_tablo, string alinacak_id, string alinacak_sifre) {

            var server = new Server(new ServerConnection { ConnectionString = new SqlConnectionStringBuilder { DataSource = alinacak_servername, InitialCatalog = alinacak_veritabani, UserID = alinacak_id, Password = alinacak_sifre }.ToString() });

            server.ConnectionContext.Connect();

            var database = server.Databases[alinacak_veritabani];

            var output = new StringBuilder();

            //sonradan

            var scripter1 = new Scripter(server);

            scripter1.Options.Indexes = true;

            scripter1.Options.ScriptData = true;

            scripter1.Options.Default = true;

            scripter1.Options.ClusteredIndexes = true;

            scripter1.Options.FullTextIndexes = true;

            scripter1.Options.Indexes = true;

            scripter1.Options.NonClusteredIndexes = true;

            scripter1.Options.SchemaQualify = true;

            scripter1.Options.ScriptSchema = true;

            scripter1.Options.Statistics = true;

            scripter1.Options.Triggers = true;

            scripter1.Options.WithDependencies = true;

            var script1 = scripter1.EnumScript(new SqlSmoObject[] { database.Tables[alinacak_tablo] });

            foreach (var line in script1)

                output.AppendLine(line);

            //sonradan

            File.WriteAllText(txt_yenitablo.Text + ".sql", output.ToString());

 

        }

        private void MyScriptExecuteNewDataBase() {

            try {

                baglantiyi_ac(txt_servername.Text, txt_yeniveritab.Text, txt_master_id.Text, txt_master_sifre.Text);

                string script = File.ReadAllText(txt_yenitablo.Text + ".sql");

                script=script.Replace(""+ cb_aktarilacak_Tablo.Text + "",""+ txt_yenitablo.Text + "");

                SqlCommand sqlkomut = null;

                sqlkomut = new SqlCommand(script, conn); // name

                SqlDataReader dr = null;

                dr = sqlkomut.ExecuteReader();

                baglantiyi_kapat();

            } catch (Exception ex) {

                MessageBox.Show(ex.Message);

            }

 

        }

        private void Ana_baglan_Click(object sender, EventArgs e) {

            try {

                veri_tab_olustur(); // yeni veri tab oluşturuyoruz

                                    //2.seçenektekine baglanioz

 

                // txt_servername.Text --> server name

                // cb_veritabanlari.Text -> alınacak veri tabanının ismi

                // txt_veritabanlari_id.Text -> alınacak veri tabanının id

                // txt_veritabanlari_sifre.Text -> alınacak veri tabanının şifre

                // cb_aktarilacak_Tablo.Text --> aktarılacak tablomuzun ismi

                // txt_yenitablo.Text -> yeni tablonun adı

                // txt_yeniveritab.Text --> oluşan scrip bunda çalıştıralacak -> use txt_yeniveritab.Text diyerek

                MyScriptCreate(txt_servername.Text, cb_veritabanlari.Text, cb_aktarilacak_Tablo.Text, txt_veritabanlari_id.Text, txt_veritabanlari_sifre.Text);

 

                MyScriptExecuteNewDataBase();

                //baglantiyi_ac(txt_servername.Text, cb_veritabanlari.Text, txt_veritabanlari_id.Text, txt_veritabanlari_sifre.Text);// BURADAKİ TABLONUN SCRİPTİNİ AL

                //SqlCommand sqlkomut = null;

                //sqlkomut = new SqlCommand(""); // OLUŞMUŞ OLAN SCRİPTİ ÇALIŞTIR

                //SqlDataReader dr = null;

                //dr = sqlkomut.ExecuteReader();

                //baglantiyi_kapat();

                MessageBox.Show("["+txt_yeniveritab.Text + "] Adındaki Veri Tabanına --> ["+ cb_aktarilacak_Tablo.Text + "] Adındaki Tablo Yeni İsmi --> ["+ txt_yenitablo.Text + "] Olarak Başarıyla Aktarıldı");

            } catch (Exception e3) {

                MessageBox.Show("beklenmedik hata " + e3.Message);

            }

        }

        SqlConnection conn = null;//VERİ TABANINA BAĞLANTI İÇİN

        public void baglantiyi_ac(string servername, string veritab, string id, string sifre) {

            try {

                conn = new SqlConnection(@"Data Source=" + servername + ";Initial Catalog=" + veritab + ";User ID=" + id + ";Password=" + sifre + ";");

                //conn = new SqlConnection(@"Data Source=RAMO;Initial Catalog=final;User ID=sa;Password=123;");

                //Data Source    = server name

                //initial catalog= veri tabanı ismi

                //User ID        = bağlantı için id

                // Password      = bağlantı için şifre

                conn.Open();

            } catch (Exception e) {

                throw new Exception("\nBağlantıda hata var \n" + e.Message);

            }

 

        }

 

        public void baglantiyi_kapat() {

            try {

                conn.Close();

            } catch (Exception e) {

                throw new Exception("\nBağlantıda hata var \n" + e.Message);

            }

        }

        private string MyDataBaseExist(string veritabani) {

            try {

                SqlCommand sqlkomut = null;

                sqlkomut = new SqlCommand("SELECT * FROM sys.databases where name='" + veritabani + "'", conn); // name

                SqlDataReader dr = null;

                dr = sqlkomut.ExecuteReader();

                if (dr.Read() == true) { // veri tabani zaten var var

                    return dr["name"].ToString();

                } else {

                    return "veritabaniyok";

                }

            } catch (Exception e1) {

                MessageBox.Show("Beklenmedik hata " + e1.Message);

                return "veritabaniyok";

            }

        }

        private void btn_master_baglan_Click(object sender, EventArgs e) {

            try {

                baglantiyi_ac(txt_servername.Text, txt_master_veritab.Text, txt_master_id.Text, txt_master_sifre.Text);

                SqlCommand sqlkomut = null;

                sqlkomut = new SqlCommand("SELECT * FROM sys.databases", conn); // name

                SqlDataReader dr = null;

                dr = sqlkomut.ExecuteReader();

                cb_veritabanlari.Items.Clear();

                while (dr.Read()) {

                    cb_veritabanlari.Items.Add(dr["name"].ToString());

                }

                cb_veritabanlari.SelectedIndex = 0;

                baglantiyi_kapat();

                MessageBox.Show("Bağlantı Başarılı");

            } catch (Exception e1) {

                MessageBox.Show("Beklenmedik hata " + e1.Message);

            }

        }

 

        private void btn_veritabanlari_baglan_Click(object sender, EventArgs e) {

            try {

                baglantiyi_ac(txt_servername.Text, cb_veritabanlari.Text, txt_veritabanlari_id.Text, txt_veritabanlari_sifre.Text);

                SqlCommand sqlkomut = null;

                sqlkomut = new SqlCommand("SELECT TABLE_CATALOG,TABLE_SCHEMA,TABLE_NAME,TABLE_TYPE FROM INFORMATION_SCHEMA.TABLES", conn); // name

                SqlDataReader dr = null;

                dr = sqlkomut.ExecuteReader();

                cb_aktarilacak_Tablo.Items.Clear();

                while (dr.Read()) {

                    cb_aktarilacak_Tablo.Items.Add(dr["TABLE_NAME"].ToString());

                }

                cb_aktarilacak_Tablo.SelectedIndex = 0;

                baglantiyi_kapat();

                

            } catch (Exception e2) {

                MessageBox.Show("Beklenmedik hata " + e2.Message);

            }

        }

        private void veri_tab_olustur() {

            try {

                string olusacakveritabani = txt_yeniveritab.Text;

                baglantiyi_ac(txt_servername.Text, txt_master_veritab.Text, txt_master_id.Text, txt_master_sifre.Text);

 

                if (MyDataBaseExist(olusacakveritabani).Equals("veritabaniyok")) {

                    baglantiyi_ac(txt_servername.Text, txt_master_veritab.Text, txt_master_id.Text, txt_master_sifre.Text);

                    SqlCommand sqlkomut = null;

                    sqlkomut = new SqlCommand("create database " + olusacakveritabani + "", conn); // name

                    SqlDataReader dr = null;

                    dr = sqlkomut.ExecuteReader();

                    baglantiyi_kapat();

                    MessageBox.Show("Veri Tabanı Başarıyla Oluşturuldu");

                }

                baglantiyi_kapat();

            } catch (Exception e) {

                throw new Exception("Veri Tabanı zaten var " + e.Message);

            }

        }

 

        private void cb_aktarilacak_Tablo_SelectedIndexChanged(object sender, EventArgs e) {

            txt_yenitablo.Text=cb_aktarilacak_Tablo.Text;

        }

 

        private void Form1_Load(object sender, EventArgs e)

        {

 

        }

    }

}

 2021 Ocak 18 Pazartesi
 426