The postings on this site are my own and do not represent my Employer's positions, advice or strategies.

LifeAsBob - Blog



No Ads ever, except search!
Saturday, July 20, 2024 Login

AJ Graduation 20245/30/2024 1:14:57 PM
AJ Graduation 2024

All 3 boys have completed the work...

No posts for 1 year5/30/2024 1:03:36 PM
Goal accomplished, no posts for 1 year !

Visual Studio IIS Debug web project5/29/2023 12:44:58 PM
Sometimes the debugger won't launch.

Make sure visual studio started as an admin

Sometimes permissions are lost.
elevated command prompt

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Aspnet_regiis.exe -ga domain\user

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files

IIS NT Authentication Stopped working2/19/2023 6:39:09 AM

Just an internally hosted web site, for use by members of my group on our domain.  Been working for years, suddenly today it begins prompting for credentials and/or wouldn't load.  Of course no changes, but there are always changes we can't control when you work in a big organization, group policy changes and patching being the biggest.

This same server, also hosts SSRS and it was authenticating fine with windows / nt authentication, so we knew it wasn't a problem of the server.

Ultimate credit goes to Ben Reese for helping solve this ! 

Ben sent me this so I could put it here as a place holder so we can remember the fix.

Followed these steps:

 The solution for this is to disable the NEGOTIATE protocol in IIS, so that NTLM is always use. In sporadic situations, or to confirm the problem, you may want to disable NEGOTIATE in the client workstation.

  1. Access IIS Manager;
  2. Expand <server> Sites Default Web Site;
  3. In the IIS group, choose Authentication;
  4. Click Windows Authentication. On the side bar, option Providers shows up; if not, first activate Windows Authentication so it does show up;
  5. Remove NEGOTIATE provider.
  6. If you added Windows Authentication on step 4, deactivate it again;
  7. Do an IISReset

After performing the steps above, authentication should start working in Internet Explorer / Microsoft Edge.

 I tried lowering the priority of “NEGOTIATE” provider first, but that didn’t work unfortunately. Went ahead and removed it then tested again… It’s working in Edge without a UN/PW! Chrome still prompts the first time, but I maybe integrated security doesn’t work the same on Chrome ?? SSRS prompts for credentials in Chrome too if you haven’t authenticated already.

 And how I got there in case that was the wrong “fix” and it needs to be undone:

Remove SMO - Parse for GO11/29/2022 7:25:14 AM

SMO = SQL Management Objects.

GO is not a TSQL command, but is often used in many scripts, the client must parse for go and submit in batches.

SSMS = SQL Server Management Studio.

SSMS Does this automatically.

Take the same script and execute it via submitting the command to the DBMS (java, c#, powershell etc) and it will fail.

Generally, the solution for this is to implement SMO in the code.

Long term this has always been an issue as SMO libraries are a pain too install, upgrade, patch.  As the years go by even upgrading projects in visual studio become difficult fighting the GAC and other .NET fun.

Could not load file or assembly 'Microsoft.SqlServer.BatchParser, Version=, Culture=neutral, PublicKeyToken=89845dcd8080cc91' or one of its dependencies. The system cannot find the file specified.

Finally, I just removed SMO from my project(s) and life is soo much easier.

Below is the REGEX Function I use to parse a command into the different statements based on the GO operator.

using System.Collections;
using System.Text.RegularExpressions;
using System.Collections.Generic;
using System.Collections.Specialized;

    public static class SQLFunctions

        public static ArrayList ParseForGo(String query)
            // If 'GO' keyword is present, separate each subquery, so they can be run separately.
            // Use Regex class, as we need a case insensitive match.

            string separator = "GO";
            Regex r = new Regex(string.Format(@"^\s*{0}\s*$", separator), RegexOptions.IgnoreCase | RegexOptions.Multiline);
            MatchCollection mc = r.Matches(query);
            ArrayList queries = new ArrayList();
            int pos = 0;
            foreach (Match m in mc)
                string sub = query.Substring(pos, m.Index - pos).Trim();
                if (sub.Length > 0) queries.Add(sub);
                pos = m.Index + m.Length + 1;

            if (pos < query.Length)
                string finalQuery = query.Substring(pos).Trim();
                if (finalQuery.Length > 0) queries.Add(finalQuery);

            return queries;

To call this:
 // If the user has selected text within the query window, just execute the
                // selected text.  Otherwise, execute the contents of the whole textbox.
                string allquerytext = txtQuery.SelectedText.Length == 0 ? txtQuery.Text : txtQuery.SelectedText;
                //                if (query.Trim() == "") return;

                // now parse for the go operatory
                ArrayList queries = new ArrayList();
                if (chkAdhocParseForGo.Checked)
                    queries = parseForGo(allquerytext);

Honda CTX 700 20147/25/2022 10:52:38 AM
New to me !
Honda CTX 700 2014

SQL Server Management Studio MFA hanging not prompting7/12/2022 5:58:15 AM

We have certain "zones" / "restrictions" that cause us too use a common "jump box" (server). 

Sometimes SQL Server Management Studio SSMS hangs when using Multi Factor Authentication to access Azure SQL resources.  The prompts for logging in never appear.  ( Make sure the URL's for Microsoft are white listed).

This appeared to only affect some users.

Internet Explorer is "retired", but it appears that SSMS still uses some calls to IE underneath the hood to call MFA.

The team was able to find a workaround that users can compete to clean up a bad cookie that seems to be the ultimate culprit. Details on this fix are below:


Executing the below commands in a Powershell window. – If you have never ran Internet explorer on the server before, do that before running the command. E.g open IE and close it, the run the below.


RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 1

start-sleep 2

RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 2

start-sleep 2

RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 8

start-sleep 5


[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12