1-) C# Athena - MSSQLDATAOBJECOPY
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)
{
}
}
}