private void CreateDatabaseSnapshotScriptToClipboardMenuItem_Click(object?sender, EventArgs e) { var databaseName = _name; var databaseSnapshotName = $"{databaseName}_Snapshot_{DateTime.Now.ToString("yyyyMMdd_HHmm")}"; var logical_file_name = GetLogicalFileName(databaseName); var osFileName = $"D:\\Backup\\{databaseSnapshotName}.ss"; var textBuilder = new TextBuilder(); textBuilder.Add($"CREATE DATABASE [{databaseSnapshotName}]"); textBuilder.Add("ON"); using (textBuilder.AddBlock("(", ")")) { textBuilder.Add($"NAME = {logical_file_name},"); textBuilder.Add($"FILENAME = {osFileName.ToVarChar()}"); } textBuilder.Add($"AS SNAPSHOT OF [{databaseName}]"); textBuilder.Add(Line.Empty); textBuilder.Add("USE master"); textBuilder.Add($"ALTER DATABASE [{databaseName}] SET SINGLE_USER"); textBuilder.Add($"RESTORE DATABASE [{databaseName}] FROM"); textBuilder.Add($"DATABASE_SNAPSHOT = {databaseSnapshotName.ToVarChar()}"); textBuilder.Add($"ALTER DATABASE [{databaseName}] SET MULTI_USER WITH NO_WAIT"); var text = textBuilder.ToLines().ToIndentedString(" "); var queryForm = (IQueryForm)sender; queryForm.ClipboardSetText(text); }
public static IDisposable AddCSharpBlock(this TextBuilder indentedTextBuilder) => indentedTextBuilder.AddBlock("{", "}");