Exemplo n.º 1
0
        private void ScriptThreadProc()
        {
            //WorkerThreadArguments arguments = (WorkerThreadArguments)threadArguments;
            CollationChanger     collationChanger = new CollationChanger();
            ScriptStepCollection script           = null;
            SqlConnection        connection       = null;

            try
            {
                script = collationChanger.GenerateScript(workerThreadArguments.Callback, workerThreadArguments.Server, workerThreadArguments.UserId, workerThreadArguments.Password, workerThreadArguments.Database, workerThreadArguments.DropAllConstraints, workerThreadArguments.Collation, workerThreadArguments.Language, workerThreadArguments.SetSingleUser);
                if (script != null)
                {
                    if (workerThreadArguments.ScriptOnly)
                    {
                        BeginInvoke(new ScriptCompleteCallback(ScriptComplete), new object[] { script });
                    }
                    else
                    {
                        connection = new SqlConnection(Utils.ConnectionString(workerThreadArguments.Server, workerThreadArguments.UserId, workerThreadArguments.Password));
                        connection.Open();
                        script.Execute(connection, workerThreadArguments.Callback);
                        BeginInvoke(new ExecuteCompleteCallback(ExecuteComplete));
                    }
                }
                else
                {
                    BeginInvoke(new ScriptCompleteCallback(ScriptComplete), new object[] { null });
                }
            }
            catch (ThreadAbortException) { throw; }
            catch (Exception ex)
            {
                BeginInvoke(new ScriptCompleteErrorCallback(ScriptComplete), new object[] { ex });
            }
            finally
            {
                if (connection != null)
                {
                    connection.Dispose();
                }
            }

            lock (this)
            {
                workerThread = null;
            }
        }
Exemplo n.º 2
0
        public ScriptStepCollection GenerateScript(IScriptExecuteCallback callback, string server, string userId, string password, string database, bool dropAllConstraints, string collation, FullTextLanguage language, bool setSingleUser)
        {
            SqlConnection connection = new SqlConnection();

            connection.ConnectionString = Utils.ConnectionString(server, userId, password);

            try
            {
                connection.Open();
                ScriptStepCollection script = LoadScript(new Version(connection.ServerVersion), database, dropAllConstraints, collation, language, setSingleUser);
                //now get the last script entry and replace it with
                //a special component that will return out

                ScriptStepGenerateScript generator = new ScriptStepGenerateScript(script[script.Count - 1]);
                script[script.Count - 1] = generator;
                script.Execute(connection, callback);
                return(generator.Script);
            }
            finally
            {
                connection.Dispose();
            }
        }