J'utilisais un .mdf
pour me connecter à un database
et entityClient
. Maintenant, je veux changer la chaîne de connexion pour qu'il n'y ait pas de .mdf
fichier.
Est-ce que ce qui suit est connectionString
correct?
<connectionStrings>
<!--<add name="conString" connectionString="metadata=res://*/conString.csdl|res://*/conString.ssdl|res://*/conString.msl;provider=System.Data.SqlClient;provider connection string="Data Source=.\SQL2008;AttachDbFilename=|DataDirectory|\NData.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" />-->
<add name="conString" connectionString="metadata=res://*/conString.csdl|res://*/conString.ssdl|res://*/conString.msl;provider=System.Data.SqlClient;provider connection string="Data Source=.\SQL2008;Initial Catalog=NData;Integrated Security=True;Connect Timeout=30;User Instance=True;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" />
Parce que je reçois toujours l'erreur:
Le fournisseur sous-jacent a échoué sur Open
c#
sql-server
entity-framework
database-connection
senzacionale
la source
la source
Integrated Security
de la chaîne de connexion, créé un utilisateur et vérifié qu'il dispose dessysadmin
autorisations et ajouté cet utilisateur à la chaîne de connexion.Réponses:
J'ai eu cette erreur et j'ai trouvé quelques solutions:
En regardant votre chaîne de connexion, elle semble valide. J'ai trouvé ce billet de blog , le problème ici est qu'ils utilisaient Integrated Security . Si vous exécutez sur IIS, votre utilisateur IIS doit avoir accès à la base de données.
Si vous utilisez Entity Framework avec des transactions , Entity Framework ouvre et ferme automatiquement une connexion avec chaque appel de base de données. Ainsi, lorsque vous utilisez des transactions, vous essayez de répartir une transaction sur plusieurs connexions. Cela élève à MSDTC .
( Voir cette référence pour plus d'informations. )
Changer mon code comme suit l'a corrigé:
la source
context.Connection.Open()
n'a pas aidé à résoudre mon problème, j'ai donc essayé d'activer "Autoriser les clients distants" dans la configuration DTC, plus d'erreur.Dans Windows 7, vous pouvez ouvrir la configuration DTC en exécutant dcomcnfg, Services de composants -> Ordinateurs -> Poste de travail -> Coordinateur de transactions distribuées -> Cliquez avec le bouton droit sur Local DTC -> Sécurité.
la source
Vous devriez voir innerException pour voir quelle est la cause interne du lancement de l'erreur.
Dans mon cas, l'erreur d'origine était:
qui a résolu en donnant la permission complète à l'utilisateur actuel d'accéder aux fichiers liés
mdf
etldf
en utilisant les propriétés des fichiers.la source
J'ai trouvé que le problème était que j'avais le chemin du serveur dans la chaîne de connexion dans l'une de ces variantes:
Quand j'aurais vraiment dû:
Pour une raison quelconque, j'ai eu l'erreur chaque fois qu'il avait du mal à localiser l'instance de SQL.
la source
Il s'agit uniquement d'un problème courant. Même moi, j'ai fait face à ce problème. Sur la machine de développement, configurée avec l'authentification Windows, cela fonctionne parfaitement:
Une fois hébergé dans IIS avec la même configuration, j'ai eu cette erreur:
Il a été résolu de changer
connectionString
dans le fichier de configuration:D'autres erreurs courantes pourraient être:
la source
Integrated Security=True
et remplacez-le paruser id=sa;password=notmyrealpassword
pour résoudre ce problème de déploiement.Lorsque vous recevez cette exception, assurez-vous de développer les détails et examinez les détails de l' exception interne car ils fourniront des détails sur la raison de l'échec de la connexion. Dans mon cas, la chaîne de connexion contenait un utilisateur qui n'avait pas accès à ma base de données.
Que vous utilisiez Integrated Security (le contexte de l'utilisateur Windows connecté) ou un compte SQL individuel, assurez-vous que l'utilisateur dispose d'un accès approprié sous `` Sécurité '' pour la base de données à laquelle vous essayez d'accéder pour éviter ce problème.
la source
inner exception
état du problème? C'était ma réponse ici, qu'elle fournira les détails supplémentaires cachés nécessaires pour comprendre le vrai problème sous-jacent. Leinner exception
ne vérifiera pas que vous avez la connexion correcte - c'est une exception et non une clarification.Login failed for user 'user'.
NT AUTHORITY\NETWORK SERVICE
à la liste des utilisateurs de SQL Server. J'ai toujours eu le même échec de connexion rejeté.data source
pourhostname\SQLEXPRESS
. J'avais essayéhostname
et.\SQLEXPRESS
auparavant. Ensuite, j'ai pu me connecter avec une sécurité intégrée. Curieusement, c'est l'opposé de la réponse de dooburt . Curieux, le nom d'utilisateur SQL Server n'a jamais pu se connecter à partir de Visual Studio.J'ai eu un problème similaire avec SQL Server Express Edition sur Windows Server 2003 . J'ai simplement ajouté le service réseau en tant qu'utilisateur dans la sécurité de la base de données.
la source
Le service SQL Server Express n'a pas été défini pour démarrer automatiquement.
1) Accédez au panneau de configuration 2) Outils d'administration 3) Service 4) Configurez SQL Server express pour qu'il démarre automatiquement en cliquant dessus 5) Faites un clic droit et démarrez le service
J'espère que cela aidera.
la source
Cela peut également se produire si vous restaurez une base de données et que l'utilisateur existe déjà avec un schéma différent, vous empêchant d'attribuer les autorisations appropriées.
Pour corriger cette exécution:
la source
J'ai publié un problème similaire ici, en travaillant avec une base de données SQL 2012 hébergée sur Amazon RDS. Le problème était dans la chaîne de connexion - j'avais "Application Name" et "App" propriétés là-dedans. Une fois que j'ai retiré ceux-ci, cela a fonctionné.
Entity Framework 5 et Amazon RDS - "Le fournisseur sous-jacent a échoué sur Open."
la source
Assurez-vous que chaque valeur d'élément dans la chaîne de connexion fournie est correcte. Dans mon cas, j'obtenais la même erreur car le nom du catalogue (nom de la base de données) spécifié dans la chaîne de connexion était incorrect.
la source
J'ai eu un problème similaire avec des exceptions en raison de l'état de la connexion, puis j'ai réalisé que ma variable de classe de service de domaine était marquée comme statique (par erreur).
Je suppose qu'une fois que la bibliothèque de services est chargée en mémoire, chaque nouvel appel finit par utiliser la même valeur de variable statique (instance de service de domaine), provoquant des conflits via l'état de connexion.
Je pense également que chaque appel client a entraîné un nouveau thread, donc plusieurs threads accédant à la même instance de service de domaine équivalaient à une épave de train.
la source
J'ai eu le même problème mais ce qui a fonctionné pour moi a été de supprimer cela de la chaîne de connexion:
persist security info=True
la source
J'ai eu une erreur similaire avec l'exception interne comme ci-dessous:
Je pourrais le résoudre en activant les paramètres de sécurité DTC.
Allez dans Propriétés de DTC, sous l'onglet Sécurité, vérifiez ci-dessous
la source
Si vous obtenez cette erreur sur une application Web ASP.NET, en plus des autres éléments mentionnés, vérifiez les points suivants:
la source
Je me suis débarrassé de cela en réinitialisant IIS , mais en l'utilisant toujours
Integrated Authentication
dans la chaîne de connexion.la source
La définition d'une nouvelle règle de pare-feu Windows pour SQL Server (et pour le port 1433) sur la machine serveur résout cette erreur (si votre nom de serveur, nom d'utilisateur ou mot de passe n'est pas incorrect dans votre chaîne de connexion ...).
la source
Une erreur courante que j'ai commise parce que je déplaçais une application d'un PC à un autre et rien de ce qui précède n'a fonctionné, c'est que j'ai oublié de copier la chaîne de connexion dans App.Config et Web.Config!
la source
J'ai eu un problème similaire: dans mes exécutions de cas de test, j'ai toujours eu cette erreur. J'ai découvert que mon "service de transactions distribuées" n'était pas démarré (exécutez: services.msc -> démarrer "service de transactions distribuées" (il est préférable de le configurer pour qu'il démarre automatiquement)). Après cela, cela a fonctionné comme un charme ...
la source
J'ai copié les fichiers de base de données (.mdf / .ldf) dans le dossier App_Data pour me débarrasser de cette exception.
la source
J'étais également confronté au même problème. Maintenant, je l'ai fait en supprimant le nom d'utilisateur et le mot de passe de la chaîne de connexion.
la source
Pour moi, ce n'était qu'une simple erreur:
J'ai utilisé Amazon EC2 et j'ai utilisé mon adresse IP élastique dans la chaîne de connexion, mais lorsque j'ai changé d'adresse IP, j'ai oublié de mettre à jour ma chaîne de connexion.
la source
J'ai eu cette erreur soudainement survenue sur l'un de nos sites. Dans mon cas, il s'est avéré que le mot de passe de l'utilisateur SQL avait expiré! Décocher la case d'expiration du mot de passe dans SQL Server Management Studio a fait l'affaire!
la source
J'ai eu le même problème il y a quelques jours, en utilisant "Integrated Security = True;" dans la chaîne de connexion, vous devez exécuter l'identité du pool d'applications sous "localsystem" Bien sûr, ce n'est pas recommandé, mais pour le tester, il fait le travail.
Voici comment vous pouvez modifier l'identité dans IIS 7: http://www.iis.net/learn/manage/configuring-security/application-pool-identities
la source
Dans IIS, définissez l' identité du pool d'applications en tant qu'utilisateur de compte de service ou compte d'administrateur ou compte ant qui est autorisé à effectuer l'opération sur cette base de données.
la source
Dans mon cas, j'avais un décalage entre le nom de la chaîne de connexion que j'enregistrais dans le constructeur du contexte et le nom dans mon web.config. Erreur simple causée par le copier-coller: D
la source
J'ai la même erreur que j'ai trouvée lorsque je change ma connexion Chaîne vers une nouvelle source de données J'oublie de changer le nom d'utilisateur et le mot de passe pour la nouvelle base de données
la source
J'ai également rencontré cette erreur si le nom de l'instance SQL Server n'est pas spécifié et que l'hôte SQL a plusieurs instances SQL installées. Voici quelques exemples à clarifier:
La chaîne de connexion ci-dessous entraîne l'exception «Le fournisseur sous-jacent a échoué à l'ouverture» sans exception interne dans une application .NET WebForms:
La chaîne de connexion suivante s'exécute comme prévu dans une application .net WebForms où l'environnement SQL a plusieurs instances. Rare, je sais, mais j'ai quelques instances SQL différentes sur ma boîte de développement pour accueillir différents projets:
la source
dans mon cas, l'adresse du serveur a été modifiée par l'administrateur du serveur, j'ai donc dû changer la chaîne de connexion en une nouvelle adresse de serveur
la source
J'ai eu ce problème car la connexion au pool d'applications sous laquelle cette application s'exécutait avait changé.
Dans IIS:
Trouvez le pool d'applications en cliquant sur votre site et accédez aux paramètres de base.
Accédez aux pools d'applications.
Cliquez sur le pool d'applications de votre site.
Cliquez sur Paramètres avancés.
Dans Identité, entrez le nom d'utilisateur et le mot de passe du compte.
Redémarrez votre site et réessayez.
la source