J'ai une instance de SQL Server 2008 en cours d'exécution. Malheureusement, lors des tests, j'ai désélectionné les droits sysadmin pour ma connexion et je ne peux plus le lire (car je n'ai pas de droits sysadmin).
Il n'y a aucun autre compte administrateur système pour l'instance à l'exception de SA.
J'ai été configuré uniquement pour l'authentification Windows, j'ai donc piraté le LoginMode dans le registre à 2 pour pouvoir me connecter en tant que SA en utilisant l'authentification SQL. Cela définit en effet le mode de connexion sur Mixte, cependant le = SA l'utilisateur est désactivé par défaut et je ne peux pas le réactiver car je n'ai pas de droits d'administrateur système.
Comment puis-je activer la connexion SA pour pouvoir entrer et réaffecter le sysadmin à mon compte normal? Y a-t-il un paramètre de registre pour cela aussi ou est-il stocké dans la base de données master?
Même l'option de connexion la plus uber-admin Connexion administrateur dédié ( DAC ), qui ne peut être utilisée que comme connexion locale et vous permet d'annuler toutes sortes du mal, nécessite toujours des informations d'identification. Je ne pense donc pas qu'il existe une manière officielle de procéder.
Le moyen le plus rapide de ressusciter ce système peut être d'arrêter SQL Server, de copier les fichiers de la base de données des utilisateurs dans un endroit sûr, de les désinstaller, de les réinstaller (en veillant à ce que le service pack atteigne au moins le niveau auquel vous étiez auparavant), de recopier les fichiers et de les joindre les bases de données. (Pas sûr que la copie vers l'extérieur/vers l'arrière soit nécessaire, mais juste pour être sûr ...).
Vous devrez toujours récupérer manuellement les objets de niveau serveur (par exemple, les connexions)
Il existe une véritable porte dérobée dans SQL Server qui ne nécessite aucun redémarrage et/ou redémarrage de quoi que ce soit en mode mono-utilisateur. J'ai fait cela sur des systèmes auxquels je n'avais pas accès mais dont j'avais besoin de vérifier des trucs.
Téléchargez les outils PSexec depuis ici . Placez-le sur le serveur, puis dans une invite de commande, exécutez cette commande: psexec -i -s SSMS.exe
ou sqlwb.exe
Cela ouvrira SSMS en tant que compte système disposant d'un accès sysadmin à l'instance de SQL Server. Cela se fait lors de l'installation de SQL Server, mais j'ai entendu dire que ce ne sera pas le cas avec SQL 2012.
SQL Server 2008 est différent de SQL Server 2005, en ce sens que les administrateurs locaux n'héritent plus du rôle de serveur fixe sysadmin.
Lorsque SQL Server 2008 est installé, il vous invite à désigner un compte à ajouter au rôle sysadmin. Cependant, si vous recevez la boîte après l'installation du logiciel, cela ne vous aide pas beaucoup.
Heureusement, Microsoft a conservé la fonctionnalité 2005 lorsque SQL Server s'exécute en mode mono-utilisateur. Voici ce que vous faites:
C'est une excellente question et quelqu'un sera dans cette situation et a besoin d'être secouru.
Si vous êtes un administrateur Windows sur le serveur , vous pouvez utiliser un script PowerShell v2 pour obtenir un accès sans interruption et sans risque connu. Il le fait en dupliquant le jeton de connexion du service SQL Server même s'il s'exécute sous un compte de service AD, un compte virtuel ou protégé avec un SID par service
Le script ci-dessous itérera les services SQL Server et vous ajoutera au rôle sysadmin partout où vous manquerez:
#GITHUB Link : https://github.com/codykonior/HackSql
$userName = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name
$services = Get-Service | Where { ($_.Name -eq 'MSSQLSERVER' -or $_.Name -like 'MSSQL$*') -and $_.Status -eq "Running" }
foreach ($service in $services) {
if ($service.Name -eq "MSSQLSERVER") {
$sqlName = ".\"
} else {
$sqlName = ".\$($service.Name.Substring(6))"
}
Write-Host "Attempting $sqlName"
$serviceProcess = Get-WmiObject -Class Win32_Service -Filter "Name = '$($service.Name)'"
Invoke-TokenManipulation -ProcessId $serviceProcess.ProcessID -ImpersonateUser | Out-Null
$impersonatedUser = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name
Write-Host "Service $($service.Name) on PID $($serviceProcess.ProcessID) will connect to $sqlName as $impersonatedUser"
$sqlConnection = New-Object System.Data.SqlClient.SqlConnection("Data Source=$sqlName;Trusted_Connection=True")
$sqlConnection.Open()
$sqlCommand = New-Object System.Data.SqlClient.SqlCommand("If Not Exists (Select Top 1 0 From sys.server_principals Where name = '$userName')
Begin
Create Login [$userName] From Windows
End
If Not Exists (Select Top 1 0 From master.sys.server_principals sp Join master.sys.server_role_members srp On sp.principal_id = srp.member_principal_id Join master.sys.server_principals spr On srp.role_principal_id = spr.principal_id Where sp.name = '$userName' And spr.name = 'sysadmin')
Begin
Exec sp_addsrvrolemember '$userName', 'sysadmin'
End", $sqlConnection)
$sqlCommand.ExecuteNonQuery() | Out-Null
$sqlConnection.Close()
Invoke-TokenManipulation -RevToSelf | Out-Null
}
Vous pouvez toujours créer une connexion avec un accès 'sysadmin'. Merci à Principal Data Engineer chez Microsoft (Saleem Hakani) avait écrit les conseils et astuces SQL Server ci-dessous.
J'ai trouvé cela alors que j'étais coincé dans un état similaire lorsque j'ai oublié le mot de passe sa pour ma machine de test.
Voici les étapes que vous devrez effectuer:
À partir de l'invite de commandes, tapez: SQLServr.Exe –m (ou SQLServr.exe –f)
Remarque: Si le dossier Binn ne se trouve pas dans votre chemin d'accès à l'environnement, vous devrez accéder au dossier Binn.
(Habituellement, le dossier Binn se trouve dans: C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Binn)
SQLCMD –S
Vous serez maintenant connecté à SQL Server en tant qu'administrateur.
Pour créer une nouvelle connexion et ajouter cette connexion au rôle serveur SYSADMIN:
1> CRÉER UNE CONNEXION ‘’ avec MOT DE PASSE = ’’
2> allez
1> SP_ADDSRVROLEMEMBER ‘’, ’SYSADMIN’
2> allez
Pour ajouter une connexion existante au rôle serveur SYSADMIN, exécutez ce qui suit:
1> SP_ADDSRVROLEMEMBER ‘’, ’SYSADMIN’
L'opération ci-dessus se chargera d'accorder les privilèges SYSADMIN à une connexion existante ou à une nouvelle connexion.
Vous pouvez faire la suivante:
1) Créez un compte d'utilisateur Windows avec des privilèges administratifs
2) Connectez-vous dans Windows avec le nouveau compte administratif
3) Ouvrez Sql Server Mangement Studio à l'aide de l'authentification Windows
4) Vous êtes maintenant connecté à SQL Server en tant que sysadmin, vous pouvez donc créer de nouveaux comptes ou mettre à jour l'utilisateur sa