2011-07-02 2 views
1

나는 충돌 볼 수있는 몇 가지 문서를 읽을 : 이 게시물은 다중 사용자 환경에서 사용할 수 없다는 : http://www.pluralsight-training.net/community/blogs/jimw/archive/2007/02/18/46141.aspxSQL CE 다중 사용자입니까?

위키 백과는 말한다 : SQL의 CE 런타임은하여 .sdf 파일에 대한 동시 다중 사용자 액세스를 중재한다.

어느 쪽이 맞습니까?

내 시나리오는 다음과 같습니다. WPF에서 데이터베이스 응용 프로그램을 작성하고 LINQ to SQL을 사용하고 싶습니다. 이미 SQL Access 데이터베이스로 가져와야하는 데이터가있는 MS Access Database가 있습니다.

Access 데이터베이스 (MDB)를 데이터베이스 엔진으로 사용해도 괜찮지 만 LINQ to SQL은 Access 데이터베이스에서 작동하지 않는다는 것을 알고 있습니다. 그렇다면 SQL CE

두 명 이상의 사용자가 네트워크를 통해 응용 프로그램을 열고 작업 할 수 있습니다. 따라서 두 명 이상의 사용자가 데이터베이스를 열고 다른 레코드에 쓰면 충돌이 발생하지 않도록하는 방법이 필요합니다. 이 시나리오에 가장 적합한 옵션은 무엇입니까?

답변

5

SQL Server Compact는 여러 개의 연결을 지원하지만 동일한 OS 세션에서만 사용할 수 있으므로 네트워크를 통해서는 지원되지 않습니다. 따라서 같은 컴퓨터에서 실행되는 서비스와 데스크톱 응용 프로그램 및 웹 응용 프로그램은 모두 동시에 데이터베이스에 액세스 할 수 있습니다.

+0

감사합니다. 나는 이것이 네트워크를 통해 실행될 수있는 응용 프로그램을 가지고 두 명 (또는 그 이상)의 사람들이 동일한 데이터베이스에 액세스 할 수있는 경우 충돌이 발생한다는 것을 의미합니다. 내 경우에는 각 사람이 동시에 한 기록에 쓸 수 있습니다. – mans

+0

크래시가 발생하지 않으며 단순히 불가능합니다 (오류 메시지가 표시됨) – ErikEJ

0

다른 사용자가 데이터를 검색하거나 편집하려고 할 때 문제가 발생합니다. 캐시 '시도'할 수 있습니다.

1: 
    try 
     Me.xxxTableAdapter.FillBy (Me.xxxiDataSet.xxx, xxxToolStripTextBox.Text) 
    Catch ex As System.Exception 
     GoTo 1// at the time when the database is in use will be the exception and retry the program will perform the operation without a message. 
    end Try 

이 솔루션은 전문가가 아니지만 작동 할 수 있습니다. 솔루션은 우리 프로그램이 이미 SQL Compact 3.5에서 작성되었으며 다른 사용자 (LAN)와 리소스를 공유하려는 경우에 유용합니다.

감사합니다.