SQLTeam.com | Weblogs | Forums

SQL Server 2016 SP1

SQL Server 2016 SP1 on Windows 2012 server

Documentation from Hardware and Software Requirements states that a prerequisite is .NET 4.6.1 Framework for the Database Engine, Master Data Services and Replication. It will automatically be installed if not already.

It was note installed before, I can't post an image of that because I'm limited to one right now.

This is after installation

As you can see, it's not there! However, so far the products seem to be working correctly.

Should I install the .NET 4.6.1 now after-the fact, or let it be?
Any insights are welcome and appreciated!

Thank you in advance,


On my Windows 2016 server that has SQL 2016 SP1, the Get-WindowsFeature command that you used showed that I have .net 4.6. Yet, if I look in the registry, I see that I have .Net 4.7. Or if I run the script shown in the response to the question here, that again shows me that I have .Net 4.7.

My knowledge of Powershell leaves a lot to be desired, so I don't know why Get-WindowsFeature is not telling me that I have .Net 4.7. You might want to look in the registry and/or run the powershell script I pointed to before attempting to install a new version of .Net

1 Like

That link has a number of different scripts, but none of them worked for me. One thing I'm learning about PowerShell is that it changes. A script that works may not work in future releases because functions move, are rewritten, are incorporated somewhere else. It makes me shy away from using it. But I'm just learning, maybe I'm missing something because it seems such a powerful tool.

When searching about "finding the installed version of .NET" (which I thought was straightforward), I find it isn't so easy. My commands show I have 4.5, the registry shows me 4.0 but maybe I'm not looking in the right place for the .5 part. In the registry under the v4.0.30319 I see SKUs with an entry .NETFramework,Version=4.6.1. Maybe that means I have 4.6.1. I'm going to go with that I guess and see what happens.

Thanks for the response.

To search the registry, I was following the procedure given in this MSDN page. You have to drill down into the v4 and look under the "Full" node as shown in the screenshot on that page. On my server, Release showed 460805, translates to v4.7 as shown in the table below their screenshot.

The powershell script I used is the following from the page I pointed to earlier. It is really just reading the registry and doing the DWORD to version translations.

Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP' -recurse |
Get-ItemProperty -name Version,Release -EA 0 |
Where { $_.PSChildName -match '^(?!S)\p{L}'} |
Select PSChildName, Version, Release, @{
      switch -regex ($_.Release) {
        "378389" { [Version]"4.5" }
        "378675|378758" { [Version]"4.5.1" }
        "379893" { [Version]"4.5.2" }
        "393295|393297" { [Version]"4.6" }
        "394254|394271" { [Version]"4.6.1" }
        "394802|394806" { [Version]"4.6.2" }
        "460798" { [Version]"4.7" }
        {$_ -gt 460798} { [Version]"Undocumented 4.7 or higher, please update script" }
1 Like

Thank you James, that helps greatly, gives me my answer. I'm coming from the Linux and Oracle environment, so I feel like a fish out of water for a bit. I appreciate the answer.


how we can remove double pipe from table data in sql server