2010-04-26 5 views
2

VS2005에서 SQL Server에 액세스하는 DLL을 사용하고 있습니다. DLL은 SQLException이에게SQL Server 2005 : 잘못된 개체 이름 예외

잘못된 개체 이름 'tableXYZ'

을 반환하지만 tableXYZ은 데이터베이스의 테이블입니다.

대신 dbo.tableXYZ를 찾으십니까? 이 로그인이 사용되는 권한 문제입니까?

+0

DLL에 대한 소스 코드가 없습니다. 내가 할 수있는 것은 호출 코드와 SQL Server를 변경하는 것입니다. –

답변

1

이는 테이블 소유자의 권한 문제 일 수 있습니다.

예를 들어, 테이블 소유자가 dbo 그래서 전체 테이블 이름은 당신이로 접속 사용자 dbo.TableXYZ 것, 예를 SQLUser이 될 수있는 것은 dbo 스키마에 액세스 할 수 없습니다. 따라서 테이블에만 액세스 할 수 있습니다. SQLuser.TableXYZ

데이터베이스에 연결하는 데 사용하는 권한을 확인하고 싶습니다.

+0

컴파일 된 DLL에 있기 때문에 데이터베이스에 연결하는 코드를 변경할 수 없습니다. –

+0

DLL을 변경할 필요가 없습니다. 데이터베이스에 연결하는 사용자가 테이블이 속한 스키마에 대한 액세스 권한이 있는지 확인해야합니다. – codingbadger

0

연결 문자열에 databasename을 사용해야합니다. 그렇지 않으면 그냥 연결하고 dbo.databasename.tableXYZ를 사용해야합니다.

당신이 dbo.tableXYZ 당신이 원하는 무엇을 명확하게 사용하여 다양한 연결 문자열 here

+0

복잡한 DLL에 있기 때문에 데이터베이스에 연결하는 코드를 변경할 수 없습니다. –

1

을 찾을 수 있습니다 - 기본 dbo 스키마에 tableXYZ. 다른 스키마에도 tableXYZ이있을 수 있습니다. 그러면 SQL Server가 원하는 스키마를 알지 못할 수 있습니다.

그리고 가장 확실한 권한 문제 일 수 있습니다. 해당 사용자로 SQL SErver Mgmt Studio에서 해당 데이터베이스에 연결하면 tableXYZ 테이블을 볼 수 있습니까?

업데이트 : DLL에 호출하는 앱의 app.config 파일에 복사하지 않았을 수있는 특정 연결 문자열이 필요합니까 ?? .NET의 DLL은 실제로 자체 mylibrary.dll.config를 가질 수 없습니다. 기본적으로 .NET에서는이를 읽을 수 없습니다.

+0

예. 할 수 있습니다. DLL에 대한 소스 코드가 없으므로 SQL Server의 설정을 변경할 수 있습니다. –

+0

"UPDATE"에 회신 : 아니요, .config 파일이없는 것으로 보입니다. 연결이 성공적으로 수행되고 있으며이 문제가 스키마/사용 권한 중 하나임을 유추 할 수 있습니까? –

0

시작 지점으로, DLL이 데이터베이스에 연결되는 방법을보기 위해 SQL Server 프로파일 러 추적을 설정할 수 있습니다. 예 : 당신은 어떤 자격 증명이 사용되고 있는지를 볼 수 있어야합니다. 코드가 올바른 데이터베이스 등에 연결되어 있는지 확인할 수도 있습니다.