Je suis en cours d'exécution SQL qui identifie les enregistrements qui doivent être marqués pour la suppression et pour insérer une valeur dans ces enregistrements. Cette valeur doit être modifiée pour rendre l'enregistrement inutile et chaque enregistrement doit être modifié en une valeur unique en raison d'une contrainte de base de données.TSQL pour insérer une valeur croissante
UPDATE Users
SET Username = 'Deleted' + (ISNULL(
Cast(SELECT RIGHT(MAX(Username),1)
FROM Users WHERE Username LIKE 'Deleted%') AS INT)
,0) + 1
FROM Users a LEFT OUTER JOIN #ADUSERS b ON
a.Username = 'AVSOMPOL\' + b.sAMAccountName
WHERE (b.sAMAccountName is NULL
AND a.Username LIKE 'AVSOMPOL%') OR b.userAccountControl = 514
Ceci est le bit important:
SET Username = 'Deleted' + (ISNULL(
Cast(SELECT RIGHT(MAX(Username),1)
FROM Users WHERE Username LIKE 'Deleted%') AS INT)
,0) + 1
Ce que j'ai essayé de faire est d'avoir supprimé les enregistrements ont leur champ Nom d'utilisateur défini sur « Deletedxxx ». Le ISNULL est nécessaire car il peut y avoir aucun enregistrement correspondant à l'instruction SELECT RIGHT(MAX(Username),1) FROM Users WHERE Username LIKE 'Deleted%'
et cela retournera NULL
.
-je obtenir une erreur de syntaxe lorsque vous essayez d'analyser ce (Msg 156, Level 15, State 1, Line 2 Incorrect syntax near the keyword 'SELECT'. Msg 102, Level 15, State 1, Line 2 Incorrect syntax near ')'.
Je suis sûr qu'il doit y avoir une meilleure façon d'aller à ce sujet, des idées?
Pouvez-vous ajouter un champ de bits à cette table (par exemple IsDeleted) et l'utiliser pour le marquer à la place? Va faire pour des requêtes plus rapides pour obtenir tous les utilisateurs non supprimés. – Paddy
Non - Je ne peux pas modifier le comportement de l'application, cela ne servira donc pas à désactiver un utilisateur. Le champ de nom d'utilisateur contient en réalité l'identifiant de connexion réseau de l'utilisateur et l'application l'utilise pour connecter les utilisateurs avec les informations d'identification Windows, ce qui est la seule façon de désactiver un compte. –