2017-02-23 12 views
0

이 내 응용 프로그램이 데이터베이스를 내보내고 다시 을 가져올 수 있도록하려면 "office.mdf"나는 localdatabase이 난 달성하기 위해 노력하는 백업 쿼리를 사용가져 오기 및 내보내기 데이터 MDF 파일 SQLSERVER

DB.ExecuteNonQuery(@"BACKUP DATABASE [" + Directory.GetCurrentDirectory() + @"\office.mdf] TO DISK = N'" + distination + "'"); 

나는 내 프로젝트를 빌드하고 나는 내가 데이터베이스를 성공적으로 수입, 데이터베이스를 수출 한 후 다른 장치에서 실행하지만 그 후 난 더 이상 데이터베이스에 연결할 수 없습니다 쿼리를

DB.ExecuteNonQuery(@"USE [master]; RESTORE DATABASE [" + Directory.GetCurrentDirectory() + @"\office.mdf] " + 
     @"FROM DISK = N'" + source + "' WITH FILE = 1 , NOUNLOAD, REPLACE, STATS = 10 , NORECOVERY , " + 
     @" MOVE 'office_log' TO '" + Directory.GetCurrentDirectory() + @"\office_log.ldf'" + 
     @" MOVE 'office' TO '" + Directory.GetCurrentDirectory() + @"\office.mdf'"); 

를 복원하고 나는 말한다 메시지를 받았습니다

Login failed for user "myuser" 

그래서 제일 먼저 어떻게이 문제 를 해결할 수 있으며, 그 후에는 어떻게 데이터베이스를 내보내고 (I가 때 수출로 기존 데이터베이스를 병합하는 방법을 다른 장치 에서 다시 가져올 수있는 가장 좋은 방법입니다 따라서 기존 데이터가 손실되지 않습니다.

+0

로그인 오류를 수정하려면'sp_change_users_login'을 사용하십시오. http://stackoverflow.com/questions/15944123/sql-server-back-restore-login-failed –

+0

감사합니다. 작동하지 않았습니다. –

답변

1

SQL Server에서 로그인은 사용자 데이터베이스에 저장되고 로그인에 매핑되는 동안 master 데이터베이스의 인스턴스 수준에 저장됩니다.

데이터베이스에 액세스하는 데 사용하려는 로그인이 대상 서버에 없거나 SID가 일치하지 않는 것 같습니다 (일반적으로 sp_change_users_login으로 수정 됨).

하나의 옵션은 CREATE LOGIN ... WITH SID를 사용하고이 데이터베이스를 복원 할 모든 서버에서 동일한 SID를 사용하는 것입니다.

+0

이 문제를 피하기 위해 SID에서 검색 중이라고 생각합니다. 정말 감사합니다. –

+0

이 작업을 수행했는지 확인하십시오. 당신의 질문에 대답합니까? –

+0

유용하지만 유감스럽게도 주된 문제는 데이터베이스간에 데이터를 내보내고 가져오고 싶기 때문이 아닙니다. –