• Upgrading to a Samsung 970 EVO Plus SSD

    My new laptop came with a 512GB SSD. As I mentioned previously, you can select a higher capacity when you order but I decided to pick the lowest size and then upgrade it myself with a 3rd-party SSD, specifically a Samsung 970 EVO Plus SSD NVMe M.2 2TB.

    Samsung 970 EVO Plus SSD NVMe M.2 2TB

    I chose the 970 EVO Plus as it was the largest capacity SSD that Samsung makes that is compatible with the Dell Latitude 7420 with a price that was still within budget. Specifically it is an M.2 2280 form factor with a PCIe Gen 3.0 x 4 NVMe 1.3 interface.

    Special thanks to fellow MVP and SixPivot colleague Bill Chesnut who lent me an SSD caddy so I could use disk cloning software to clone the data from the old SSD onto the new 970.

    Accessing the existing SSD in the 7420 is pretty easy. There’s a few standard Phillips-head screws to loosen to take the base off (yay, no Torx screws like my 9550 had!), then two smaller screws to remove the cover/heat sink of the existing SSD.

    Dell Latitude 7420 insides

    Pull out the old SSD and slide in the new one, screw everything back in place and power up.

    Samsung SSD inserted

    Strangely, the first time I did this, Windows was a little unhappy and decided my disk had errors and was going to spend a really long time fixing them.

    Windows screen with disk repair

    I stopped that after a while (as yes, it was serious when it said it might take over an hour!) and decided to try the clone again. This time just to be safe I ran a chkdsk (specifically chkdsk /f /scan /forceofflinefix /b c: on the original disk just to ensure everything was good before cloning. The second clone was fine and Windows booted up just like you’d expect, but instead of a 256 drive, I now had almost 2TB!

    Benchmarks

    So it’s obviously bigger, but is it better?

    I used HDTune to run some benchmarks to find out. All of these were run with as few other processes/services running, A/C power was connected and laptop performance configured to run at ‘Maximum performance’.

    Here’s the original SSD. I must say I was a bit surprised to see the variations here - quite inconsistent.

    Stock Dell KXG60ZNV256G 256GB SSD benchmark

    Dropping in the Samsung SSD (with no other changes), and things are looking a bit better already.

    Samsung SSD with 'RAID' storage mode

    Measurement Value
    Transfer Rate Minimum 1439.2 MB/sec
    Transfer Rate Maximum 1495.0 MB/sec
    Transfer Rate Average 1473.6 MB/sec
    Access Time 0.0 ms
    Burst Rate 276.8 MB/sec
    CPU Usage 3.1%

    But can we do any better?

    Samsung NVM Express Driver

    Samsung make the Samsung NVM Express Driver available to install. Would that eak out a few extra MB/sec? I tried installing it but it failed with an error that it wasn’t compatible with the current hardware.

    Turns out if your device is in ‘RAID’ storage mode (as mine was set to by default), then it won’t install. You need to switch to ‘AHCI’ mode first. That setting change must be made in the BIOS (UEFI) settings:

    UEFI BIOS settings, storage screen

    Historically making this kind of change might cause you to end up with an unbootable system, but in my case Windows was able to automatically load the ‘Standard NVM Express Controller’ and the system booted correctly. (Truth be told I did actually boot into Safe mode after making the change, but I didn’t need to do anything specific once I got there so I suspect it wasn’t really necessary).

    Device Manager, Standard NVM Express Controller

    Restarting back up and we’re now running in AHCI mode. Let’s just check if there’s any change in performance from just doing that:

    Samsung SSD with 'AHCI' storage mode

    Measurement Value
    Transfer Rate Minimum 1427.0 MB/sec
    Transfer Rate Maximum 1488.7 MB/sec
    Transfer Rate Average 1463.2 MB/sec
    Access Time 0.0 ms
    Burst Rate 276.4 MB/sec
    CPU Usage 4.0%

    Pretty much in the same ballpark as before. But now I was able to successfully install the Samsung NVM Express Driver:

    Device Manager, Standard NVM Express Controller

    After another reboot, time for the final HDTune benchmark..

    Samsung SSD with 'AHCI' storage mode and Samsung NVM Express Driver

    Measurement Value
    Transfer Rate Minimum 1511.3 MB/sec
    Transfer Rate Maximum 1581.9 MB/sec
    Transfer Rate Average 1548.0 MB/sec
    Access Time 0.0 ms
    Burst Rate 282.1 MB/sec
    CPU Usage 3.3%

    Nothing dramatic, but a small improvement, which I’m happy to take 😀

    Samsung also have their ‘Samsung Magician’ software that you can use to configure and review your Samsung SSD drives. It also comes with a benchmark. No idea how accurate it is but here’s the results:

    Samsung Magician benchmark

    Interestingly it does seem like more features and information are available in Samsung Magician once the Samsung NVM Express Driver is installed.

    So in the end, I think it turned out well.

  • SQL client alias not working

    This morning I was trying to create a SQL client alias. An application assumes my local SQL Server instance is named ‘SQLEXPRESS’ but I’ve installed SQL Server 2019 Developer Edition (which installs as the default instance).

    I opened SQL Server 2019 Configuration Manager and created an alias.. It didn’t work. I can never remember whether to use the ‘32bit’ configuration or the other one! I tried both, still no success.

    I checked Google to see I was doing it right. Yep, tried this and still no luck.

    Let’s double-check how my local instance is configured..

    SQL Server Configuration Manager, showing Protocols node

    Whoops! Aliases can only use ‘Named Pipes’ or ‘TCP/IP’ and both of those protocols are disabled.

    Let’s enable TCP/IP

    Enable TCP/IP protocol

    And enable binding to 1433 on localhost for IPv4 and IPv6. I won’t bother with the other IP addresses as I’m not planning to share this instance externally.

    Enable IP Addresses

    Restart the SQL service and we’re all good.

    Oh.. and for my own reference, the ‘32bit’ client alias did the trick for SSMS, but for a .NET application I needed also add a non-32bit alias too.

  • Azure Pipelines - Web App or App Service tasks?

    There’s two tasks you can choose from when deploying a web app to Azure when using an Azure Pipeline:

    1. Azure App Service Deploy task
    2. Azure Web App task

    I got them mixed up the other day and only realised my mistake when I discovered that the options I wanted to configure didn’t exist on the task.

    I’m not the first to wonder about this. Looks like the advice is use the Web App task if it is a simple web app deployment, but use the App Service task if you need more control over the deployment or you’re deploying one of: