Scripting against an empty folder
dmory
Posts: 5
I'm trying to do a comparison between two script folders, one with valid SQL scripts and a temporary one which is empty, so that I can merge all the script files of the first folder into a single script. When I try to do this, it does not script any key constraints (primary keys, foreign keys, etc).
Any help would be much appreciated.
private string CreateScript(string sScriptPath) { string sScript = ""; string sTempFolder = CreateTemporaryFolder(); Database dbSource = new Database(); Database dbEmpty = new Database(); ReadFromScriptDatabaseInformation r = new ReadFromScriptDatabaseInformation(); r.SQLServerDBVersion = RedGate.Shared.SQL.Server.SQLVersion.SqlServer2005; r.DefaultCollation = "SQL_Latin1_General_CP1_CI_AS"; dbSource.Register(sScriptPath, r, Options.Default); dbEmpty.Register(sTempFolder, r, Options.Default); Differences diffs = dbSource.CompareWith(dbEmpty, Options.Default); foreach (Difference diff in diffs) { diff.Selected = true; } Work w = new Work(); w.BuildFromDifferences(diffs, Options.Default, true); sScript = w.ExecutionBlock.GetString(); Directory.Delete(sTempFolder); return sScript; } private string CreateTemporaryFolder() { Random r = new Random(); string sPath = ""; DirectoryInfo di = null; int nNumAttempts = 0; while (di == null) { sPath = Path.GetTempPath() + "_" + r.Next(0, 1000000).ToString(); try { nNumAttempts++; di = Directory.CreateDirectory(sPath); } catch(IOException) { if (nNumAttempts >= 50) { throw; } } } return sPath; }Have I coded this correctly? Is it even possible to do this?
Any help would be much appreciated.
Comments
Redgate Software