Tag: Redgate

  • Flyway Tips: Automation Assistance in Flyway Desktop

    I was chatting with the product managers at Flyway and one asked me whether I’d seen the new tab for Automation in Flyway Desktop. I hadn’t and decided to take a quick look at how this works and what’s useful. This post looks at the new feature.

    Tl;Dr this is a good way to start learning how to move to a more DevOps, automated way of deploying changes.

    I’ve been working with Flyway and Flyway Desktop for work more and more as we transition from older SSMS plugins to the standalone tool. This series looks at some tips I’ve gotten along the way.

    Working with Flyway Desktop

    For a lot of customers, it’s not too hard to setup a project and start to capture code in a Git repo. However, adding in automation gets challenging for many, especially as the docs are hard to understand if you don’t already have some knowledge. I find that CI/CD is a bit of a chicken and egg challenge as we try to learn to get better, but knowing what to learn and do requires knowledge.

    Which we don’t have.

    In any case, I’ve taken an existing Flyway project where I am capturing some code. You can see the project below, with objects on the right. The database and the repo have the same object code and are in sync.

    2025-11_line0127

    Let’s add a few new objects to this database in SSMS. You can see below I’m adding a new table and altering a proc. I’m also refactoring slightly to not keep the old style join convention in my proc as I add a new join.

    2025-11_line0129

    Once I do this, in Flyway Desktop (FWD), I see my changes. I’ll save these to the repo and then generate a migration script. I won’t show that as it’s not important.

    2025-11_line0130

    Once I’ve done this, I know I want to deploy code. If I go to Migrations, I can see I have these two scripts ready to go to QA, and I can deploy them with FWD manually. However, I don’t want to do that.

    2025-11_line0131

    I want some automation. How does FWD make that easy? Let’s see.

    The Automation Tab

    There’s a new tab on the left, which is the Automation tab.  I’ve expanded the left menu out and you can see it, but it’s a lightning bolt, which I might never have noticed (hence this post).

    2025-11_line0132

    If I click this, I get a little explanation at the top, a few links, and then some CLI based code. This last part is the important part of what I need to move to CI/CD.

    2025-11_line0133

    If you look at the code closely, you’ll see some placeholders in angle brackets for the environments I need. The code looks like this:

    2025-11_line0134

    Above this, there are two drop downs where I can select my build and target environments. Build is the CI portion, and it’s a good idea to have a place to build code separate from QA. This lets me validate things, and more importantly, run some code analysis checks, summarize changes, and detect drift.

    I’ve expanded the Build drop down below and you can see I have my environments listed, and I can also manage them from here. There is also an Environments tab on the left menu just above Automate Deployments that looks like a database icon.

    2025-11_line0135

    Once I select an environment, the code changes to reflect this. That makes things easier to automate as I can take these commands and drop them into a task in my CI/CD tool.Note in the image below that I’ve selected NWInt and the code shows target2. The code needs the ID (or PK) of the environment, but the display name I entered is shown in the drop down. Trust me, these match.

    2025-11_line0136

    I’ll also select a target and then open up a CLI to run the first item on line 5. I did have to auth, but this runs successfully. No doc checks, no experimenting, the command ran.

    2025-12_0116

    I’ve never saved any snapshots and so the drift doesn’t work right away, but I’ll get the dryrun script. When I run this, I get a summary from the CLI.

    2025-12_0120

    Then I can see the report (see above output for the path at the end. When this opens, on the Dry Run tab, I see my scripts.

    2025-12_0121

    Note, I did use the drop downs in FWD to select the environments I need for this.

    Very cool.

    Summary

    One of the challenges with using Flyway is that there are a lot of settings, options, and more that one must learn to take advantage of the solution. Our docs continue to improve, but even for someone that has been using Flyway for a few years, I have to constantly check out things work. Plus, the teams are adding features on a regular basis, so it can get confusing to learn the new things.

    This automation tab is really helpful to shortcut some of the things I need for the various environments in my project. I’m going to start using some of this in a new project, and so should you.

    Flyway can do much more, and for smoother automation, check out Flyway Enterprise.

    Flyway is an incredible way of deploying changes from one database to another, and now includes both migration-based and state-based deployments. You get the flexibility you need to control database changes in your environment. If you’ve never used it, give it a try today. It works for SQL Server, Oracle, PostgreSQL and nearly 50 other platforms.

    Video Walkthrough

     

  • The Book of Redgate: What Our Staff Says

    This image is from 2010, and it goes along with my last post of what our Customers Say about us. However, this is what our employees said about the company.

    2025-10_line0105

    At this point we would have been around a 200 person company, mostly in the UK. It’s a great list of words, and if I were looking for a new employer, this type of work cloud might get me interested in applying.

    Redgate has often felt like an extended family, where we care about each other, we’re bonded, and we’re working together to get through life. We disagree and bicker at times, but we love each other.

    We’re now closer to a 600 person company, and I don’t know that all of us, or even most of us, feel the same ways, but I’d like to think most people still think this is a great place to work.

    I do.

    I have a copy of the Book of Redgate from 2010. This was a book we produced internally about the company after 10 years in existence. At that time, I’d been there for about 3 years, and it was interesting to learn a some things about the company. This series of posts looks back at the Book of Redgate 15 years later.

  • Reverse Engineering a Physical Model Diagram

    I recently wrote about a logical diagram with Redgate Data Modeler. That was interesting, but creating all the objects is a pain. I decided to try creating a physical diagram from an existing database. This post looks at the experience.

    This is part of a series of posts on Redgate Data Modeler.

    Getting Started

    As with the logical model, I right click and choose New document.

    Then I get a list of options. I’ll choose the middle one, Physical Model. This is what I mostly need to work with an existing system. Since I don’t often move models from one platform to the other, a physical diagram can work well for me.

    2025-11_0143

    Once I click next, I get a list of platforms, and I need to enter a name. I’ve done that. Notice that when I select SQL Server, I can alter the drop down for different versions of SQL Server.

    2025-11_0145

    Below this, I see a source box, and a file picker.

    2025-11_0146

    I need a file.

    I’ll go to SSMS and right click my database. I’ll find the Generate Scripts task, as shown below.

    2025-11_0147

    I go through the wizard and mostly pick defaults.

    2025-11_0183

    I do script to one file, not separate ones. I choose all objects.

    2025-11_0184

    Back to Data Modeler with the file. I select this and upload it and see…an error.

    2025-11_0185

    When I open the script, I see lots of non-database stuff.

    2025-11_0186

    I’ll delete this stuff and also a bit at the bottom. I rename this to Westwind.sql, which is what I am importing. Then I was able to import the file and when I clicked “Start modeling”, I ended up with this:

    2025-11_0215

    Redgate Data Modeler (RDM) has detected quite a few relationships. You can see them in the diagram for the explicit ones defined. If I click one, such as the Order to Order Details item, I can see on the right that this is for OrderID in both tables..

    2025-11_0216

    One thing that threw me slightly was two Employees tables. I was wondering what was going on here, but when I clicked the lower one and looked through properties, I can see that this is for a different schema. I wish this were more visible, but it did get detected.

    2025-11_0217

    Cleaning up the Design

    One of the things I like is that I can set areas in the model. This lets me organize things and even convey information to developers and others that work with the database.

    At the top left, I have a series of icons. The last one on the right is the New Area icon. I’ll click this.

    2025-11_0218

    I can now draw an “area” somewhere. Notice the right when I do this. I have properties for this area.

    2025-11_0219

    I’ll add a name and change the color, which gives me way to easily see this area in my diagram. I’ll also drag in the Auditing.Employees table, as this is what I want people to know.

    2025-11_0220

    I can select this and move it (look at the video) and then I see this as a part of my diagram, but clearly separate from other parts. Developers can learn the light red is the auditing schema, which is separate from the rest of the diagram.

    2025-11_0221

    I can add other areas, not just for schemas, but for separating out parts of my database. Often I have a series of entities that I care about, or want to cluster together, and having areas with colors lets me separate these out.

    2025-11_0222

    I might run out of colors in a large database, but I could use lots of pale blues or grays to separate out areas, each of which has a name. That can be helpful to reduce the complexity of the model.

    Adding a New Table

    I can also add a new table if I want. One of the icons at the top is for new tables.

    2025-11_0224

    When I click in the model, a new table appears. The right opens up the properties with a default name (table14). I can change this and add the columns I need.

    2025-11_0225

    Once I’ve finished, I can add a relationship. There is an icon for this.

    2025-11_0227

    I’ll click this and then click and drag from Products to Discount. This gives me a new column in Discount by default, called Products_ProductID. Not a bad name, but in general I want a cleaner name. I’ll edit the relationship to use ProductID in both tables and delete the other column from the model.

    2025-11_0226

    Modeling with an image is a good way to start to visualize how things are setup and where you might be normalizing, or denormalizing data. I also want to know just how many things are in here and what is related to what.

    Moving Forward

    There are more things that can be done with tools like that to help ensure our databases are well designed and perform well. I’ve submitted feedback to the team and asked for some enhancements.

    One of the things I might want to do from here is update my dev db from the model. I’ll show that in a future post.

    For now, I like the idea of getting a model started from my SQL script, though clearly I need a clean script. I’ll do more testing with other scripts for both forward and reverse engineering.

    Give Redgate Data Modeler a try and see if it helps you and your team get a handle on your database.

  • A Quick Look at Redgate Data Modeler

    Redgate acquired a data modeling tool from Vertabelo recently and I wanted to explore how it works. This is a short look at this tool and how it might be useful in working with databases.

    This is part of a series on Redgate Data Modeler.

    A Simple Layout

    The tool is a cloud tool, designed to work in a browser. This negates the need to install anything, but this also means you need to be connected to the Internet to use it. Once you get past the licensing (I won’t show this), you have a basic screen that looks like this:

    2025-11_0169

    There isn’t much to see and this doesn’t feel that intuitive to me, but that’s because I’m not familiar with it. Most tools have some sort of modeling surface to start, but here we have a list of models, of which I have none. That is because this is designed to be used by multiple people across multiple platforms with shared designs. Ideally that’s what many of us want, not a set of project files we have to share, version, copy, etc.

    The icons at the top have two “new” ones at the left, some greyed out ones since I don’t have models, and then some layout ones on the right that control the left, top, and right panes/blades.

    If I right click in the middle, I see two options, which correspond to the two icons on the left: new folder or new document.

    2025-11_0170

    A folder makes sense, as these are for organization. The documents make less sense, as I expected just a modeling diagram. Instead, if I pick this I get three choices: logical model, physical model, and sql script. I’ll choose logical model and go from there.

    2025-11_0206

    Logical Models

    A logical database model is a kind of an outline of your entities and the domain of data you want to capture. When I click this button, I first get asked for a name, which makes sense.

    2025-11_0207

    Then I get a blank canvas that looks like the one below. I have my entities on the left, properties on the write and a canvas with some icons. There’s also a toolbar.

    2025-11_0208

    The icons above the canvas are where you can add entities. You can’t import anything here, which I don’t like, but that was never built. I get that most of us might go from Logical to Physical to SQL, but if I want to get a handle on existing databases, I have to add everything myself.

    Let me start with a new entity. I’ll click this icon.

    2025-11_0209

    Once I do this, I get nothing. The icon is selected, and I need to click on the canvas, and I’ll see an entity. Note that the left shows this as an item with errors, which are reflected on the right in Entity Issues.

    2025-11_0211

    The error is I need an attribute. I can also see the name above on the right, where I can set the name, a comment, and add attributes. I’ll start with a few items that matter for SQL Server Central.

    When I add a title,  want to pick a type. In the attribute table, I can select a gear icon (cog). This is next to the datatype field.

    2025-11_line0002

    This brings up a list of types I can choose. When I choose varchar, I get a box at the top for the length.

    2025-11_line0001

    Once I have filled out what I need, I can see my canvas image is updated with the attributes. Notice that I’ve marked the three attritibutes as required (the M column) and the ArticleID as the PK (the PI column).

    2025-11_line0004

    I’ll add a second entity, that I want to relate. Once I’ve added it, I see the icon at the top for a 1 to many relationship.

    2025-11_0085

    If I click this, I can then click on article and drag to ArticleSchedule. That gives me a visual linkage between the two items.

    2025-11_0086

    If I continue and add a few more entities, I can start to see a nice relationship for my model. I’ve added some many-many relationships, which you can see are different than the one-many.

    2025-11_0087

    Saving the Image

    Once I want, I can save this as an image. There is also the option to share with others in my org, or export a PDF.

    2025-11_0089

    Once I click this, I choose the type and if I’m doing part of the model or the whole thing.

    2025-11_0090

    I click Generate and get a link to download my image.

    2025-11_0091

    When I download it and open it, I see this. An image of just my entities.

    2025-11_0092

    I can also generate documentation. When I click this icon, I get a choice of formats.

    2025-11_0093

    When I generate that, then I open it and see a document. It’s here if you want to look at it, but here’s an image of one page.

    2025-11_0094

    If I click on the Data Modeler icon in the upper left, I go back to the main screen with my model listed in the middle. I can see this is a logical model based on the icon.

    Not a bad little tool to start modeling, though likely for most of the things I do, I’d live in a Physical model with the ability to import from a SQL Script. I’ll look at those features in another post, but this has shown you a quick look at getting started and creating a logical model.

    Give Redgate Data Modeler a try and see if it helps you and your team get a handle on your database.