SQL Server에서 기존 사용자의 로그인을 어떻게 만듭니 까?


17

한 SQL Server 인스턴스에서 다른 SQL Server 인스턴스로 데이터베이스를 복원했습니다. 데이터베이스에 이미 사용자가 추가되었습니다. 그러나 새 SQL Server 인스턴스에 대한 로그인이 없습니다.

새 사용자를위한 새 로그인을 만드는 방법을 알고 있지만 기존 사용자를위한 로그인을 만드는 방법은 무엇입니까?

답변:


9

문제는 복원이 원래 서버 인스턴스에서 db 사용자를 다시 가져 오지만 새 인스턴스는 일반적으로 해당 사용자 로그인을 전혀 모른다는 것입니다. db 수준의 보안 아래에 표시되지만 해당 서버 수준 로그인이 없습니다.

데이터베이스를 복원 한 인스턴스에서 서버 로그인으로 데이터베이스 사용자를 다시 연결해야합니다.

그것에 대해 몇 가지 방법이 있습니다.

  1. 새 인스턴스에서 새 로그인을 작성하십시오. 그런 다음 새 인스턴스에서 데이터베이스 사용자로 이들을 제거하고 새 로그인을 추가해야합니다. 동일한 로그인 이름을 만들 수 있지만 SID (보안 식별자)가 다르고 SQL이 사용자 식별에 사용하는 경우가 이상해 보입니다. 한두 번의 로그인으로 충분합니다.

  2. 인스턴스간에 동일한 SID를 유지하면서 동일한 사용자를 유지하려면 sp_help_revlogin 저장 프로 시저 를 사용하십시오 . 필요한 저장 프로 시저를 생성 할 링크에서 코드를 복사하고 사용자를 복사하려는 서버에서 실행하십시오. 대상 서버에서 실행할 수있는 SQL 스크립트를 생성하여 SID, 비밀번호 등 모든 것을 전달하는 동일한 사용자를 작성합니다. 대상 인스턴스에서 다시 연결해야하는 데이터베이스 사용자가 많거나 소스 인스턴스에서 하나 이상의 SQL 로그인에 대한 비밀번호를 모르는 경우이 방법을 사용하십시오.


10

항상 'Update_One'작업과 함께 sp_change_users_login 명령을 실행 하여 서버 사용자와 데이터베이스 사용자를 다시 연결합니다.

sp_change_users_login 'Update_One', 'database user', 'server login'


쿨 나는 이것을 사용했다 : EXEC sp_change_users_login 'Auto_Fix', 'User', NULL, 'password';대신. :)
user2173353

데이터베이스 사용자와 서버 로그인이 모두 있지만 링크가 끊어진 경우에만 수행 할 수 있습니까?
wenzzzel

2

여기 내가 찾은 것이 있습니다.

squillman이 설명했듯이 사용자는 데이터베이스를 통해 복사되지만 로그인은 그렇지 않습니다. sp_change_users_login이라는 상점 절차를 통해 문제를 해결할 수 있습니다. 이 단계는 이 아리 클에 자세히 설명되어 있습니다. 상점 절차 사용에 대한 자세한 내용은 이 페이지 에서 확인할 수 있습니다 .


2

SQL Server 2012부터 기존 사용자를 새 로그인에 할당하는 T-SQL 명령이 있습니다. 로그인을 생성하지만 사용자 매핑을 시도하지 마십시오 (실패). 그런 다음 다음을 실행하십시오.

use <existing_database>;
alter user <existing_database_user> with login = <newly_created_login>;

기존 로그인이 새 사용자에게 매핑됩니다. 여기에 SQL 설명서 : https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-user-transact-sql?view=sql-server-2017

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.