Como é que eu me dou acesso administrativo a uma instância de servidor SQL local?
instalei o servidor SQL 2008 R2 na minha máquina local. Mas, eu não posso criar um novo banco de dados por causa de direitos (ou falta de).
"CRIAR A PERMISSÃO DA BASE DE DADOS NEGADA"
então, tentei atribuir os privilégios de administrador ao meu login actual
" O Utilizador não tem permissão para executar esta acção."
eu também tentei criar um novo login que teria privilégios de administrador, mas sem sorte. Como é que me concedo administrador direitos para que eu possa criar uma base de dados?Posso re-instalar, mas prefiro não o fazer.
6 answers
Sim - parece que se esqueceu de se adicionar ao papel do sysadmin ao instalar o servidor SQL. Se você é um Administrador local na sua máquina, este post pode ajudá-lo a usar o SQLCMD para colocar a sua conta no grupo sysadmin do servidor SQL sem ter de reinstalar. É um buraco de segurança no servidor SQL, se queres saber, mas vai ajudar-te neste caso.
Abra uma janela da linha de comandos. Se tiver uma instância predefinida do servidor de SQL já em execução, execute o seguinte comando na linha de comandos para parar o serviço de servidor de SQL:
net stop mssqlserver
Agora vá para a pasta onde o servidor SQL está instalado. O diretório pode, por exemplo, ser um desses:
C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Binn
C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Binn
Descubra o seu directório MSSQL e CD
nele como tal:
CD C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Binn
Execute agora o seguinte comando para iniciar o servidor de SQL no modo de utilizador único. Como
{[7] } está a ser indicado, só pode ser feita uma ligação SQLCMD
(a partir de outra janela de prompt de comandos).
sqlservr -m"SQLCMD"
Agora, abra outra janela de prompt de comandos como o mesmo Utilizador que iniciou o servidor de SQL no modo de utilizador único acima, e nela, execute:
sqlcmd
E pressione enter. Agora poderá executar as declarações de SQL com a instância do servidor de SQL em execução no modo de utilizador único:
create login [<<DOMAIN\USERNAME>>] from windows;
-- For older versions of SQL Server:
EXEC sys.sp_addsrvrolemember @loginame = N'<<DOMAIN\USERNAME>>', @rolename = N'sysadmin';
-- For newer versions of SQL Server:
ALTER SERVER ROLE [sysadmin] ADD MEMBER [<<DOMAIN\USERNAME>>];
GO
actualizado
Não se esqueça de um ponto e vírgula após ALTER SERVER ROLE [sysadmin] ADD MEMBER [<<DOMAIN\USERNAME>>];
e não adicionar um ponto-e-vírgula extra após GO
ou o comando nunca executar.
Obter direitos de administração para o seu servidor de SQL local expresso com este programa simples
Transferir a ligação para o programa
Descrição
Este programa de comandos permite-lhe adicionar-se facilmente ao sysadmin papel de uma instância de servidor SQL local. Você deve ser um membro do Windows local Administrators group, ou ter acesso às credenciais de um utilizador que é. O script suporta SQL Server 2005 e mais tarde.
O programa é mais útil se for um programador a tentar usar o SQL Server 2008 Express que foi instalado por outra pessoa. Neste situação você normalmente não terá direitos de administração para o servidor SQL 2008 Exemplo Expresso, uma vez que por omissão apenas a pessoa que instala o SQL Ao servidor 2008 são concedidos privilégios administrativos.
O utilizador que instalou o SQL Server 2008 Express pode usar o SQL Server Estudo de gestão para conceder o privilégios necessários para ti. Mas o quê? se o SQL Server Management Studio não foi instalado? Ou pior se o a instalação do utilizador já não está disponível?
Este script corrige o problema em apenas alguns cliques!
Nota: terá de fornecer ao ficheiro BAT um ' nome de instância '(provavelmente será 'MSSQLSERVER' - mas poderá não ser): poderá obter o valor se executar primeiro o seguinte no "Microsoft SQL Server Management Console":
SELECT @@servicename
Então copie o resultado a usar quando o ficheiro BAT pedir o 'nome da instância SQL'.
@echo off
rem
rem ****************************************************************************
rem
rem Copyright (c) Microsoft Corporation. All rights reserved.
rem This code is licensed under the Microsoft Public License.
rem THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF
rem ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY
rem IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR
rem PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT.
rem
rem ****************************************************************************
rem
rem CMD script to add a user to the SQL Server sysadmin role
rem
rem Input: %1 specifies the instance name to be modified. Defaults to SQLEXPRESS.
rem %2 specifies the principal identity to be added (in the form "<domain>\<user>").
rem If omitted, the script will request elevation and add the current user (pre-elevation) to the sysadmin role.
rem If provided explicitly, the script is assumed to be running elevated already.
rem
rem Method: 1) restart the SQL service with the '-m' option, which allows a single connection from a box admin
rem (the box admin is temporarily added to the sysadmin role with this start option)
rem 2) connect to the SQL instance and add the user to the sysadmin role
rem 3) restart the SQL service for normal connections
rem
rem Output: Messages indicating success/failure.
rem Note that if elevation is done by this script, a new command process window is created: the output of this
rem window is not directly accessible to the caller.
rem
rem
setlocal
set sqlresult=N/A
if .%1 == . (set /P sqlinstance=Enter SQL instance name, or default to SQLEXPRESS: ) else (set sqlinstance=%1)
if .%sqlinstance% == . (set sqlinstance=SQLEXPRESS)
if /I %sqlinstance% == MSSQLSERVER (set sqlservice=MSSQLSERVER) else (set sqlservice=MSSQL$%sqlinstance%)
if .%2 == . (set sqllogin="%USERDOMAIN%\%USERNAME%") else (set sqllogin=%2)
rem remove enclosing quotes
for %%i in (%sqllogin%) do set sqllogin=%%~i
@echo Adding '%sqllogin%' to the 'sysadmin' role on SQL Server instance '%sqlinstance%'.
@echo Verify the '%sqlservice%' service exists ...
set srvstate=0
for /F "usebackq tokens=1,3" %%i in (`sc query %sqlservice%`) do if .%%i == .STATE set srvstate=%%j
if .%srvstate% == .0 goto existerror
rem
rem elevate if <domain/user> was defaulted
rem
if NOT .%2 == . goto continue
echo new ActiveXObject("Shell.Application").ShellExecute("cmd.exe", "/D /Q /C pushd \""+WScript.Arguments(0)+"\" & \""+WScript.Arguments(1)+"\" %sqlinstance% \""+WScript.Arguments(2)+"\"", "", "runas"); >"%TEMP%\addsysadmin{7FC2CAE2-2E9E-47a0-ADE5-C43582022EA8}.js"
call "%TEMP%\addsysadmin{7FC2CAE2-2E9E-47a0-ADE5-C43582022EA8}.js" "%cd%" %0 "%sqllogin%"
del "%TEMP%\addsysadmin{7FC2CAE2-2E9E-47a0-ADE5-C43582022EA8}.js"
goto :EOF
:continue
rem
rem determine if the SQL service is running
rem
set srvstarted=0
set srvstate=0
for /F "usebackq tokens=1,3" %%i in (`sc query %sqlservice%`) do if .%%i == .STATE set srvstate=%%j
if .%srvstate% == .0 goto queryerror
rem
rem if required, stop the SQL service
rem
if .%srvstate% == .1 goto startm
set srvstarted=1
@echo Stop the '%sqlservice%' service ...
net stop %sqlservice%
if errorlevel 1 goto stoperror
:startm
rem
rem start the SQL service with the '-m' option (single admin connection) and wait until its STATE is '4' (STARTED)
rem also use trace flags as follows:
rem 3659 - log all errors to errorlog
rem 4010 - enable shared memory only (lpc:)
rem 4022 - do not start autoprocs
rem
@echo Start the '%sqlservice%' service in maintenance mode ...
sc start %sqlservice% -m -T3659 -T4010 -T4022 >nul
if errorlevel 1 goto startmerror
:checkstate1
set srvstate=0
for /F "usebackq tokens=1,3" %%i in (`sc query %sqlservice%`) do if .%%i == .STATE set srvstate=%%j
if .%srvstate% == .0 goto queryerror
if .%srvstate% == .1 goto startmerror
if NOT .%srvstate% == .4 goto checkstate1
rem
rem add the specified user to the sysadmin role
rem access tempdb to avoid a misleading shutdown error
rem
@echo Add '%sqllogin%' to the 'sysadmin' role ...
for /F "usebackq tokens=1,3" %%i in (`sqlcmd -S np:\\.\pipe\SQLLocal\%sqlinstance% -E -Q "create table #foo (bar int); declare @rc int; execute @rc = sp_addsrvrolemember '$(sqllogin)', 'sysadmin'; print 'RETURN_CODE : '+CAST(@rc as char)"`) do if .%%i == .RETURN_CODE set sqlresult=%%j
rem
rem stop the SQL service
rem
@echo Stop the '%sqlservice%' service ...
net stop %sqlservice%
if errorlevel 1 goto stoperror
if .%srvstarted% == .0 goto exit
rem
rem start the SQL service for normal connections
rem
net start %sqlservice%
if errorlevel 1 goto starterror
goto exit
rem
rem handle unexpected errors
rem
:existerror
sc query %sqlservice%
@echo '%sqlservice%' service is invalid
goto exit
:queryerror
@echo 'sc query %sqlservice%' failed
goto exit
:stoperror
@echo 'net stop %sqlservice%' failed
goto exit
:startmerror
@echo 'sc start %sqlservice% -m' failed
goto exit
:starterror
@echo 'net start %sqlservice%' failed
goto exit
:exit
if .%sqlresult% == .0 (@echo '%sqllogin%' was successfully added to the 'sysadmin' role.) else (@echo '%sqllogin%' was NOT added to the 'sysadmin' role: SQL return code is %sqlresult%.)
endlocal
pause
A Microsoft tem um artigo sobre esta questão. Passa por tudo passo a passo.
Em resumo, envolve iniciar a instância de sqlserver com {[[3]} como todas as outras respostas sugerem. No entanto, a Microsoft fornece instruções ligeiramente mais detalhadas.A partir da página inicial, iniciar a gestão do servidor SQL Estudio. No menu Ver, seleccione os servidores registados. (Se o seu servidor ainda não estiver grupos de Servidores Locais registados, com o clique direito, apontam para tarefas, e depois clique em Registar os servidores locais.)
Na área dos servidores registados, carregue com o botão direito no seu servidor, e depois carregue no Gestor de configuração do servidor SQL. Isto deve pedir permissão. para correr como administrador e, em seguida, abrir o Gestor de configuração programa.
Estúdio De Gestão Fechado.No servidor SQL Gestor de configuração, na área esquerda, seleccione SQL servidor. Na área da direita, encontre a sua instância do servidor SQL. (A instância por omissão do servidor SQL inclui (MSSQLSERVER) após o nome. Instâncias nomeadas aparecem em maiúsculas com o mesmo nome que têm em servidores registados.) Clique com o botão direito na instância de SQL Servidor, e depois clique em Propriedades.
Na página Parâmetros de arranque, no campo indicar um parâmetro de arranque, escreva-m e depois carregue em Adicionar. (Isso é um traço, em seguida, letra minúscula m.)
Nota
Para algumas versões anteriores do servidor SQL não existem parâmetros de arranque guia. Nesse caso, na página avançada, duplo-click Startup Parametro. Os parâmetros abrem-se numa janela muito pequena. Tem cuidado. não alterar nenhum dos parâmetros existentes. No final, adicione um novo parâmetro; - m e, em seguida, clique em OK. (Isso é um ponto-vírgula, Em seguida, um traço em seguida, letra maiúscula inferior m.)
Clique em OK, e depois do mensagem para reiniciar, carregue com o botão direito no seu servidor nome e, em seguida, clique em Reiniciar.
Depois de o servidor SQL ter reiniciado, o seu servidor ficará num único utilizador modo. Certifique-se de que o agente do servidor SQL não está em execução. Se iniciado, vai levar a tua única ligação.
No ecrã inicial do Windows 8, carregue com o botão direito no ícone para a gestão Estudio. Na parte inferior da tela, selecione Executar como administrador. (Isto vai passar as suas credenciais de administrador para o SSMS.)
Nota
Para as versões anteriores do Windows, a opção Executar como administrador aparece como um sub-menu.
Em algumas configurações, o SSMS tentará fazer várias ligações. Várias ligações irão falhar porque o servidor SQL está num único utilizador modo. Você pode selecionar uma das seguintes ações a realizar. Faz um. do seguinte.
A) Conecte - se com o Explorador de objectos usando a autenticação do Windows (que inclui suas credenciais de administrador). Expandir Segurança, expandir Logins, e faça duplo-click no seu próprio login. Na página de papéis do servidor, seleccione o sysadmin e depois carregue em OK.
B) em vez de se conectar com o Object Explorer, conecte-se com uma consulta Janela que utiliza a autenticação do Windows (que inclui o seu administrador credencial). (Você só pode se conectar desta forma se você não se conectar com o Explorador de objectos.) Executar um código como o seguinte para adicionar um novo Autenticação do Windows que é um membro do 'sysadmin' fixo servidor. O seguinte exemplo adiciona um usuário de domínio chamado CONTOSO\PatK.
CREATE LOGIN [CONTOSO\PatK] FROM WINDOWS; ALTER SERVER ROLE sysadmin ADD MEMBER [CONTOSO\PatK];
C) Se o seu servidor SQL estiver a correr em modo de autenticação misto, ligar-se a uma janela de pesquisa com o Windows Autenticação (que inclui as suas credenciais de administrador). Executar um código como o seguinte para criar um novo servidor SQL Autenticação que é um membro do servidor fixo do sysadmin funcao.
CREATE LOGIN TempLogin WITH PASSWORD = '************'; ALTER SERVER ROLE sysadmin ADD MEMBER TempLogin;
Aviso:
Substituir ************ com um forte senha.
D) Se o seu servidor de SQL estiver a correr no modo de autenticação mista e você deseja repor a senha da conta sa, ligar-se a uma consulta Janela que utiliza a autenticação do Windows (que inclui o seu administrador credencial). Alterar a senha da conta sa com o seguinte sintaxe.
ALTER LOGIN sa WITH PASSWORD = '************'; Warning
Substituir ************ com uma senha forte.
Os seguintes passos mudam agora o servidor SQL para o modo multi-utilizador. Fechar SSMS.
No Gestor de configuração do servidor SQL, na área esquerda, seleccione SQL servidor. Na área direita, clique com o botão direito na instância de SQL Servidor, e depois clique em Propriedades.
Na página de Parâmetros de arranque, no campo de parâmetros existentes, seleccione - m e depois clique em Remover.
Nota
Para algumas versões anteriores do servidor SQL não existem parâmetros de arranque guia. Nesse caso, na página avançada, duplo-click Startup Parametro. Os parâmetros abrem numa janela muito pequena. Remover o ;- m que você adicionou mais cedo, e em seguida, clique OK.
Carregue com o botão direito no nome do seu servidor e depois carregue em Reiniciar.
Agora você deve ser capaz de se conectar normalmente com uma das contas que agora é um membro do servidor fixo sysadmin.
É de facto suficiente para adicionar-m aos parâmetros de arranque no Gestor de configuração do servidor Sql, reiniciar o serviço, ir para o ssms uma opção adicionar o sysadmin na sua conta, depois remover-m Reiniciar de novo e usar como de costume.
Opções De Arranque Do Serviço Do Motor Da Base De Dados
-m inicia uma instância do servidor SQL no modo de utilizador único.