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);
    }
Exemple #2
0
 public static IDisposable AddCSharpBlock(this TextBuilder indentedTextBuilder) => indentedTextBuilder.AddBlock("{", "}");