Comment fermer toutes les connexions à une base de données par programmation

Je veux fermer les connexions existantes à un Serveur SQL server afin que je puisse faire une restauration de la base de données. Je suis en utilisant entity framework. J'ai essayé de l'exécution de

alter database YourDb 
set single_user with rollback immediate

mais puis-je obtenir une exception en disant que

De connexion n'a pas été fermé

Je ne peux pas comprendre pourquoi les connexions ne sont pas autorisés à fermer?

Cette image montre la totalité exception

Comment fermer toutes les connexions à une base de données par programmation

c'est la méthode,

 public void dbQueueryExctr(string queuery)
        {
            SqlCommand cmd = new SqlCommand();
            SqlDataReader reader;


            using (SqlConnection connectionx = new SqlConnection(CONNECTIONSTRING))
            {

                connectionx.Open();
                //connectionx.Open(); //Removed
                cmd.CommandText = queuery;
                cmd.CommandType = CommandType.Text;
                cmd.Connection = connectionx;

                reader = cmd.ExecuteReader();
                connectionx.Close();


            }

Edit:
J'ai enlevé la première .Open(). Maintenant, j'ai seulement Ouvert()

êtes-vous vous connecter à la base de données :-), je pense que vous auriez besoin pour vous connecter à la base de données de l'instance de sql server où la base de données vies à courir et la commande alter database. voir aussi stackoverflow.com/questions/7197574/...
pourquoi faites-vous appel à .Open() deux fois?
Si vous êtes en utilisant Entity Framework, pourquoi êtes-vous à l'aide de SqlConnection?
Maintenant que l'ouvrir n'est appelée qu'une fois, vous devriez obtenir une erreur différente. Je prendrais tous les ouverts de loin et de voir quelle est l'erreur que vous obtenez. Peu importe, le message d'erreur que vous envoyez à cette question n'est pas un problème avec la fermeture de la connexion, c'est un problème de l'exécution d'une requête. Si vous mettez SELECT * FROM TABLE_NAME (où TABLE_NAME est une table dans votre base de données), vous obtenez le même problème. Démarrage simple et de le faire fonctionner, alors essayez d'ajouter de la complexité.
Pourriez-vous peut-être revenir le Modifier dans votre extrait de code? Puisque les gens (comme moi) pour un problème similaire à la leur, cela apporte de la confusion. Si je l'avais vu tout de suite que vous avez utilisé pour avoir 2 Open() déclarations, je pourrais avez sauté cette question. Vous n'avez pas à supprimer l'erreur de montrer à tous le correctif, la réponse indique que le correctif.

OriginalL'auteur Sanke | 2015-05-07