2012-01-23 2 views
0

Computer A에 .mdf 데이터베이스를 배치하고 동시에 Computer B에 액세스하려고하지만 액세스 할 수 없다는 오류가 발생합니다. mdf 파일을 다른 프로세스에서 사용하고 있기 때문에하나의 .mdf 데이터베이스 (ASP.net)에 여러 개의 연결 SQL 서버

설치 프로그램은 데이터베이스가 공용 폴더 인 Computer A에 호스팅되어 있습니다. 나는 두 컴퓨터에서 실행중인 비주얼 스튜디오가 있고, Computer B는 컴퓨터 A.

컴퓨터 연결 경로 문자열의 데이터베이스에 액세스 :

C : \ 사용자가 공용 \를 \을

컴퓨터 B의 연결 경로 database.mdf 문자열 :

\ 192.168.254.8 \ 공공 \ database.mdf

나는 데시벨에 다중 접속을 사용하는 알고하지 않는 설정의 어떤 종류가 있습니까? 아니면 불가능한가요?

편집 :

내 질문에 대해 사과드립니다.

네트워크를 통해 연결된 두 대의 컴퓨터가 하나의 Visual Studio 솔루션/프로젝트 웹 사이트에 액세스하려고합니다. 데모로하고 싶었는데 가능 했어?

+0

사용중인 DBMS는 무엇입니까? –

+0

@Oleg SQL Server Express, 죄송합니다. –

+0

@PodMays 혹시 이것을 알아 냈습니까? –

답변

1

데이터베이스 파일에 동시 또는 직접 액세스 매우 불량한 연습 또는 단순히 불가능합니다.

적절한 DBMS 도구를 사용하여 데이터에 액세스하십시오.

예 - 데모 용 웹 사이트 프로젝트에 액세스 할 수 있습니다.

+0

그러나 서버에 프로젝트를 어떻게 배치합니까? 시스템을 사용하는 직원이 여러 명 있으며 서버에 하나의 .mdf 만 있습니다. 각 직원은 .mdf에 액세스해야하는 컴퓨터가 있으므로 동일한 경우입니다. 맞습니까? –

+0

@Chris는 두 대의 컴퓨터에서 Visual Studio를 실행하고있어 SQL Express의 두 인스턴스를 실행하고 있다는 것을 알게되었습니다. 하지만 데모 목적으로이 작업을 수행 할 수 있습니까? 두 대의 컴퓨터가 네트워크를 통해 연결되어 있고 웹 사이트 프로젝트에 액세스하고 있습니까? –

1

호스트 컴퓨터에서 SQL Server 인스턴스 (명시 적)를 실행해야합니다.

클라이언트의 모든 요청은 해당 서버 인스턴스에 연결하기위한 표준 메커니즘을 사용해야합니다. 즉, SQL Server의 자체 복사본을 실행하지 않고 호스트 컴퓨터에서 실행중인 인스턴스에 연결합니다.

+0

방금이 사실을 깨달았습니다. 차이점은 Visual Studio와 SQL Server를 두 대의 컴퓨터에서 인스턴스화 한 것입니다. 그래서 나는 이것을 할 수 없다? 동일한 프로젝트에 액세스하는 두 대의 컴퓨터로 데모를하려고했기 때문에. –

+1

Visual Studio는 SQL Server의 원격 인스턴스를 사용하여 연결할 수 있습니다. 나는 항상 그렇게한다. 연결 문자열에 설정하십시오. –

0

호스트 컴퓨터 (데이터베이스를 유지하려는 컴퓨터)에 SQL Server를 설치하십시오.

그런 다음 Visual Studio에서 "서버 탐색기"를 사용하여 데이터베이스의 원격 인스턴스를 찾습니다. 거기에서 SQL Server의 원격 인스턴스를 연결 문자열로 활용하여 여러 컴퓨터를 단일 데이터베이스에 연결할 수 있습니다.

두 개의 SQL Server 인스턴스를 사용하여 .mdf 파일 하나에 연결하는 것은 매우 나쁜 습관입니다.

+0

이것은 내가 지금하고있는 일이다. 연결 문자열은 \\ 192.168.254.8 \ Public \ database.mdf이지만 오류가 발생합니다. * .mdf는 이미 다른 프로세스에서 사용 중이거나 UNC 공유에 있습니다. –

+0

정확히 ... "UNC 공유 위치". MDF에 연결하지 마십시오. SQL Server 인스턴스에 연결합니다. 'Data Source = 192.168.254.8, 초기 카탈로그 = 데이터베이스, 사용자 ID = myUsername, 암호 = myPassword, ' –

0

연결 문자열 (MDF 파일을 사용자 인스턴스의 형식으로 사용)에 지정하는 대신 SQL Server 관리 Studio (SSMS)를 사용하여 MDF를 연결해야합니다. 그런 다음 MDF가 아닌 SQL Server에 연결하십시오.

VSF 프로젝트에 보관하는 대신 SQL Server ID가 액세스 할 수있는 위치로 MDF 및 LDF 파일을 이동해야 할 수 있습니다.

대부분의 프로젝트는 VS 프로젝트에서 DB를 작성하지만 이진 MDF 자체에서는 DB를 작성하지 않는 스크립트를 유지합니다.

배포 할 때 프로세스는 비슷합니다. SSMS를 사용하여 서버에 MDF를 연결합니다.

+0

ConnectionString은 어떻게 생겼을 까? –

+0

보통 데이터 소스 = YourServerNameOrIP, 응용 프로그램 이름 = YourAppName, 초기 카탈로그 = YourDBName, 통합 보안 = True' – RickNZ

0

예, 2 대 이상의 컴퓨터가 LAN과 같은 네트워크로 연결된 경우 Visual Studio 연결에서 해당 사용자 이름/암호 /를 입력하여 다른 SQL Server에서 Database1.mdf 데이터베이스에 액세스 할 수 있습니다.

단점 :

보다 7 ~ 8 개 시스템이 동일한 데이터베이스 동시에 시스템 응답 속도가 느려 액세스하고 끊거나 연결 풀과 같은 오류가 초과 될 수 있습니다 또는 장치가 응답하지 않는 경우 .. 큰에서

그들이 사용하는 회사 거대한 멀티 코어 & 더 빠르게 반응하는 멀티 프로세서 기반 서버.

극복 : 응용 프로그램 작성 중 연결 열기 및 닫기 특히 다른 시간에 SQL 쿼리를 실행하는 동안 닫아야합니다.

Best Programer는 일반적인 방법 대신 Transaction을 사용합니다. 트랜잭션은 모든 사용자 액세스 데이터베이스를 유효하고 성공적으로 실행합니다. 이러한 쿼리 (트랜잭션 쿼리)는 주로 클라이언트 컴퓨터에서 실행되며 나중에 주 서버에서 동일한 시간 슬롯 (동기화)이있을 때이를 업데이트합니다.

관련 문제