1

C#を使用して別のデータベーススキーマ情報から新しいSQLデータベースを生成したい

次のコードは、データベースから情報を取得するために示しています

        string connetionString = null;

        SqlConnection connection;

        SqlCommand command;

        SqlDataAdapter adapter = new SqlDataAdapter();

        DataSet ds = new DataSet();

        int i = 0;

        string sql = null;



        connetionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=E:\Database.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";

        sql = "Select DISTINCT(name) FROM sys.Tables";



        connection = new SqlConnection(connetionString);



        try
        {

            connection.Open();

            command = new SqlCommand(sql, connection);

            adapter.SelectCommand = command;

            adapter.Fill(ds);

            adapter.Dispose();

            command.Dispose();

            connection.Close();

            DataSet dset = new DataSet();

            for (i = 0; i <= ds.Tables[0].Rows.Count - 1; i++)
            {

                listBox1.Items.Add(ds.Tables[0].Rows[i].ItemArray[0].ToString());
                SqlDataAdapter ad = new SqlDataAdapter("SELECT * FROM "+ds.Tables[0].Rows[i].ItemArray[0].ToString()+"",connection);

                ad.Fill(dset);


            }
            dset.Tables[0].WriteXml(@"E:\WindowsFormsApplication2\WindowsFormsApplication2\ds.xml");

        }

        catch (Exception ex)
        {

            MessageBox.Show("Can not open connection ! ");

        }

同様に、データベースから情報を取得し、このスキーマ情報を使用して新しいデータベースを生成する必要があります。

4

1 に答える 1

0

あるデータベースから別のデータベースにスキーマをコピーするには:

  1. INFORMATION_SCHEMA.TABLES などのテーブルの INFORMATION_SCHEMA セットを使用してソース データベース内のオブジェクトを反復処理し、テーブルのリストを取得します。
  2. SQL サーバーの場合は、sp_helpそれぞれ (またはsp_helptextストアド プロシージャ) でストアド プロシージャを呼び出します。MySQL の場合はSHOW CREATE TABLESHOW CREATE PROCEDUREおよび同様のコマンドを使用します。これらは、オブジェクトの作成に使用された SQL を返します。
  3. その SQL を宛先データベースで実行します。

SQL Server Management Studio を使用して、SQL Server データベースの作成に使用する SQL スクリプトを生成できることに注意してください。

于 2012-09-06T07:04:19.427 に答える