public static void DropDatabaseUser(DatabaseSetupInfo setupInfo)
        {
            Action <SqlConnection> dropLoginMethod = (connection) =>
            {
                using (SqlCommand dropLoginCommand = new SqlCommand("sp_droplogin", connection))
                {
                    dropLoginCommand.CommandType = CommandType.StoredProcedure;
                    dropLoginCommand.Parameters.Add("@loginame", SqlDbType.VarChar).Value = setupInfo.EffectiveApplicationAuthenticationInfo.UserName;
                    dropLoginCommand.ExecuteNonQuery();
                }
            };

            using (SqlConnection adminConnection = new SqlConnection(setupInfo.CreateConnectionString(true, false)))
            {
                adminConnection.Open();
                if (!setupInfo.ApplicationAuthenticationSameAsAdmin && !setupInfo.ApplicationAuthenticationInfo.IntegratedSecurity)
                {
                    if (!setupInfo.IsServerRoleMember("sysadmin", setupInfo.ApplicationAuthenticationInfo.UserName, adminConnection))
                    {
                        using (SqlCommand selectUsersCommand = new SqlCommand("exec sp_MSloginmappings @User", adminConnection))
                        {
                            selectUsersCommand.Parameters.Add("@User", SqlDbType.VarChar).Value = setupInfo.ApplicationAuthenticationInfo.UserName;
                            selectUsersCommand.CommandTimeout *= 4;
                            SqlDataAdapter adpt       = new SqlDataAdapter(selectUsersCommand);
                            DataTable      usersTable = new DataTable();
                            adpt.Fill(usersTable);
                            if (usersTable.Rows.Count == 0)
                            {
                                dropLoginMethod(adminConnection);
                            }
                            else if (usersTable.Rows.Count == 1 && usersTable.Rows[0]["DBName"].ToString().Equals(setupInfo.DatabaseName, StringComparison.InvariantCultureIgnoreCase))
                            {
                                using (var adminConnectionWithDB = new SqlConnection(setupInfo.CreateConnectionString(true, true)))
                                {
                                    adminConnectionWithDB.Open();
                                    if (!setupInfo.IsDatabaseRoleMember("db_owner", setupInfo.ApplicationAuthenticationInfo.UserName, adminConnectionWithDB))
                                    {
                                        using (var dropUserCommand = new SqlCommand(string.Format("DROP USER [{0}]", setupInfo.ApplicationAuthenticationInfo.UserName), adminConnectionWithDB))
                                        {
                                            dropUserCommand.ExecuteNonQuery();
                                        }
                                        dropLoginMethod(adminConnection);
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }