2 votes

Comment autoriser l'accès à un utilisateur de sql server ?

Je suis un développeur-essayant-de-jouer-à-l'administrateur et je souhaite me connecter à un serveur sql distant depuis ma machine de développement en utilisant un utilisateur du serveur sql ("op_web").

Lorsque j'essaie de me connecter à partir de vs2008 Server Explorer, je peux me connecter au serveur, mais aucune base de données n'est répertoriée. Si je me connecte en utilisant l'utilisateur admin du serveur, toutes les bases de données sont répertoriées comme prévu.

Le serveur est une installation relativement récente faite par moi.

J'ai

  • autorisé pour les connexions à distance dans sql server.

  • création du login op_web au niveau du serveur

  • création d'un utilisateur au niveau de la base de données et attribution d'un login avec le même nom

  • j'ai attribué des rôles à l'utilisateur pour lui permettre de lire et d'écrire - je n'ai attribué aucun schéma et le schéma par défaut de l'utilisateur est dbo.

Si je me connecte (localement sur le serveur) en utilisant sqlserver management studio/sqlserver authentication et le login créé, je peux afficher et modifier les données de la table comme prévu.

L'accès à distance ne me donne pas le choix des bases de données.

Dans Visual Studio sur la machine cliente, j'obtiens le nom du serveur dans la liste déroulante avec le serveur sql découvert - et comme mentionné, je suis capable de me connecter en utilisant l'utilisateur Windows (compte adminstrateur). De plus, j'ai essayé depuis une autre machine physique avec les mêmes résultats négatifs. Cela ne ressemble pas à un problème de pare-feu, mais j'ai essayé de désactiver le pare-feu du serveur au cas où, mais cela n'a pas réglé le problème non plus. J'ai un autre serveur de base de données où tout fonctionne, et j'ai cloné chaque paramètre utilisateur à utilisateur (il semble donc que le problème soit lié à l'instance du serveur SQL plutôt qu'à l'utilisateur).

Des indications sur ce que j'ai pu manquer ?

(Cette question a été posée sur https://stackoverflow.com/questions/1386223/how-to-allow-access-for-a-sql-server-user )

2voto

Richard Points 5289

Les "utilisateurs" du serveur SQL ont deux parties.

  1. Le login du serveur. Défini au niveau du serveur, et peut-être associé à des rôles de serveur (par exemple, dbcreator : "Les membres du rôle serveur fixe dbcreator peuvent créer, modifier, supprimer et restaurer n'importe quelle base de données"). Mapper les utilisateurs Windows aux rôles de serveur (une partie de ceci est fait automatiquement, mais dépend de la version de SQL Server 1 )

  2. Utilisateurs de la base de données. Ils sont créés par la base de données, avec des rôles de base de données (par exemple "dbo" pour un contrôle total ("propriétaire de la base de données") ou "dbreader" pour pouvoir lire les données). Une fois créés, ils sont associés à un login serveur.

Vous pouvez définir des rôles de serveur et de base de données pour donner des autorisations spécifiques).

Voir SQL Server Books Online (ou sur MSDN) pour plus de détails.

Vous devez donc, à l'aide du compte administrateur, créer un login serveur pour votre compte utilisateur Windows, et lui donner accès aux bases de données avec lesquelles vous devez travailler. Si vous définissez des choses (tables, vues, procédures stockées, ...), vous avez vraiment besoin du rôle "dbo", ou d'un certain travail pour un contrôle plus fin.

N'oubliez pas de tester l'application avec uniquement l'accès dont elle a besoin (par exemple, il est rare qu'une application crée, déplace ou modifie des vues ou des tables).


1 Dans SQL Server 2005, le groupe d'administrateurs locaux de la machine hôte est mappé à un login avec le rôle de serveur "sysadmin", dans 2008 vous spécifiez quels comptes doivent être ainsi mappés dans la configuration).

1voto

K. Brian Kelley Points 8974

Pour pouvoir être vu sur le réseau (se connecter à distance), vous devez vérifier que l'instance de SQL Server dispose d'une bibliothèque réseau comme TCP/IP configurée pour elle. Vous pouvez configurer cela à l'aide de SQL Server Configuration Manager. Si vous avez dû effectuer une modification, elle ne prendra effet que lorsque vous redémarrerez SQL Server. Maintenant, s'il s'agit d'une instance nommée, vous devez également vous assurer que le service SQL Server Browser est en cours d'exécution. Cela fournit le port TCP à un client qui essaie de le trouver en ce qui concerne une instance nommée. Et vous devez vous assurer qu'il y a des exceptions sur votre pare-feu pour les deux services.

En ce qui concerne votre connexion au serveur SQL, si vous essayez de vous connecter à l'aide de SQL Server Management Studio, si vous obtenez une erreur indiquant qu'il ne s'agit pas d'une connexion/un compte de confiance, votre serveur SQL est configuré pour utiliser l'authentification Windows uniquement, ce qui signifie que vous ne pouvez pas vous connecter en utilisant une connexion basée sur le serveur SQL. Dans votre cas, vous avez indiqué que vous l'avez configuré en mode mixte, ce qui est ce que vous voulez. Si, toutefois, vous n'avez pas redémarré SQL Server après avoir effectué cette modification, cela pourrait être la cause du problème. Encore une fois, il s'agit d'un autre de ces paramètres qui ne s'exécutent qu'au démarrage.

L'erreur Kerberos que vous pouvez ignorer. C'est parce que seul un administrateur de domaine ou le compte de l'ordinateur lui-même (si vous êtes exécuté en tant que Nework Service sous Windows 2003) peut enregistrer un SPN. Donc, si vous utilisez autre chose, cette erreur s'affiche. Dans ce cas, il est préférable de créer le SPN manuellement, mais cela ne devrait pas entrer en ligne de compte ici, car cela n'apparaît que pour l'authentification Windows. Kerberos n'a aucun impact sur les connexions basées sur SQL Server.

Maintenant, en ce qui concerne l'utilisateur du serveur SQL, pouvez-vous vous connecter au serveur SQL avec lui localement en utilisant SQL Server Management Studio ?

0voto

Anders Juul Points 173

Les excuses sont de rigueur - le problème est maintenant résolu :

J'ai réinstallé l'ensemble du serveur et ajouté sql server en premier lieu - je soupçonnais que VisualSVN, fonctionnant via SSL, jouait avec une connexion sécurisée également nécessaire à la connexion sqlserver.

En fait, le problème était toujours là, mais en essayant à nouveau de désactiver le pare-feu, le problème immédiat a été résolu.

J'ai percé un trou dans le pare-feu pour le 1433/TCP et les choses sont là où je veux.

Merci pour votre temps, cependant...

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X