AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 11299
Accepted
Mark D Jackson
Mark D Jackson
Asked: 2011-05-08 06:32:12 +0800 CST2011-05-08 06:32:12 +0800 CST 2011-05-08 06:32:12 +0800 CST

Como adicionar uma nova conta sysadmin quando não existem contas sysadmin

  • 772

Durante o teste, desmarquei os direitos de administrador de sistema para o meu login e agora não posso adicioná-lo novamente (porque não tenho direitos de administrador de sistema).

Não há outras contas sysadmin para a instância, exceto a [sa]conta.

Eu estava configurado apenas para autenticação do Windows, então invadi LoginModeo registro para 2poder fazer login sausando a autenticação SQL. Isso realmente define o modo de login como Mixed, no entanto, o sausuário está desabilitado por padrão e não posso reativá-lo porque não tenho direitos de administrador do sistema.

Como habilito o salogin para que eu possa entrar e reatribuir o administrador do sistema à minha conta normal? Existe uma configuração de registro para isso também ou ela está armazenada no banco de dados mestre?

sql-server
  • 6 6 respostas
  • 105462 Views

6 respostas

  • Voted
  1. user507
    2012-01-28T08:05:00+08:002012-01-28T08:05:00+08:00

    Existe um backdoor real no SQL Server que não requer reinicialização e/ou reinicialização de nada no modo de usuário único. Eu fiz isso em sistemas onde eu não tinha acesso, mas precisava verificar as coisas.

    Baixe as ferramentas PSexec aqui . Coloque isso no servidor e, em um prompt de comando, execute este comando: psexec -i -s SSMS.exe, ou sqlwb.exe

    Isso abrirá o SSMS como a conta do sistema que tem acesso sysadmin à instância do SQL Server. Isso é feito durante a instalação do SQL Server, porém ouvi dizer que não será assim com o SQL 2012.

    • 28
  2. Brian Sullivan
    2011-07-22T11:47:41+08:002011-07-22T11:47:41+08:00

    O SQL Server 2008 e mais recente não adicionam automaticamente o Grupo do Windows de administradores locais à função de servidor fixa sysadmin.

    Quando o SQL Server 2008 é instalado, ele solicita que você designe uma conta a ser adicionada à função sysadmin. No entanto, se você receber a caixa após a instalação do software, isso não ajudará muito.

    Felizmente, a Microsoft preservou a funcionalidade de 2005 quando o SQL Server está sendo executado no modo de usuário único. Aqui está o que você faz:

    • entre no servidor como administrador local do windows
    • parar o servidor sql
    • no prompt de comando, no diretório em que sqlservr.exe reside, digite sqlservr.exe -m e pressione enter - isso iniciará o SQL Server no modo de usuário único
    • abra o SQL Server Enterprise Manager e adicione sua conta à função de servidor fixo sysadmin
    • pare o sql server, reinicie (na linha de comando ou no SQL Server Enterprise Manager)
    • 14
  3. Best Answer
    Damien_The_Unbeliever
    2011-05-08T07:12:54+08:002011-05-08T07:12:54+08:00

    Os detalhes apresentados nesta resposta estão corretos - no entanto, outras respostas fornecem soluções alternativas que existem para permitir que o SQL Server seja iniciado em um modo especial que permite que o administrador do servidor acesse o SQL Server como membro da função sysadmin.


    Mesmo o tipo mais uber-admin de opção de conexão Dedicated Administrator Connection ( DAC ), que só pode ser usado como uma conexão local, e permite desfazer todo tipo de mal, ainda requer credenciais de login. Então eu não acho que há uma maneira oficial de fazer isso.

    A maneira mais rápida de ressuscitar este sistema pode ser desligar o SQL Server, copiar os arquivos do banco de dados do usuário em algum lugar seguro, desinstalar, reinstalar (certificando-se de que o service pack esteja pelo menos no nível em que você estava anteriormente), copiar os arquivos de volta e anexar os bancos de dados. (Não tenho certeza se a cópia de saída/volta é necessária, mas apenas por segurança...).

    Você ainda precisará recuperar manualmente os objetos no nível do servidor (por exemplo, logins)

    • 10
  4. Kin Shah
    2016-01-08T14:35:28+08:002016-01-08T14:35:28+08:00

    Esta é uma ótima pergunta e alguém estará nessa situação e precisa de um resgate dela.

    Todo o crédito vai para codykonior

    Se você for um administrador do Windows no servidor , poderá usar um script do PowerShell v2 para obter acesso sem interrupção e sem risco conhecido. Ele faz isso duplicando o token de logon do serviço SQL Server, mesmo se estiver sendo executado em uma conta de serviço AD, conta virtual ou protegido com um SID por serviço

    O script abaixo irá iterar os serviços do SQL Server e adicionará você à função sysadmin onde quer que esteja faltando:

    #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
    }
    
    • 6
  5. Ramakant Dadhichi
    2017-07-09T02:14:01+08:002017-07-09T02:14:01+08:00

    Você ainda pode criar um login com acesso 'sysadmin'. Graças ao Engenheiro de Dados Principal da Microsoft (Saleem Hakani) foi o autor das dicas e truques do SQL Server abaixo.

    Encontrei isso enquanto estava preso em um estado semelhante quando esqueci a senha sa para minha máquina de teste.

    Link: https://blogs.technet.microsoft.com/sqlman/2011/06/14/tips-tricks-you-have-lost-access-to-sql-server-now-what/

    Aqui estão as etapas que você precisará executar:

    1. Inicie a instância do SQL Server usando o modo de usuário único (ou configuração mínima que também colocará o SQL Server no modo de usuário único)

    No prompt de comando, digite: SQLServr.Exe –m (ou SQLServr.exe –f)

    Observação: se a pasta Binn não estiver no caminho do ambiente, você precisará navegar até a pasta Binn.

    (Geralmente a pasta Binn está localizada em: C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Binn)

    1. Depois que o serviço do SQL Server for iniciado no modo de usuário único ou com configuração mínima, agora você poderá usar o comando SQLCMD no prompt de comando para se conectar ao SQL Server e realizar as seguintes operações para se adicionar novamente como administrador na instância do SQL Server.

    SQLCMD-S

    Agora você estará conectado ao SQL Server como administrador.

    1. Depois de fazer logon no SQL Server usando SQLCMD, emita os comandos a seguir para criar uma nova conta ou adicionar um logon existente à função de servidor SYSADMIN.

    Para criar um novo logon e adicionar esse logon à função de servidor SYSADMIN:

    1> CRIAR LOGIN '' com SENHA=''

    2> vá

    1> SP_ADDSRVROLEMEMBER '','SYSADMIN'

    2>vai

    Para adicionar um logon existente à função de servidor SYSADMIN, execute o seguinte:

    1> SP_ADDSRVROLEMEMBER '','SYSADMIN'

    A operação acima cuidará de conceder privilégios SYSADMIN a um login existente ou a um novo login.

    1. Depois que as etapas acima forem executadas com êxito, a próxima etapa é interromper e iniciar os serviços do SQL Server usando as opções de inicialização normais. (Desta vez você não precisará de –f ou –m)
    • 3
  6. Juan Carlos Velez
    2011-05-12T13:40:24+08:002011-05-12T13:40:24+08:00

    Você pode fazer o seguinte:
    1) Crie uma conta de usuário do Windows com privilégios administrativos
    2) Faça login no Windows com a nova conta administrativa
    3) Abra o Sql Server Mangement Studio usando a Autenticação do Windows
    4) Agora você está logado no SQL Server como sysadmin, então você pode criar novas contas ou atualizar o usuário sa

    • 0

relate perguntas

  • SQL Server - Como as páginas de dados são armazenadas ao usar um índice clusterizado

  • Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?

  • Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?

  • Quais são as principais causas de deadlocks e podem ser evitadas?

  • Como determinar se um Índice é necessário ou necessário

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Como você mostra o SQL em execução em um banco de dados Oracle?

    • 2 respostas
  • Marko Smith

    Como selecionar a primeira linha de cada grupo?

    • 6 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Posso ver Consultas Históricas executadas em um banco de dados SQL Server?

    • 6 respostas
  • Marko Smith

    Como uso currval() no PostgreSQL para obter o último id inserido?

    • 10 respostas
  • Marko Smith

    Como executar o psql no Mac OS X?

    • 11 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Marko Smith

    Passando parâmetros de array para um procedimento armazenado

    • 12 respostas
  • Martin Hope
    Manuel Leduc Restrição exclusiva de várias colunas do PostgreSQL e valores NULL 2011-12-28 01:10:21 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Stuart Blackler Quando uma chave primária deve ser declarada sem cluster? 2011-11-11 13:31:59 +0800 CST
  • Martin Hope
    pedrosanta Listar os privilégios do banco de dados usando o psql 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST
  • Martin Hope
    BrunoLM Guid vs INT - Qual é melhor como chave primária? 2011-01-05 23:46:34 +0800 CST
  • Martin Hope
    bernd_k Quando devo usar uma restrição exclusiva em vez de um índice exclusivo? 2011-01-05 02:32:27 +0800 CST
  • Martin Hope
    Patrick Como posso otimizar um mysqldump de um banco de dados grande? 2011-01-04 13:13:48 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve