Windows Server 2016中具有Azure AD令牌的间歇性SQL登录问题

时间:2018-12-04 02:57:48

标签: sql-server azure azure-sql-database windows-server-2016

我遇到了间歇性登录问题,特别是从Windows Server 2016计算机到Azure SQL数据库的登录问题。我有一个应用程序,该应用程序每30秒连续请求一个Azure AD令牌,并在sql连接对象中使用该令牌连接到SQL Server并运行查询。此循环间歇性失败,用户NT AUTHORITY \ ANONYMOUS LOGON登录失败。

失败似乎遵循一种模式,该模式适用于6个请求,然后针对6个请求而失败。我还将循环时间更改为15秒,并且模式增加了一倍。

我在两台不同的Windows 10计算机和Windows Server 2012 R2上运行了相同的控制台应用程序,并且运行正常。

该应用程序的代码如下(出于安全原因,未显示检索令牌的变量):

while (true)
            {
                var token = Task.Run(() => 
 SignInWithClientSecret("https://database.windows.net/", aadinstance, 
 applicationId, secret, true)).Result;
                using (SqlConnection conn = new 
 SqlConnection(connectionstring))
                {
                    conn.AccessToken = token.AccessToken;
                    //Console.WriteLine(token.AccessToken);
                    try
                    {
                        conn.Open();
                        using (var cmd = new SqlCommand(sqlcommand, conn))
                        {
                            var result = cmd.ExecuteNonQuery();
                            Console.WriteLine("Executed command");
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine("Error executing sql command: " + 
 ex.Message);
                    }
                }
                Thread.Sleep(30000);
            }

1 个答案:

答案 0 :(得分:0)

该问题是由于安装了.NET Framework。我升级到4.7.2,它可以工作。