Ejemplo n.º 1
0
        /// <summary>
        /// Used by TestBase to avoid running dbinstaller when changescript are at latest version
        /// </summary>
        /// <param name="currentReadKeyFromPosition"></param>
        /// <param name="connectionString"></param>
        /// <returns></returns>
        /// <remarks></remarks>
        public static bool HasDbVersionChanged(ReadKeyFromPosition currentReadKeyFromPosition, string connectionString)
        {
            long?dbVersion        = CheckInstalledDBVersion(connectionString);
            var  scriptFilesToRun = GetScriptFilesToRun(dbVersion, DbScriptType.ChangeScript, currentReadKeyFromPosition, "ChangeScripts.Main");

            return(scriptFilesToRun.Any());
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Method to be used by all other apps.
        /// </summary>
        /// <param name="changeScriptsReadKeyFromPosition">
        /// Determins if dbversion/orderkey should be
        /// read from start or end of filename</param>
        /// <param name="connectionString">
        /// Use this to run old installer with views,proc and functions in changescripts
        /// </param>
        /// <remarks></remarks>
        public static void BuildDatabase(ReadKeyFromPosition changeScriptsReadKeyFromPosition, string connectionString)
        {
            long?dbVersion = CheckInstalledDBVersion(connectionString);

            // Run new change scripts
            ExecuteSqlScripts(dbVersion, DbScriptType.ChangeScript, ReadKeyFromPosition.Prefix, true, connectionString, "ChangeScripts.Main");

            ExecuteSqlScriptsByObject(connectionString);
        }
Ejemplo n.º 3
0
        private static SortedList <long, string> GetScriptFilesToRun(long?dbVersion, DbScriptType scriptType,
                                                                     ReadKeyFromPosition currentReadKeyFromPosition,
                                                                     params string[] includeFolders)
        {
            var      scriptFilesToRun = new SortedList <long, string>();
            Assembly asm = null;

            asm = InstallScriptsAssembly;

            string[] files = asm.GetManifestResourceNames();

            int index = 1;

            foreach (string scriptFile in files)
            {
                var currentIncludeFolder = string.Empty;

                foreach (string includeFolder in includeFolders)
                {
                    if (scriptFile.Contains(string.Format(".{0}.", includeFolder)))
                    {
                        currentIncludeFolder = includeFolder;
                    }
                }

                if (!string.IsNullOrEmpty(currentIncludeFolder))
                {
                    var keyAsString = string.Empty;
                    var fileNameWithoutExtension     = Path.GetFileNameWithoutExtension(scriptFile);
                    var indexOfVersionUnderscore     = 0;
                    var tempFileNameForVersionSearch = fileNameWithoutExtension.Replace(" ", "_");

                    // Remove namespace from filename
                    //tempFileNameForVersionSearch = tempFileNameForVersionSearch.Replace(String.Format("{0}.{1}.", asm.InferDefaultNamespace(), currentIncludeFolder), string.Empty);
                    tempFileNameForVersionSearch = tempFileNameForVersionSearch.Replace(String.Format("{0}.{1}.", InstallScriptsAssemblyNamespace, currentIncludeFolder), string.Empty);

                    if (currentReadKeyFromPosition == ReadKeyFromPosition.Suffix & (scriptType == DbScriptType.CreateDatabase | scriptType == DbScriptType.ChangeScript))
                    {
                        indexOfVersionUnderscore = tempFileNameForVersionSearch.LastIndexOf('_');
                        keyAsString = tempFileNameForVersionSearch.Substring(indexOfVersionUnderscore + 1);
                    }
                    else if (currentReadKeyFromPosition == ReadKeyFromPosition.Prefix & (scriptType == DbScriptType.CreateDatabase | scriptType == DbScriptType.ChangeScript))
                    {
                        indexOfVersionUnderscore = tempFileNameForVersionSearch.IndexOf('_');
                        keyAsString = tempFileNameForVersionSearch.Substring(0, indexOfVersionUnderscore);
                    }
                    else
                    {
                        keyAsString = index.ToString();
                    }

                    long key         = 0;
                    bool parseResult = long.TryParse(keyAsString, out key);
                    if (!parseResult)
                    {
                        throw new DatabaseInstallerException(string.Format(CultureInfo.InvariantCulture,
                                                                           "Failed to extract version number from file {0} ",
                                                                           scriptFile));
                    }
                    if (dbVersion.HasValue == false || (key > dbVersion.Value))
                    {
                        scriptFilesToRun.Add(key, scriptFile);
                    }
                }

                index += 1;
            }

            return(scriptFilesToRun);
        }
Ejemplo n.º 4
0
        public static void ExecuteSqlScripts(long?dbVersion, DbScriptType scriptType, ReadKeyFromPosition currentReadKeyFromPosition, bool useFileNameAsChangeVersion, string connectionstring, string dbPrefixToReplace, string dbPrefixReplacement, params string[] includeFolders)
        {
            dynamic scriptFilesToRun = GetScriptFilesToRun(dbVersion, scriptType, currentReadKeyFromPosition, includeFolders);

            ExecuteSqlScripts(scriptFilesToRun, scriptType, useFileNameAsChangeVersion, connectionstring, true, dbPrefixToReplace, dbPrefixReplacement);
        }
Ejemplo n.º 5
0
 public static void ExecuteSqlScripts(long?dbVersion, DbScriptType scriptType, ReadKeyFromPosition currentReadKeyFromPosition, bool useFileNameAsChangeVersion, string connectionstring, params string[] includeFolders)
 {
     ExecuteSqlScripts(dbVersion, scriptType, currentReadKeyFromPosition, useFileNameAsChangeVersion, connectionstring, string.Empty, string.Empty, includeFolders);
 }