2008-10-07 4 views
1

일부 테스트를 수행 할 수 있도록 데이터베이스 홈의 복사본을 가져 왔습니다. 그러나 저장 프로 시저를 실행하려고하면 사용자 기본 데이터베이스를 열 수 없습니다. 로그인이 실패했습니다 ..사용자 기본 데이터베이스를 열 수 없습니다. 로그인 실패. SQL 2005

나는 데이터베이스 관리 로그인 스튜디오에서 테이블을 열고 기본 데이터베이스 및 다른 데이터베이스에 액세스 할 수 있습니까?

아마도이 집에서 2005 년 직장에서 SQL 2000에서였다 손상된 사용자

답변

1

SQL Server 2000에서 SQL Server 2005로 8 개의 데이터베이스를 완전히 다른 컴퓨터로 옮겼습니다. 나는 보통 저장된 procs가 무엇을하고 있는지 알고 싶어서 약간 파고 가서 실제 명령이 변경자이라는 것을 알았다.

다른 사람들의 의견입니다. 사용자가 SQL Server 2005에서 데이터베이스를 분리하고 다시 연결할 때 사용자의 연결이 끊어집니다. SQL Server 2000에서이 동작을 보지 못해서이 동작이 가장 성가시다.

이 문제를 해결할 T-SQL은 다음과 같습니다 :

USE AdventureWorks; 
ALTER USER Mary5 WITH NAME = Mary51; 
GO 

이 MSDN 기사는 이것에 대해 좀 더 이야기 :

http://msdn.microsoft.com/en-us/library/ms176060.aspx

3

편집 :이 ... 당신의 경우에 작동하는지 광산은 2005 년에 2005 년부터 확실하지 않았다

나는 비슷한 문제가 있었다. 필자가 백업을 분리하거나 생성 한 다음 데이터베이스를 다시 만들면 사용자와의 연결이 느슨해집니다. 사용중인 사용자는 여전히 로그인 아래에 있지만 로그인에 실패합니다.

내 경우에는 사용자가 아닌 데이터베이스 -> 보안 -> 사용자에서 사용자를 삭제하여 로그인 할 수있었습니다 그것은 루트 SQL 서버 사용자 목록에 있습니다.

루트 사용자 목록으로 이동하여 데이터베이스 매핑을 다시 지정하거나 존재하지 않는 경우 사용자를 만듭니다.

희망이 도움이됩니다.

+0

2000> 2005에도 적용되는 답변입니다. – Turnkey

+0

또는 심지어 2000 -> 2000, 모든 사용자가 마스터 데이터베이스에서 연관된 ID를 가져 오면 db에 연결된 사용자가 표시 될 수 있지만 사용자가 마스터에서 일치하는 ID를 갖지 않으면 계정이 실패합니다 로그인하기. db에서 사용자를 삭제 한 다음 sever 보안 작업에서 다시 연결합니다. – Adam

0

내 이해는 로그인이 데이터베이스에 저장되는 반면 사용자는 데이터베이스에 로그인 지정 (잘못된 경우 올바른 수정)입니다.

따라서 데이터베이스를 분리/연결하여 로그인을 이동할 수 없으며 솔루션은 복사 된 데이터베이스에 (유효한) 로그인을 연결하는 데이터베이스 사용자를 만드는 것입니다.

+0

좀 더 자세히 설명해 주시겠습니까? 나는 마지막 문장을 꽤 따르지 않고있다. 귀하의 솔루션은 사용자를 다시 매핑해야하는 추가 단계를 줄일 수 있다고 생각합니다. 감사! –

2

이것은 어둠 속에서 찍은 사진이므로 시간을 낭비한다면 용서해주십시오.

또 다른 포스터는 주어진 사용자가 시스템에 대한 ID와 특정 데이터베이스에 대한 ID를 가지고 있다고 언급했습니다. 이는 동일한 로그인/사용자 이름에 대해 master.sys.syslogins와 dbname.sys.users 사이의 sid를 비교하여 입증 할 수 있습니다. 마스터 데이터베이스의 자체 복사본이있는 다른 SQL Server에서 백업을 복원하는 경우 sids가 일치하지 않습니다.

Sql Server 2005는 많은 고통없이 시스템 테이블을 직접 편집 할 수 없습니다. = '신고'을 보여줍니다

사용자가를

를 sp_change_users_login의 @ 작업이 GO 어떤

사용 DBNAME : 일치하는이 잘못 함께하기 위해, 그들은 당신이 그들을 해결하는 데 도움이 저장 프로 시저를 추가 dbName.sys.users 항목은 있지만 master.sys.syslogins는 없습니다. 또는 양쪽 모두에 이름이 있지만 sids에 따라 다릅니다.

는 사용자가 동기화를 벗어 났음을 보여줍니다 경우, 절차도 연결 변경할 수있는 모드가 있습니다

사용 DBNAME 이 를 sp_change_users_login 'Update_One', 'userNameInDbUsers을'GO '를 UserNameInLogins'

sid가 일치하지 않는 것이 문제가되지 않는다면 Sql Server 2005에서도 정말 엉망입니다. GUI는 특히 버그가 있습니다.이 같은 문제를 해결하려면, 사실 (GUI 또는 DROP 로그인 명령을 통해)을 syslogins 항목을 삭제했다

를 sp_change_users_login : http://msdn.microsoft.com/en-us/library/ms174378(SQL.90).aspx

드롭 로그인 구문 : http://msdn.microsoft.com/en-us/library/ms188012(SQL.90).aspx

0

로 이전에, 언급 한 해당 사용자 계정에 대한 로그인 매핑이 이동 중에 아마도 연관성이 없어졌습니다. 또는 예상했던 자격 증명을 만들지 않고 옮겼습니다.이 경우 먼저 로그인을 만들어야합니다 ...

그러나 백업 세트 였지만 복원 중이라면 아무 것도 없습니다. (내가 아는) 방법으로 관리 UI를 통해 로그인을 사용자에게 다시 연결합니다. 대신 다음을 사용해야합니다.

exec sp_change_users_login update_one, 'user', 'login' 

링크를 복원하려면 가져와야합니다.

0

ALTER LOGIN 작품에만 SQL 2005까지에.

내가 내장 \ 관리자가 응용 프로그램 DB에 기본 계정을 설정하면 내가 어려운 방법이 발견

EXEC master.dbo.sp_defaultdb @loginname = N'BuiltIn\Administrators', @defdb = N'master' 

2000 사용 사용자에 대한 기본 데이터베이스를 변경하려면 그것은 어떻게 든 오프라인 가서 I 더 이상 로그인 할 수 없습니다. Management Studio를 사용하면 master에 로그인하는 옵션을 설정할 수 있지만 다른 작업을 수행하기 전에 위의 명령을 실행해야 기본 데이터베이스를 사용할 수 없게되는 오류가 줄어 듭니다.

1

난 그냥이 문제를 해결했다. 기본 데이터베이스는 AdventureWorks2008 이었으므로 관리자로 로그인을 서버에서 제거했습니다. 그럼 내 사용자에게

CREATE LOGIN [NT\mylogin] FROM WINDOWS WITH DEFAULT_DATABASE=[Master], DEFAULT_LANGUAGE=[us_english] 
GO 
2

을 다시 다음을 실행 저도 같은 문제를했고 나는 그것을 고정 : ***** 사용자 이름입니다

C:\> sqlcmd -E -d master 
1> ALTER LOGIN ***** WITH DEFAULT_DATABASE=master 
2> GO 

.

(도메인 사용자 이름 사용하는 경우 [*****]를)

는 편집 :

*****이 될 수 여기서

  • username을 사용자가 로컬에있는 경우,
  • [username]은 if 사용자가 실제 도메인에 속해 있습니다.
  • [domain\username] 사용자가 다른 도메인에 속한 경우 (테스트되지 않음)
+0

고맙습니다. 다른 모든 사용자가 같은 문제를 발표 할 때 가장 좋은 옵션이었습니다. – MilkyWayJoe

+0

도메인에 있다면 [ \ ]을 사용하여 'SQLCMD' 프로그램이 로그인을 인식합니다. – Zarepheth

+0

[*****]은 실제 도메인의 사용자를 의미하며, 내가 제안한 것을 시도하지 않았지만 내 대답을 업데이트하는 것이 맞을 수도 있습니다. –

관련 문제