studio puerto puede permitir para otro manager management habilitar equipo desde configurar configuración conectarse conectar administrador acceso abrir sql-server-2008 ssms sqlcmd

sql-server-2008 - puerto - sql server management studio



¿Cómo me otorgo el acceso de administrador a una instancia local de SQL Server? (6)

Instalé SQL Server 2008 R2 en mi máquina local. Pero no puedo crear una nueva base de datos debido a derechos (o falta de).

"CREAR PERMISO DE BASE DE DATOS NEGADO"

Entonces, traté de asignar los privilegios de administrador a mi inicio de sesión actual

"El usuario no tiene permiso para realizar esta acción".

También intenté crear un nuevo inicio de sesión que tuviera privilegios de administrador pero sin suerte. ¿Cómo me otorgo derechos de administrador para poder crear una base de datos? Puedo volver a instalar, pero prefiero no hacerlo.


Abra una ventana de símbolo del sistema. Si ya tiene una instancia predeterminada de SQL Server en ejecución, ejecute el siguiente comando en el símbolo del sistema para detener el servicio de SQL Server:

net stop mssqlserver

Ahora ve al directorio donde está instalado el servidor SQL. El directorio puede ser, por ejemplo, uno de estos:

C:/Program Files/Microsoft SQL Server/MSSQL10_50.MSSQLSERVER/MSSQL/Binn C:/Program Files/Microsoft SQL Server/MSSQL13.MSSQLSERVER/MSSQL/Binn

Calcule su directorio y CD MSSQL como tal:

CD C:/Program Files/Microsoft SQL Server/MSSQL10_50.MSSQLSERVER/MSSQL/Binn

Ahora ejecute el siguiente comando para iniciar SQL Server en modo de usuario único. A SQLCMD se especifica SQLCMD , solo se puede establecer una conexión SQLCMD (desde otra ventana del símbolo del sistema).

sqlservr -m"SQLCMD"

Ahora, abra otra ventana del símbolo del sistema como el mismo usuario que el que inició SQL Server en el modo de usuario único anterior, y en él, ejecute:

sqlcmd

Y presiona enter. Ahora puede ejecutar sentencias de SQL contra la instancia de SQL Server que se ejecuta en modo de usuario ú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;

Source


Adopté una base de datos de SQL 2012 en la que no era un administrador de sistemas pero era un administrador en la máquina. Usé SSMS con "Ejecutar como administrador", agregué mi cuenta NT como inicio de sesión de SQL y configuré la función de servidor en sysadmin. No hay problema.


Aquí hay un script que dice ser capaz de arreglar esto.

Obtenga derechos de administrador para su SQL Server Express local con este sencillo script

Descargar el enlace al script

Descripción

Esta secuencia de comandos le permite agregarse fácilmente a la función sysadmin de una instancia local de SQL Server. Debe ser miembro del grupo de administradores locales de Windows o tener acceso a las credenciales de un usuario. La secuencia de comandos es compatible con SQL Server 2005 y versiones posteriores.

La secuencia de comandos es más útil si usted es un desarrollador que intenta usar SQL Server 2008 Express que fue instalado por otra persona. En esta situación, generalmente no tendrá derechos de administrador para la instancia de SQL Server 2008 Express, ya que de manera predeterminada solo a la persona que instale SQL Server 2008 se le otorgan privilegios administrativos.

El usuario que instaló SQL Server 2008 Express puede usar SQL Server Management Studio para otorgarle los privilegios necesarios. Pero, ¿qué ocurre si SQL Server Management Studio no está instalado? ¿O peor si el usuario que instala ya no está disponible?

Este script corrige el problema con solo unos pocos clics.

Nota: Necesitará proporcionar al archivo BAT un ''Nombre de instancia'' (Probablemente será ''MSSQLSERVER'', pero podría no serlo): puede obtener el valor ejecutando lo siguiente en la "Consola de administración de Microsoft SQL Server". ":

SELECT @@servicename

Luego copie el resultado para usar cuando el archivo BAT solicita ''nombre de instancia de 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


Es suficiente para agregar -m a los parámetros de inicio en Sql Server Configuration Manager, reiniciar el servicio, ir a ssms y agregar la casilla de verificación sysadmin en su cuenta, luego quitar -m restart nuevamente y usar como de costumbre.

Opciones de inicio del servicio de motor de base de datos

-m Inicia una instancia de SQL Server en modo de usuario único.


Microsoft tiene un artículo sobre este tema. Lo pasa todo paso a paso.

https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/connect-to-sql-server-when-system-administrators-are-locked-out

En resumen, implica iniciar la instancia de sqlserver con -m como sugieren todas las otras respuestas. Sin embargo, Microsoft proporciona instrucciones un poco más detalladas.

Desde la página de Inicio, inicie SQL Server Management Studio. En el menú Ver, seleccione Servidores registrados. (Si su servidor aún no está registrado, haga clic con el botón derecho en Grupos de servidores locales, seleccione Tareas y luego haga clic en Registrar servidores locales).

En el área Servidores registrados, haga clic con el botón derecho en su servidor y luego haga clic en Administrador de configuración de SQL Server. Esto debería solicitar permiso para ejecutarse como administrador y luego abrir el programa Configuration Manager.

Cerrar Management Studio.

En el Administrador de configuración de SQL Server, en el panel izquierdo, seleccione Servicios de SQL Server. En el panel derecho, encuentre su instancia de SQL Server. (La instancia predeterminada de SQL Server incluye (MSSQLSERVER) después del nombre de la computadora. Las instancias con nombre aparecen en mayúsculas con el mismo nombre que tienen en Servidores registrados.) Haga clic con el botón derecho en la instancia de SQL Server y luego haga clic en Propiedades.

En la pestaña Parámetros de inicio, en el cuadro Especificar un parámetro de inicio, escriba -m y luego haga clic en Agregar. (Eso es un guion y luego una letra minúscula m.)

Nota

Para algunas versiones anteriores de SQL Server no hay pestaña de Parámetros de inicio. En ese caso, en la pestaña Avanzado, haga doble clic en Parámetros de inicio. Los parámetros se abren en una ventana muy pequeña. Tenga cuidado de no cambiar ninguno de los parámetros existentes. Al final, agregue un nuevo parámetro; -m y luego haga clic en Aceptar. (Eso es un punto y coma, luego un guión, luego minúscula, letra m).

Haga clic en Aceptar y, después de reiniciar el mensaje, haga clic con el botón derecho en su nombre de servidor y luego haga clic en Reiniciar.

Después de que SQL Server se haya reiniciado, su servidor estará en modo de usuario único. Asegúrese de que ese Agente SQL Server no se esté ejecutando. Si comenzó, tomará su única conexión.

En la pantalla de inicio de Windows 8, haga clic con el botón derecho en el icono de Management Studio. En la parte inferior de la pantalla, selecciona Ejecutar como administrador. (Esto pasará sus credenciales de administrador a SSMS).

Nota

Para versiones anteriores de Windows, la opción Ejecutar como administrador aparece como un submenú.

En algunas configuraciones, SSMS intentará hacer varias conexiones. Varias conexiones fallarán porque SQL Server está en modo de usuario único. Puede seleccionar una de las siguientes acciones para realizar. Haz una de las siguientes.

a) Conéctese con Object Explorer usando la Autenticación de Windows (que incluye sus credenciales de administrador). Expanda Seguridad, expanda Inicios de sesión y haga doble clic en su propio inicio de sesión. En la página Funciones del servidor, seleccione sysadmin y luego haga clic en Aceptar.

b) En lugar de conectarse con el Explorador de objetos, conéctese con una Ventana de consulta usando la Autenticación de Windows (que incluye sus credenciales de administrador). (Solo puede conectarse de esta manera si no se conectó con Object Explorer). Ejecute código como el siguiente para agregar un nuevo inicio de sesión de autenticación de Windows que sea miembro de la función de servidor fijo sysadmin. El siguiente ejemplo agrega un usuario de dominio llamado CONTOSO / PatK.

CREATE LOGIN [CONTOSO/PatK] FROM WINDOWS; ALTER SERVER ROLE sysadmin ADD MEMBER [CONTOSO/PatK];

c) Si su SQL Server se está ejecutando en el modo de autenticación mixta, conéctese con una ventana de consulta mediante la autenticación de Windows (que incluye sus credenciales de administrador). Ejecute un código como el siguiente para crear un nuevo inicio de sesión de Autenticación de SQL Server que sea miembro de la función de servidor fijo sysadmin.

CREATE LOGIN TempLogin WITH PASSWORD = ''************''; ALTER SERVER ROLE sysadmin ADD MEMBER TempLogin;

Advertencia:

Reemplace ************ con una contraseña segura.

d) Si su SQL Server se está ejecutando en modo de autenticación mixta y desea restablecer la contraseña de la cuenta sa, conéctese con una ventana de consulta mediante la autenticación de Windows (que incluye sus credenciales de administrador). Cambie la contraseña de la cuenta sa con la siguiente sintaxis.

ALTER LOGIN sa WITH PASSWORD = ''************''; Warning

Reemplace ************ con una contraseña segura.

Los siguientes pasos ahora cambian SQL Server a modo multiusuario. Cierre SSMS.

En el Administrador de configuración de SQL Server, en el panel izquierdo, seleccione Servicios de SQL Server. En el panel derecho, haga clic con el botón derecho en la instancia de SQL Server y luego haga clic en Propiedades.

En la pestaña Parámetros de inicio, en el cuadro Parámetros existentes, seleccione -m y luego haga clic en Eliminar.

Nota

Para algunas versiones anteriores de SQL Server no hay pestaña de Parámetros de inicio. En ese caso, en la pestaña Avanzado, haga doble clic en Parámetros de inicio. Los parámetros se abren en una ventana muy pequeña. Quite el; -m que agregó anteriormente, y luego haga clic en Aceptar.

Haga clic con el botón derecho en su nombre de servidor y luego haga clic en Reiniciar.

Ahora debería poder conectarse normalmente con una de las cuentas que ahora es miembro de la función de servidor fijo sysadmin.


Sí, parece que olvidó agregarse a la función sysadmin al instalar SQL Server. Si es un administrador local en su máquina, esta publicación de blog puede ayudarlo a usar SQLCMD para obtener su cuenta en el grupo sysadmin de SQL Server sin tener que volver a instalarla. Es un poco un agujero de seguridad en SQL Server, si me preguntas, pero te ayudará en este caso.

Editar: se cambió el enlace muerto para que apunte a archive.org. Publicación original here