programing

새 사용자를 생성하기 위한 SQL Server 스크립트

bestprogram 2023. 5. 22. 21:50

새 사용자를 생성하기 위한 SQL Server 스크립트

다음을 생성하기 위한 스크립트를 작성하고 싶습니다.admin사용자(사용자)abcd암호 )를 사용할 수 있습니다. 이 에게 또한이사를할당싶습다니고하용자▁this를 할당하고 싶습니다.admin전권

당신의 질문에 따르면, 당신은 사용자와 로그인의 차이에 대해 약간 혼란스러워 할 수도 있다고 생각합니다.로그인은 SQL Server 전체에 있는 계정으로, 서버에 로그인할 수 있고 암호를 가지고 있는 사용자입니다.사용자는 특정 데이터베이스에 대한 액세스 권한을 가진 로그인입니다.

로그인 만들기는 쉽고 특정 데이터베이스에서 로그인에 대한 사용자 계정을 만들기 전에 (분명히) 수행해야 합니다.

CREATE LOGIN NewAdminName WITH PASSWORD = 'ABCD'
GO

방금 선언한 로그인을 사용하여 db_owner 권한을 가진 사용자를 생성하는 방법은 다음과 같습니다.

Use YourDatabase;
GO

IF NOT EXISTS (SELECT * FROM sys.database_principals WHERE name = N'NewAdminName')
BEGIN
    CREATE USER [NewAdminName] FOR LOGIN [NewAdminName]
    EXEC sp_addrolemember N'db_owner', N'NewAdminName'
END;
GO

로그인은 위에서 본 것보다 조금 더 유동적입니다.예를 들어 데이터베이스가 설치될 때 윈도우즈 관리자 계정에 대한 로그인 계정이 자동으로 생성됩니다(대부분의 SQL 서버 설치에서).대부분의 상황에서 데이터베이스를 관리할 때 사용합니다(모든 권한을 가지고 있음).

그러나 응용프로그램에서 SQL Server에 액세스하려는 경우 서버를 "혼합 모드"(Windows 및 SQL 로그인 모두)로 설정하고 위와 같이 로그인을 작성해야 합니다.그러면 앱에 필요한 항목에 따라 해당 SQL 로그인에 대한 "GRANT" 권한이 부여됩니다.자세한 내용은 여기를 참조하십시오.

업데이트: Aaron은 sp_addsrvrole 멤버를 사용하여 로그인 계정에 준비된 역할을 할당하는 것을 지적합니다.이것은 좋은 생각입니다. 수동으로 권한을 부여하는 것보다 빠르고 쉽습니다.구글로 검색하면 많은 링크를 볼 수 있습니다.그러나 로그인과 사용자의 차이는 여전히 이해해야 합니다.

전체 서버 또는 특정 데이터베이스에 대한 전체 관리자 권한?다른 사용자들은 데이터베이스에 대해 응답했지만 서버에 대해서는 응답하지 않았습니다.

USE [master];
GO
CREATE LOGIN MyNewAdminUser 
    WITH PASSWORD    = N'abcd',
    CHECK_POLICY     = OFF,
    CHECK_EXPIRATION = OFF;
GO
EXEC sp_addsrvrolemember 
    @loginame = N'MyNewAdminUser', 
    @rolename = N'sysadmin';

사용 중인 SQL Server Express 버전에 따라 CHECK_ 매개 변수를 생략해야 할 수도 있습니다(질문에 이 정보를 포함하는 것이 거의 항상 유용합니다).

사용할 수 있는 항목:

CREATE LOGIN <login name> WITH PASSWORD = '<password>' ; GO 

로그인을 작성하려면(자세한 내용은 여기 참조).

그런 다음 다음을 사용해야 합니다.

CREATE USER user_name 

특정 데이터베이스에 대한 로그인과 연결된 사용자를 만들려면 해당 사용자에게도 액세스 권한을 부여해야 합니다.

(자세한 내용은 여기 참조)

다음을 사용할 수도 있습니다.

GRANT permission  [ ,...n ] ON SCHEMA :: schema_name

사용자를 할당한 스키마에 대한 권한을 설정합니다.

(자세한 내용은 여기 참조)

ALTER USER와 ALTER LOGIN 두 가지 명령이 유용할 수 있습니다.

일반 스크립트를 만들려면 Execute 문을 사용하여 사용자 이름 및 데이터베이스 이름으로 바꾸기를 수행할 수 있습니다.

Declare @userName as varchar(50); 
Declare @defaultDataBaseName as varchar(50);
Declare @LoginCreationScript as varchar(max);
Declare @UserCreationScript as varchar(max);
Declare @TempUserCreationScript as varchar(max);
set @defaultDataBaseName = 'data1';
set @userName = 'domain\userName';
set @LoginCreationScript ='CREATE LOGIN [{userName}]
FROM WINDOWS 
WITH DEFAULT_DATABASE ={dataBaseName}'

set @UserCreationScript ='
USE {dataBaseName}
CREATE User [{userName}] for LOGIN [{userName}];
EXEC sp_addrolemember ''db_datareader'', ''{userName}'';
EXEC sp_addrolemember ''db_datawriter'', ''{userName}'';
Grant Execute on Schema :: dbo TO [{userName}];'
/*Login creation*/
set @LoginCreationScript=Replace(Replace(@LoginCreationScript, '{userName}', @userName), '{dataBaseName}', @defaultDataBaseName)
set @UserCreationScript =Replace(@UserCreationScript, '{userName}', @userName)
Execute(@LoginCreationScript)

/*User creation and role assignment*/
set @TempUserCreationScript =Replace(@UserCreationScript, '{dataBaseName}', @defaultDataBaseName)
Execute(@TempUserCreationScript)
set @TempUserCreationScript =Replace(@UserCreationScript, '{dataBaseName}', 'db2')
Execute(@TempUserCreationScript)
set @TempUserCreationScript =Replace(@UserCreationScript, '{dataBaseName}', 'db3')
Execute(@TempUserCreationScript)
CREATE LOGIN AdminLOGIN WITH PASSWORD = 'pass'
GO


Use MyDatabase;
GO

IF NOT EXISTS (SELECT * FROM sys.database_principals WHERE name = N'AdminLOGIN')
BEGIN
    CREATE USER [AdminLOGIN] FOR LOGIN [AdminLOGIN]
    EXEC sp_addrolemember N'db_owner', N'AdminLOGIN'
    EXEC master..sp_addsrvrolemember @loginame = N'adminlogin', @rolename = N'sysadmin'
END;
GO

이 모든 도움말은 다음을 사용하여 네트워크를 지원합니다.

1- Right-click on SQL Server instance at root of Object Explorer, click on Properties
Select Security from the left pane.

2- Select the SQL Server and Windows Authentication mode radio button, and click OK.

3- Right-click on the SQL Server instance, select Restart (alternatively, open up Services and restart the SQL Server service).

4- Close sql server application and reopen it

5- open 'SQL Server Configuration Manager' and tcp enabled for network

6-Double-click the TCP/IP protocol, go to the IP Addresses tab and scroll down to the IPAll section.

7-Specify the 1433 in the TCP Port field (or another port if 1433 is used by another MSSQL Server) and press the OK 

8-Open in Sql Server: Security And Login  And Right Click on Login Name And Select Peroperties And Select Server Roles And 
  Checked The Sysadmin And Bulkadmin then Ok.
9-firewall: Open cmd as administrator and type: 
      netsh firewall set portopening protocol = TCP port = 1433 name = SQLPort mode = ENABLE scope = SUBNET profile = CURRENT

지난 주에 개발 상자에 Microsoft SQL Server 2014 Developer Edition을 설치했는데, 바로 이전에 본 적이 없는 문제가 발생했습니다.

저는 다양한 버전의 SQL Server를 수없이 설치해 보았는데, 보통은 문제가 없는 절차입니다.서버를 설치하고 관리 콘솔을 실행하면 매우 간단합니다.그러나 설치를 완료한 후 SSMS를 사용하여 서버에 로그인하려고 했을 때 아래와 같은 오류가 발생했습니다.

SQL Server 로그인 오류 18456 "사용자 로그인 실패... (Microsoft SQL Server, 오류: 18456)"로그인할 때 잘못된 암호를 입력한 경우 이 오류가 표시되는 데 익숙하지만 혼합 모드(Windows 및 SQL 인증)를 사용하는 경우에만 해당됩니다.이 경우 서버는 Windows 인증으로만 설정되었으며 사용자 계정은 내 것이었습니다.설치하는 동안 사용자를 SYSADMIN 역할에 추가하지 않은 이유는 아직도 잘 모르겠습니다. 아마도 단계를 놓쳐서 추가하는 것을 잊어버린 것 같습니다.어쨌든, 모든 희망이 사라진 것은 아닙니다.

SQL Server에 다른 계정으로 로그온할 수 없는 경우 이 문제를 해결하는 방법은 명령줄 인터페이스를 통해 네트워크 로그인을 추가하는 것입니다.이 작업을 수행하려면 로그온 중인 PC의 Windows 관리자여야 합니다.

MSSQL 서비스를 중지합니다.관리자 권한으로 실행을 사용하여 명령 프롬프트를 엽니다.SQL Server EXE 파일이 있는 폴더로 변경합니다. SQL Server 2014의 기본값은 "C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Binn"입니다."sqlserverr.exe –m" 명령을 실행합니다.SQL Server가 단일 사용자 모드로 시작됩니다.이 명령 프롬프트를 연 상태에서 2단계와 3단계를 반복하여 다른 명령 프롬프트를 엽니다.두 번째 명령 프롬프트 창에서 "SQLCMD –S Server_Name\"을 실행합니다.Instance_Name" 이 창에서 다음 행을 실행하고 각 행 뒤에 Enter 키를 누릅니다.

WINDOWS 2GO 3 SP_ADDSRV ROLE MEMBER 'LOGIN_NAME', 'SYSADMIN' 4GO 명령 프롬프트 창에서 두 프로세스를 모두 종료하려면 CTRL+C를 사용하십시오. SQL Server 프로세스를 종료하려면 Y를 눌러야 합니다.

MSSQL 서비스를 다시 시작합니다.다 됐다! 더 이상 어쩔 수 없다!이제 네트워크 로그인을 사용하여 로그인할 수 있습니다.

언급URL : https://stackoverflow.com/questions/1601186/sql-server-script-to-create-a-new-user