2017-03-02 6 views
0

J'ai un ordinateur portable sur lequel SQL Server Express est déjà installé. Le nom du serveur est SRH \ SQLEXPRESS et la version est 10.0.2531.0. Le système d'exploitation est Windows 7.Pourquoi je ne peux pas changer un mot de passe en utilisant osql?

Je peux me connecter via l'authentification Windows. Mais je voudrais me connecter à sa. Puisque je ne connais pas le mot de passe de sa, je veux le réinitialiser. J'ai décidé de le changer en utilisant osql.

Ce sont les étapes de mon travail pour changer le mot de passe sa:

  1. I ouvert invite de commande (cmd) en mode Administrateur. J'ai tapé osql -S SRH\SQLEXPRESS -E et appuyez sur la touche Entrée. Puis je reçois l'invite 1>. J'ai ensuite tapé sp_password null, 'HseWork11', 'sa' et appuyez sur la touche Entrée. Puis je reçois l'invite 2>. Je puis tapé GO et appuyez sur Entrée clé, mais je reçois ce message d'erreur:

Msg 15151, niveau 16, état 1, serveur SRH \ SQLEXPRESS, ligne 1 Impossible modifier la connexion 'sa' , parce qu'il n'existe pas ou que vous n'avez pas la permission .

Bummer.

Pour confirmer que le login sa existe, je me connecte via l'authentification Windows et exécute cette instruction select * from sys.syslogins where name = 'sa'. J'ai récupéré 1 ligne donc le login sa existe.

Alors pourquoi je ne peux pas changer sa mot de passe en utilisant osql? Qu'est ce que je fais mal?

Répondre

1

Au lieu d'utiliser sp_password, avez-vous essayé d'utiliser ALTER LOGIN, peut-être avec l'option UNLOCK? J'utilise sqlcmd au lieu de osql - Je ne sais pas vraiment si cela fait une différence.

Dans l'invite de commande:

sqlcmd -S .\SQLEXPRESS 
>1 ALTER LOGIN sa WITH PASSWORD = ‘whateveryouwant’ UNLOCK 
>2 GO 
>3 exit 

Ce sont des commandes évidemment différentes, et je sais que, parfois, ALTER LOGIN a travaillé pour moi où sp_password n'a pas. Je ne crois pas que ce soit une panacée, mais ça vaut la peine d'y jeter un coup d'œil.

Side Note:

Si cela ne fonctionne pas, mais vous pouvez toujours vous connecter à SQL Server (vous avez dit que vous pouvez, mais pas comme SA), il pourrait être utile d'exécuter cette requête pour voir qui peut accéder à SQL Server en tant qu'administrateur. Peut-être que vous avez un compte intégré qui a reçu ce rôle ...

USE Master 
GO 

SELECT 
     P.Name 
    ,P.Type_desc 
    ,P.is_disabled 
FROM sys.server_principals P 
INNER JOIN sys.syslogins L 
    ON L.SID = P.SID 
WHERE P.Name NOT LIKE '#%' 
AND L.SysAdmin = 1 
; 

Cela vous donnera à la fois les utilisateurs SQL Server et Windows qui ont le rôle SysAdmin.

Première édition:

Vous avez dit que is_disabled est marqué comme 1 pour le compte SA après l'exécution de cette requête.

Retour à l'invite de commande et effectuez les opérations suivantes:

>1 ALTER LOGIN sa ENABLE 
>2 GO 
>3 exit 
+0

J'ai essayé 'ALTER LOGIN' en utilisant' sqlcmd' comme vous l'avez dit mais j'ai le même message d'erreur. Ensuite, j'ai couru votre requête et il a retourné 1 ligne: ** Nom ** est 'sa', ** Type_desc ** est' SQL_LOGIN' et ** is_disabled ** est '1'. Pourquoi ** is_disabled ** est '1' et pas' 0'? – srh

+0

Mis à jour ma réponse. S'il vous plaît essayez la solution que j'ai ajoutée et laissez-moi savoir si cela fonctionne pour vous. – 3BK

+0

Après avoir activé la connexion, vous devriez pouvoir réessayer en utilisant la commande précédente 'ALTER LOGIN' pour changer le mot de passe. – 3BK

1

Vous pourriez ne pas être administrateur système en instance de SQL Server avec votre connexion Windows. Si vous avez des permissions d'administrateur système, vous devriez pouvoir changer le mot de passe de sa connexion.

S'il vous plaît se référer Wikihow

Note: OSQL est une fonction de fin de série, s'il vous plaît utiliser SQLCMD.

+0

Comment vérifier si ma connexion Windows est un administrateur système dans SQL Server? – srh

+0

@srh Vous le savez déjà, car vous avez exécuté la requête que j'ai suggérée et votre compte Windows ne figurait pas parmi les administrateurs système. – 3BK

+0

@ 3BK oh je comprends; cette requête a ce filtre 'SysAdmin = 1' pour afficher uniquement les connexions administrateur système – srh