development

SQL 스키마 비교 오류 "대상을 사용할 수 없습니다"

big-blog 2020. 11. 9. 08:24
반응형

SQL 스키마 비교 오류 "대상을 사용할 수 없습니다"


Visual Studio 2015 업데이트 2의 SQLServer 프로젝트를 데이터베이스 SQL Server 2012와 비교할 때 방향을 변경할 때 "대상을 사용할 수 없음"또는 "소스를 사용할 수 없음"오류가 표시됩니다.

몇 달 전에 제대로 작동했습니다. 해결 방법이 있습니까? 나는 아무것도 찾을 수 없었다.


연결을위한 사용자 이름 으로 username @ servername 을 사용 하면 Azure 데이터베이스에서 발생하는 문제가 해결 된다는 것을 발견했습니다 . 나는 갑자기 멈추지 않고 역사적으로 작동했던 연결을 가지고 있었고 이것은 나를 위해 그것을 고쳤습니다.

예를 들어 mylogin 의 로그인을 사용하고 myserver.database.windows.net에 연결할 mylogin@myserver.database.windows.net 을 사용자 이름으로 대신 사용 하면 "소스를 사용할 수 없음"문제가 발생하지 않습니다.


SQL Server 인증을 사용하지만 암호를 저장하지 않으면 Visual Studio 2017에서이 오류가 발생합니다. Visual Studio 15.6.3 및 SQL Server 12.0.5000.0에서이 단계를 테스트했습니다.

오류 수정

이렇게하면 문제가 해결되지만 다음에 Visual Studio를 다시 시작할 때 문제가 다시 발생합니다.

  1. 도구 -> SQL Server- > 새 스키마 비교 ...로 이동합니다 .
  2. 중 하나를 선택하여 소스 선택 또는 선택 대상을
  3. 연결 선택 선택
  4. 에서 최근 연결 , 당신이 오류를 준 모든 연결을 찾을 수
  5. 이들 각각에 대해 연결을 마우스 오른쪽 버튼으로 클릭하고 기록 에서 제거를 선택합니다.
  6. Visual Studio 다시 시작

오류가 다시 발생하지 않도록 방지

  1. 의 오류 수정 완료
  2. 연결 세부 정보를 설정할 때 암호 기억 확인란을 선택하십시오.

오류 재현

이 오류의 문제를 해결하려면 다음 방법으로 문제를 재현했습니다.

  1. 도구 -> SQL Server- > 새 스키마 비교 ...로 이동합니다 .
  2. 소스 및 대상 연결 선택
  3. 하나 이상의 연결에 대해 SQL Server 인증을 사용 하지만 암호 기억 선택 하지 마십시오.
  4. 비교를 누르십시오
  5. 오류없이 작동하는지 확인
  6. Visual Studio 다시 시작
  7. 정확히 동일한 연결 세부 정보를 사용하여 1-4 단계를 반복합니다.

여기에서 모든 것을 시도한 후 이것이 저에게 효과적이었습니다.

  1. VS 인스턴스를 닫습니다.

  2. 에 저장된 연결 키 삭제

HKEY_CURRENT_USER \ SOFTWARE \ Microsoft \ VisualStudio \ 14.0 \ ConnectionMruList

  1. VS를 다시 열고 다시 시도하십시오.

다른 답변은 Azure가 아닌 SQL Server를 직접 사용하고 있었기 때문에 작동하지 않았지만 연결 문자열의 고급 속성을 확인한 후 인증이 "지정되지 않음"으로 설정되고 네트워크 라이브러리가 비어 있음을 알았습니다.

나는 그들을 바꾸었고 다시 작동했습니다. 연결을 위해 데이터베이스를 선택할 수 있으므로 다소 이상합니다. 언급 된 "소스를 사용할 수 없음"메시지를 제공하는 스키마를 비교할 수는 없습니다.

SQL


나를 위해 그것은 그것을 수정 \server name필드 에서 서버의 IP 주소 끝에 있는 기호였습니다 . 아주 이상한.

예를 들어 10.10.10.10내가 쓰는 대신 10.10.10.10\괜찮습니다.

참고 : 저는 Visual Studio 2017을 사용하고 있습니다.


처음 만들었을 때 성공적으로 작동했던 이전에 저장된 .scmp 파일을 열 때이 오류가 발생했습니다.

이 문제는 저장된 연결 문자열에서 암호가 누락되어 발생했습니다. 소스는 통합 인증을 사용했기 때문에 VS는 그것에 대해 불평하지 않았습니다.

VS가 캐시 된 연결 문자열을 사용했기 때문에 대상 연결을 다시 선택해도 도움이되지 않았습니다.

Password파일의 연결 문자열에 인수를 추가하여 문제를 해결했습니다 . 대상 연결 문자열이 지정된 두 위치가 있습니다 (아래에 표시된 XPath).

  • /SchemaComparison/TargetModelProvider/ConnectionBasedModelProvider/ConnectionString
  • /SchemaComparison/SchemaCompareSettingsService/ConfigurationOptionsElement/PropertyElementName[Name='TargetConnectionString']

이러한 편집 후 .scmp 파일을 다시 열었고 비교가 성공적으로 실행되었습니다.


여기에 다른 답변과 혼합 된 결과가 있습니다. 다른 개발자가 만든 저장 비교 파일을 사용하고있었습니다. 이것은 Azure 데이터베이스가 아닌 독립 실행 형 SQL Server입니다. 비교는 때때로 작동하고 다른 것은 작동하지 않습니다 (대상을 사용할 수 없음 오류를 제공함). 필자의 경우 저장된 비교는 FQDN을 사용하지 않고 서버 이름을 사용했습니다. FQDN으로 변경하면 저에게 효과적이었습니다. 문제가 다시 발생할지 확실하지 않지만 다른 사람에게 유용 할 경우이 정보를 추가 할 것이라고 생각했습니다.


프로세스가 데이터베이스를 차단하고있었습니다. kill [spid]를 실행 한 후 다시 작동했습니다.


사용자에게 스키마 비교 작업을 수행하는 데 필요한 권한이없는 경우에도 동일한 문제가 나타납니다. https://msdn.microsoft.com/en-us/library/jj889462(v=vs.103).aspx


나는 IP를 통해 SQL 서버를 언급하고 있었고이 문제를주었습니다. 나는 DNS 이름을 통해 그것을 참조했고 문제가 해결되었습니다!

이유가 확실하지 않습니다! 그러나 다음과 같이 작동했습니다. :)


SQL Server 개체 탐색기 창에서 데이터베이스 이름을 마우스 오른쪽 단추로 클릭하고 거기에서 스키마 비교를 선택하면 작동하도록 할 수 있습니다. 도구 메뉴에서 열리는 스키마 비교 창을 사용하려고하면 작동하지 않습니다.


I have tried in 2015 Visual Studio Professional version and I got this issue at the time of SQL data comparison and it worked for me when I use host name instead of IP address of databases. Hope this will address the issue.


I actually had the same problem in VS studio 2015. But as the database was on my PC I was using localhost instead of the actual name of the computer. I just manaully selected the computer server as in the proposition of visual studio itself and it worked.


After trying many different suggestions here is what worked for me.

  • Depends what is unavailable, source or target. Select clear source/target.
  • Save changes to file
  • Reopen the file and select new connection again (in my case Azure database)
  • Click Compare again, now it works.

참고 URL : https://stackoverflow.com/questions/37463279/sql-schema-comparison-error-target-is-unavailable

반응형