Comment créer une nouvelle base de données dans SQL Server 2008 Express et permettent une connexion?
J'ai un SQL Server Express 2008 R2 instance en cours d'exécution sur mon pc local.
- D'authentification est "mixte", donc je peux me connecter à l'aide d'un identifiant Windows et à l'aide de l'authentification SQL Server.
- Canaux sont activés
- TCP/IP est activé
- Les connexions à distance sont autorisés
J'ai pris les étapes suivantes pour créer une nouvelle connexion et de la base de données:
- Je me suis connecté à l'aide de SQL Server Management Studio Express et créé une nouvelle connexion
- J'ai créé une nouvelle base de données avec le nouvellement créé de connexion en tant que propriétaire
Comme vous pouvez le voir dans la dernière capture d'écran il y a un nom d'utilisateur "dbo" qui "appartient" à la nom de connexion "mylogin". Je suis en train d'utiliser la chaîne de connexion suivante, mais il ne fonctionne pas:
Source de données=(local)\sqlexpress;Initial Catalog=newdb;User id=mylogin;Mot de passe=mypass
Le journal des erreurs de SQL Server Management studio express états:
Échec de la connexion de l'utilisateur "mylogin'. Raison: impossible d'ouvrir la base de données spécifiée explicitement. [CLIENT: xxx.xxx.x.xx].
Erreur: 18456, Gravité: 14, État: 38
Si je change le id Utilisateur dans la chaîne de connexion à "dbo" l'erreur suivante s'est signalé:
Échec de la connexion de l'utilisateur "dbo". Raison: impossible de trouver une connexion correspondant au nom fourni. [Client: xxx.xxx.x.xx].
Je commence à tourner vraiment fou maintenant. J'ai juste aucune idée sur la façon d'obtenir l'accès à toute la base de données de plus... Est mon instance de SQL Server corrompu?
Ce problème se produit uniquement lorsque j'essaie de me connecter à partir de mon ASP.NET des applications. Connexion à l'aide de SQL Server Management studio Express, en utilisant les informations d'identification mentionné NE travail!
Oui, ça marche.
Donc, le problème est que vous avez deux express, celle que vous avez installé directement et qui est en cours d'exécution à partir de Visual Studio? Lorsque vous êtes connecté dans Management Studio, ce qui ne
SELECT @@SERVERNAME
rendement? Si c'est différent de ce que vous essayez de vous connecter à partir de ASP.NET, <facepalm>OriginalL'auteur Ropstah | 2011-08-20
Vous devez vous connecter pour publier un commentaire.
n'essayez pas de carte dbo votre connexion. dbo est un utilisateur spécial.
Pour se connecter à SQL Server à l'aide de l'authentification SQL, vous devez venir à l'aide d'un login, pas un utilisateur (laissons de contenus de bases de données dans les modèles Denali hors de la discussion pour l'instant). Donc, vous ne devriez jamais tenter de spécifier un utilisateur de base de données (comme dbo) dans votre chaîne de connexion. Je vous recommande vivement la création d'une connexion, puis la création d'un utilisateur au niveau base de données avec le même nom qui correspond à la connexion, ce qui est beaucoup moins compliqué que d'essayer de carte login_foo à user_bar. Je recommande aussi de rester loin de mots spéciaux pour des utilisateurs ou des connexions (par exemple, dbo).
Ici est de savoir comment je voudrais ajouter un serveur de connexion, les mettre dans le newdb base de données en tant qu'utilisateur, ajoutez-les à la db_owner (pas dbo), et de définir leur base de données par défaut pour newdb. Ouvrez une nouvelle fenêtre de requête en Management Studio et connectez-vous à maîtriser, puis exécutez la commande suivante:
Maintenant votre chaîne de connexion .NET devrait ressembler à:
Si cela ne fonctionne pas, j'aimerais vérifier que votre ASP.NET application est en cours d'exécution sur la même machine que le SQL Express instance. Le serveur web est également sur votre machine, non? Bref, cela devrait fonctionner, et si ça ne marche pas, il y a une autre variable impliqués qui n'est pas évident. Vous ne devriez pas avoir à faire de l'utilisateur le réel propriétaire de base de données pour vous connecter, mais si le ci-dessus ne fonctionne toujours pas résoudre le problème, voir si le script ci-dessous modifie le comportement ou, au moins, le message d'erreur est enregistré dans le journal:
Ce chiffre tombe à l'utilisateur de la base de données et puis re-ajoute que le propriétaire officiel (ce n'est pas la même chose que d'être dans le rôle db_owner, qui est essentiellement juste un raccourci pour l'octroi d'un modèle d'autorisations). Cela ne devrait pas être nécessaire, mais il peut vous aider à isoler pourquoi vous ne pouvez pas obtenir cette habitude simple processus de travail.
OriginalL'auteur Aaron Bertrand