Пример #1
0
        private void button1_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(txbServer.Text))
            {
                MessageBox.Show("服务器信息不能为空", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
            if (string.IsNullOrEmpty(txbUserName.Text))
            {
                MessageBox.Show("数据库名不能为空", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
            if (string.IsNullOrEmpty(txbPwd.Text))
            {
                MessageBox.Show("密码信息不能为空", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
            if (string.IsNullOrEmpty(txtfile.Text))
            {
                MessageBox.Show("选择文件名不能为空", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
            SqlConnection sqlConnection = new SqlConnection("Data Source=" + this.txbServer.Text + ";Initial Catalog=" + "master" + ";Persist Security Info=True;User ID=" + txbUserName.Text + ";Password="******";min pool size=1;max pool size=50;Pooling=true");
            Stream        fs            = null;

            try
            {
                button1.Enabled = false;
                this.richTextBox1.Clear();
                this.richTextBox1.AppendText("开始发布中,请稍候。。。。。");
                string dacfile = this.txtfile.Text;
                fs = File.Open(dacfile, FileMode.OpenOrCreate) as Stream;

                Microsoft.SqlServer.Dac.DacPackage dactype = Microsoft.SqlServer.Dac.DacPackage.Load(fs, DacSchemaModelStorageType.Memory);
                string BNAME = this.txbDbName.Text;// dactype.Name;

                // Version vs = dactype.Version;

                Microsoft.SqlServer.Dac.DacServices newDacStore = new Microsoft.SqlServer.Dac.DacServices(sqlConnection.ConnectionString);

                //先卸载,然后重新安装部署

                DacDeployOptions dacde = new DacDeployOptions();
                dacde.CommandTimeout = 300;

                dacde.CreateNewDatabase         = true;
                dacde.AllowIncompatiblePlatform = true;

                newDacStore.Deploy(dactype, BNAME, true, dacde, null);
                fs.Close();
                fs.Dispose();
                this.richTextBox1.AppendText("架构发布完成\n\r");
                this.richTextBox1.AppendText("开始导入数据中,稍候。。。。。。\n\r");
                dodata(BNAME);
                this.richTextBox1.AppendText("导入数据结束");
                button1.Enabled = true;
                AppConfig.ConfigSetValue("DBUnitTest2000.exe", "MyCon", "Data Source=" + txbServer.Text + ";Initial Catalog=" + BNAME + ";Persist Security Info=True;User ID=" + txbUserName.Text + ";Password="******";min pool size=1;max pool size=50;Pooling=true");
            }
            catch (Exception error)
            {
                if (fs != null)
                {
                    fs.Close();
                    fs.Dispose();
                }
                button1.Enabled = true;
                MessageBox.Show(error.Message);
            }
        }
Пример #2
0
        public static bool drdb(string ipname, string dbname, string user, string password, string filename)
        {
            bool ret = false;


            SqlConnection sqlConnection = new SqlConnection("Data Source=" + ipname + ";Initial Catalog=" + dbname + ";Persist Security Info=True;User ID=" + user + ";Password="******";min pool size=1;max pool size=50;Pooling=true");
            Stream        fs            = null;

            Microsoft.SqlServer.Dac.DacPackage dactype = null;
            try
            {
                // ServerConnection serverconn = new ServerConnection(sqlConnection);
                // serverconn.Connect();
                string dacfile = filename;
                fs = File.Open(dacfile, FileMode.OpenOrCreate) as Stream;

                dactype = Microsoft.SqlServer.Dac.DacPackage.Load(fs, DacSchemaModelStorageType.Memory);
                string BNAME = dactype.Name;

                Version vs = dactype.Version;

                // Deploy the DAC and create the database.
                // string dacName = "";
                // bool evaluateTSPolicy = true;
                //  Microsoft.SqlServer.Management.Sdk.Sfc.SqlStoreConnection sqlStoreConnection = new Microsoft.SqlServer.Management.Sdk.Sfc.SqlStoreConnection(serverconn.SqlConnectionObject);
                // sqlStoreConnection.Connect();


                Microsoft.SqlServer.Dac.DacServices newDacStore = new Microsoft.SqlServer.Dac.DacServices(sqlConnection.ConnectionString);
                //Microsoft.SqlServer.Dac.DacAzureDatabaseSpecification dbversion = new DacAzureDatabaseSpecification();

                // Microsoft.SqlServer.Dac.DeploymentPropertyAliasAttribute deployProperties = new Microsoft.SqlServer.Dac.DeploymentPropertyAliasAttribute("mydata");

                //先卸载,然后重新安装部署
                //newDacStore.Unregister("Database1");
                // PublishOptions  pop=new PublishOptions();
                // DacDeployOptions ddp = new DacDeployOptions();
                // pop.GenerateDeploymentScript = false;
                // pop.GenerateDeploymentReport = false;
                DacDeployOptions dacde = new DacDeployOptions();
                dacde.CommandTimeout = 300;
                //  dacde.DatabaseSpecification.Edition = DacAzureEdition.Basic;
                dacde.CreateNewDatabase         = true;
                dacde.AllowIncompatiblePlatform = true;
                // newDacStore.Unregister("Database1");
                newDacStore.Deploy(dactype, BNAME, true, dacde, null);
                fs.Close();
                fs.Dispose();
                //dactype.Dispose();

                // newDacStore.Publish(dactype,"Database1",pop);
                // newDacStore.Deploy(dactype, "Database1", false, null, null);
                // serverconn.Cancel();
                // serverconn.Disconnect();
                //    sqlStoreConnection.Disconnect();
            }
            catch (Exception error)
            {
                if (dactype != null)
                {
                    dactype = null;
                }
                if (fs != null)
                {
                    fs.Close();
                    fs.Dispose();
                }
                MessageBox.Show(error.Message);
                ret = false;
            }
            return(ret);
        }
Пример #3
0
        /// <summary>
        /// 发布数据库到服务器
        /// </summary>
        /// <param name="ipname"></param>
        /// <param name="dbname"></param>
        /// <param name="user"></param>
        /// <param name="password"></param>
        /// <param name="filename"></param>
        /// <returns></returns>
        private bool DeployDb(string ipname, string dbname, string user, string password, string filename)
        {
            bool ret = false;

            string sqlConnection = "Data Source=" + ipname + ";Initial Catalog=master;Persist Security Info=True;User ID=" + user + ";Password="******";min pool size=1;max pool size=50;Pooling=true";
            Stream fs            = null;

            Microsoft.SqlServer.Dac.DacPackage dactype = null;
            try
            {
                string dacfile = filename;
                fs      = File.Open(dacfile, FileMode.OpenOrCreate) as Stream;
                dactype = Microsoft.SqlServer.Dac.DacPackage.Load(fs, DacSchemaModelStorageType.Memory);

                string  BNAME = dactype.Name;    //数据库名
                Version vs    = dactype.Version; //版本
                Microsoft.SqlServer.Dac.DacServices newDacStore = new Microsoft.SqlServer.Dac.DacServices(sqlConnection);

                DacDeployOptions dacde = new DacDeployOptions();
                dacde.CommandTimeout = 300;
                //  dacde.DatabaseSpecification.Edition = DacAzureEdition.Basic;
                //dacde.CreateNewDatabase = true;
                dacde.CreateNewDatabase         = false;
                dacde.AllowIncompatiblePlatform = true;
                dacde.BlockOnPossibleDataLoss   = false;

                // newDacStore.Unregister("Database1");
                newDacStore.Deploy(dactype, BNAME, true, dacde, null);
                fs.Close();
                fs.Dispose();
                dactype.Dispose();


                ret = true;
            }
            catch (Exception error)
            {
                if (dactype != null)
                {
                    dactype = null;
                }
                if (fs != null)
                {
                    fs.Close();
                    fs.Dispose();
                }
                MessageBox.Show(error.Message);
                ret = false;
            }
            return(ret);

            // DacPackage dp = Microsoft.SqlServer.Dac.DacPackage.Load("d:\\mysqldb.dacpac");
            // dactype.Unpack("d:\\dp");
            //string d = dactype.Description;
            //Version v = dactype.Version;
            //string n = dactype.Name;
            //Microsoft.SqlServer.Dac.Model.ModelLoadOptions mlo = new Microsoft.SqlServer.Dac.Model.ModelLoadOptions();
            //mlo.ModelStorageType = DacSchemaModelStorageType.Memory;
            //var model = Microsoft.SqlServer.Dac.Model.TSqlModel.LoadFromDacpac(fs, mlo);
            //foreach (var s in new Microsoft.SqlServer.Dac.Model.ModelTypeClass[] { Microsoft.SqlServer.Dac.Model.ModelSchema.Table, Microsoft.SqlServer.Dac.Model.ModelSchema.View, Microsoft.SqlServer.Dac.Model.ModelSchema.Procedure })
            //{
            //    var allTables = model.GetObjects(Microsoft.SqlServer.Dac.Model.DacQueryScopes.UserDefined, s);
            //    var tableScripts = from t in allTables
            //                       select t;
            //    foreach (var x in tableScripts)
            //    {


            //        string on = x.ObjectType.Name;//类型
            //        string nm = x.Name.Parts[1];//名字
            //        string jb = x.GetScript();

            //        //    int id=0;
            //        foreach (var c in x.GetChildren())
            //        {
            //            // writer.WriteStartElement("QueryObjectCols");
            //            // writer.WriteElementString("Title",c.Name.Parts[2]);
            //            //  writer.WriteElementString("ObjColID",id++.ToString());
            //            // writer.WriteElementString("Field",c.Name.Parts[2]);
            //            string field = c.Name.Parts[2].ToString();
            //           // string fieldtype = c.ObjectType.ToString();
            //            string valtype = c.GetReferenced(Microsoft.SqlServer.Dac.Model.Column.DataType).First().Name.Parts[0];

            //            // writer.WriteElementString("Width","80");
            //            //writer.WriteElementString("Sortable","1");
            //            // if(s==Microsoft.SqlServer.Dac.Model.ModelSchema.Procedure)//如果是存储过程
            //            // writer.WriteElementString("ValueType",c.GetReferenced(Microsoft.SqlServer.Dac.Model.Parameter.DataType).First().Name.Parts[0]);
            //            //else
            //            // writer.WriteElementString("ValueType",c.GetReferenced().First().GetReferenced(Microsoft.SqlServer.Dac.Model.Column.DataType).First().Name.Parts[0]);
            //            //writer.WriteElementString("ShowOrder","1");


            //        }


            //    }

            //}



            //  Microsoft.SqlServer.Dac.TSqlModelUtils.CalculatePlatformCompatibility()
            // var model = new Microsoft.SqlServer.Dac.TSqlModelUtils.;//             (@"D:\kljob\CardLan\CardLanDB\bin\Debug\cardlandb.dacpac");
            //  string j = dactype.PostDeploymentScript;
        }