J'ai besoin de vérifier si une connexion spécifique existe déjà sur le serveur SQL, et si ce n'est pas le cas, je dois l'ajouter.
J'ai trouvé le code suivant pour ajouter réellement la connexion à la base de données, mais je veux l'envelopper dans une instruction IF (en quelque sorte) pour vérifier si la connexion existe en premier.
CREATE LOGIN [myUsername] WITH PASSWORD=N'myPassword',
DEFAULT_LANGUAGE=[us_english],
CHECK_EXPIRATION=OFF,
CHECK_POLICY=OFF
GO
Je comprends que j'ai besoin d'interroger une base de données système, mais je ne sais pas par où commencer!
sql-server
login
Brett Rigby
la source
la source
Réponses:
D' ici
la source
x] with password ''y'';\r\ndrop table foo;\r\n
CREATE LOGIN [@loginName] FROM ...
? Pardonnez mon ignorance, j'aimerais apprendre ...QUOTENAME()
tourne autour@loginName
, pas toute la déclaration, et alors vous pouvez vous débarrasser des délimiteurs manuels [et]@loginName
.Voici un moyen de le faire dans SQL Server 2005 et versions ultérieures sans utiliser la vue syslogins obsolète:
La vue server_principals est utilisée à la place de sql_logins car ce dernier ne répertorie pas les connexions Windows.
Si vous devez vérifier l'existence d'un utilisateur dans une base de données particulière avant de le créer, vous pouvez le faire:
la source
En tant qu'ajout mineur à ce fil, vous souhaitez généralement éviter d'utiliser les vues qui commencent par sys.sys * car Microsoft ne les inclut que pour la compatibilité descendante. Pour votre code, vous devriez probablement utiliser sys.server_principals. Cela suppose que vous utilisez SQL 2005 ou supérieur.
la source
Vous pouvez utiliser la fonction intégrée:
via
comme:
https://technet.microsoft.com/en-us/library/ms176042(v=sql.110).aspx
la source
Essayez ceci (remplacez «utilisateur» par le nom de connexion réel):
la source
Cela fonctionne sur SQL Server 2000.
sur SQL 2005, remplacez la deuxième ligne par
Je ne suis pas sûr de SQL 2008, mais je suppose que ce sera le même que SQL 2005 et sinon, cela devrait vous donner une idée de l'endroit où commencer à chercher.
la source
que voulez-vous exactement vérifier la connexion ou l'utilisateur? une connexion est créée au niveau du serveur et un utilisateur est créé au niveau de la base de données de sorte qu'une connexion est unique dans le serveur
également un utilisateur est créé contre une connexion, un utilisateur sans connexion est un utilisateur orphelin et n'est pas utile car vous ne pouvez pas effectuer de connexion au serveur SQL sans connexion
peut-être que tu en as besoin
vérifier la connexion
la requête ci-dessus renvoie 'X' si la connexion existe sinon retourne null
puis créez un login
cela crée une connexion au serveur sql. mais il n'accepte que les mots de passe forts
créer un utilisateur dans chaque base de données que vous souhaitez pour vous connecter en tant que
attribuer des droits d'exécution à l'utilisateur
VOUS DEVEZ AVOIR les autorisations SYSADMIN ou dire «sa» pour faire court
vous pouvez écrire une procédure SQL pour cela sur une base de données
la source
Afin de résoudre les conflits de noms entre les connexions, les rôles, les utilisateurs, etc., vous devez vérifier la
type
colonne conformément à la documentation Microsoft sys.database_principalsAfin de gérer les chapitres spéciaux dans les noms d'utilisateur, etc., utilisez
N'<name>'
et en[<name>]
conséquence.Créer une connexion
Créer un utilisateur de base de données
Créer un rôle de base de données
Ajouter un utilisateur au rôle
Accorder des droits au rôle
la source
C'est pour Azure SQL:
Source: Comment vérifier si l'utilisateur de la base de données existe déjà dans Azure SQL Database
la source
Vous devez d'abord vérifier l'existence de la connexion à l'aide de la vue syslogins:
Ensuite, vous devez vérifier l'existence de votre base de données:
la source