Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server > Administration
Administration Forum d'entraide sur l'administration du dataserver, via SSM ou ligne de commande, les tables système, ...
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/02/2011, 11h22   #1
Membre du Club
 
Inscription : juillet 2005
Messages : 178
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 178
Points : 54
Points : 54
Par défaut un problème de user orpheling

J’ai créer une base de donnée manuellement, mais lors de la création j’ai fait une erreur j’ai créer un user a la db sans le retaché dans dans le moteur.

Code :
	CREATE USER [WdsUSer] WITHOUT LOGIN WITH DEFAULT_SCHEMA=[WdsUSer]
Puis j’ai remarqué que j’avais oublié de le rajouté dans le moteur

Code :
CREATE LOGIN [WdsUser] WITH PASSWORD=N'XXXXXXX', DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
J’ai constater une erreur classique d’un user orphelin.

J’ai essayé d’appliqué

Code :
sp_change_users_login 'Auto_Fix',  ‘WdsUSer’
The number of orphaned users fixed by updating users was 0.
The number of orphaned users fixed by adding new logins and then updating users was 0.


Ca ne marche pas

Alors
Code :
sp_change_users_login  'Update_One', WdsUser, WdsUSer

Msg 15291, Level 16, State 1, Procedure sp_change_users_login, Line 114
Terminating this procedure. The User name 'WdsUser' is absent or invalid.

Alors je vais voir dans les DMV

Code :
1
2
3
4
5
SELECT u.name FROM master..syslogins l RIGHT JOIN 
    sysusers u ON l.sid = u.sid 
    WHERE l.sid IS NULL AND issqlrole <> 1 AND isapprole <> 1   
    AND (u.name <> 'INFORMATION_SCHEMA' AND u.name <> 'guest'  
    AND u.name <> 'system_function_schema')
Je trouve bien mon user

Et j’ai essayé d’exécuter les scripts

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
--Run this script under your Database context
--by using the following statements
USE	 cdbTopExEmea
Go   
--Variable to hold current UserName to process
DECLARE @UserName nvarchar(255)
--—Create Cursor for the orphan Users
DECLARE OrphanUser_Cursor cursor FOR
SELECT UserName = name
FROM sysusers
WHERE
(issqluser = 1)
AND (sid IS NOT NULL AND sid <> 0x0)
AND (suser_sname(sid) IS NULL)
ORDER BY name
OPEN OrphanUser_Cursor
FETCH NEXT FROM OrphanUser_Cursor INTO @UserName
WHILE (@@fetch_status = 0)
BEGIN
PRINT @UserName + ' user name being resynced'
--Re-sync the currently selected orphan user
EXEC sp_change_users_login 'Update_one', @UserName, @UserName
--Get Next Orphan User
FETCH NEXT FROM OrphanUser_Cursor INTO @UserName
END
--Clean up
CLOSE OrphanUser_Cursor
DEALLOCATE OrphanUser_Cursor


Toujours le même message .


Code :
1
2
Msg 15291, Level 16, State 1, Procedure sp_change_users_login, Line 114
Terminating this procedure. The User name 'WdsUser' IS absent OR invalid.
Merci de votre et de vos idées.
zoltix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 13h04   #2
Membre Expert
 
Homme Etienne ZINZINDOHOUE
Ingénieur développement
Inscription : mars 2010
Messages : 1 138
Détails du profil
Informations personnelles :
Nom : Homme Etienne ZINZINDOHOUE
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Ingénieur développement
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2010
Messages : 1 138
Points : 2 466
Points : 2 466
Envoyer un message via Yahoo à zinzineti
Citation:
Envoyé par zoltix Voir le message
J’ai créer une base de donnée manuellement, mais lors de la création j’ai fait une erreur j’ai créer un user a la db sans le retaché dans dans le moteur.

Code :
	CREATE USER [WdsUSer] WITHOUT LOGIN WITH DEFAULT_SCHEMA=[WdsUSer]
Là avec l'option WITHOUT , l'utilisateur [WdsUSer] n'est mappé sur aucun LOGIN !!!

DEFAULT_SCHEMA=[WdsUSer] veut dire que l'utilisateur [WdsUSer] est rattaché au schéma [WdsUSer] . Est ce que ce schéma existe ?

Si le schéma [WdsUSer] n'existe pas; tu peux le créer
à l'aide de

Code :
CREATE SCHEMA WdsUSer AUTHORIZATION WdsUSer ....
__________________
Etienne ZINZINDOHOUE
Billets-Articles
zinzineti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 15h50   #3
Membre du Club
 
Inscription : juillet 2005
Messages : 178
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 178
Points : 54
Points : 54
Code :
CREATE USER [WdsUSer] WITHOUT LOGIN WITH DEFAULT_SCHEMA=[WdsUSer]
Je sais que c'est ça l'erreur et de plus je pensais supprimer le user et le recréer mais c'est compliqué car je travaille avec SP et Trigger impersonnate. Et sql server impose d'enlever toutes les procédures d'impersonnate qui ont une relation avec un Object pour qu'on puisse enlever cet user.


Code :
1
2
3
4
ALTER  proc [cdbprod].[qt_Select_PrimaryKeys] @user varchar(200), 									@.......
WITH EXECUTE AS 'WdsUser
as 
.........

Mais c'est la question comment lier un user db et aux moteur si je l'ai crée avec un witout.....


J'arrive a provoquer l'erreur maintenant ......


Code :
1
2
3
4
5
6
7
8
9
 
CREATE USER TEST_USER WITHOUT LOGIN WITH DEFAULT_SCHEMA=TEST_USER
GO
 
CREATE LOGIN TEST_USER WITH PASSWORD=N'__qsdfqsdfqsdfqsdf_', DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english]
GO
EXEC sp_change_users_login 'Update_One', 'TEST_USER', 'TEST_USER';
 
Go




Code :
1
2
3
 
Msg 15291, Level 16, State 1, Procedure sp_change_users_login, Line 114
Terminating this procedure. The User name 'TEST_USER' IS absent OR invalid.
zoltix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 19h45   #4
Responsable SQL Server

 
Avatar de mikedavem
 
Homme David BARBARIN
Expert SQL Server
Inscription : août 2005
Messages : 3 723
Détails du profil
Informations personnelles :
Nom : Homme David BARBARIN
Localisation : France, Haute Savoie (Rhône Alpes)

Informations professionnelles :
Activité : Expert SQL Server
Secteur : Conseil

Informations forums :
Inscription : août 2005
Messages : 3 723
Points : 6 844
Points : 6 844
Bonsoir,

Vous ne pouvez pas lier un utilisateur créé avec la clause WITHOUT LOGIN à un compte de connexion SQL Server.

Cf BOL :

Citation:
sp_change_users_login cannot be used with a SQL Server login created from a Windows principal or with a user created by using CREATE USER WITHOUT LOGIN.

++
mikedavem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 20h03   #5
Membre du Club
 
Inscription : juillet 2005
Messages : 178
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 178
Points : 54
Points : 54
Zut ...... !!!!!!!!!!!! Grrrrrrrrr comme je travaille avec des imperonnate et que j'ai plus +- SP et qlq Trigger. Ca va me donner bcp de travail pour une stupide erreur.

Merci
zoltix est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h29.


 
 
 
 
Partenaires

Hébergement Web