2013-05-19 3 views
3

SQL Server 데이터베이스 연결을 사용하는 C#으로 Windows Form 응용 프로그램을 개발했습니다. 나는 .NET Framework 4.0과 SQL Server 2008 R2에서 그것을 개발했다. 내 응용 프로그램은 AG.mdf이라는 응용 프로그램의 루트 디렉토리에있는 로컬 데이터베이스를 사용하고 있습니다.C# 클라이언트의 시스템에서 데이터베이스가 실행되지 않는 Windows Form 응용 프로그램

이 내 연결 문자열입니다

Data Source=.;AttachDbFilename=|DataDirectory|\\AG.mdf;Integrated  Security=True;User Instance=True 

내가 내 응용 프로그램에서 새 프로젝트로 Visual Studio를 설치 템플릿 내부에 설치 프로젝트를 추가하여 설치 프로그램을 만들었습니다. 설치 프로젝트를 빌드하고 설치 프로그램을 만들었습니다. 내 사용자의 시스템에 응용 프로그램을 배포 응용 프로그램이 처음 시작하지만 갑자기 오류를

Unhandled exception has occurred in your application. If you click continue, the application will ignore this message and attempt to continue. If you click quit, the application will close immediately.

A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)

P.S 팝업 : 나뿐만 아니라 내 사용자의 시스템에 .NET 프레임 워크 4.0의 SQL Server Compact Edition을 설치 한!

내가 프로그래밍을 종료해야 :. 난 당신이 익스프레스 에디션과를 얻는 것 같아요 '(

+3

프로그래밍을 종료하지 마십시오. – rptwsthi

+0

클라이언트 시스템에서 AttachDbFileName = 접근법을 사용하여 SQL Server 데이터베이스를 사용하는 경우 - 클라이언트에 ** SQL Server Express **가 설치되어 있습니까? –

+0

@marc_s 아니요, 클라이언트 컴퓨터에 SQL Server Express가 설치되어 있지 않지만 SQL Compact가 설치되어 있습니다. – sohaiby

답변

1

도와 주셔서 감사합니다 많이 모두 다음 DataDirectory를 설정하는 방법

작은 예. 나는이 문제를 혼자서 해결했다. 내 유일한 관심사는 클라이언트의 컴퓨터에 SQL Server를 설치하는 것이었지만 나중에는 응용 프로그램을 실행하기 위해 클라이언트 시스템에 데이터베이스 관리 도구 (SQL Server)를 설치해야한다는 것을 깨달았습니다. 또한

Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\AG.mdf;Database=AG;Integrated Security=True;User Instance=True;Trusted_Connection=Yes

을 다음과 같이
는 그러므로, 나는 나 또한 포함 된 폴더에 허용 모든 권한을 준, 클라이언트 컴퓨터에 SQL Server Express를 설치하고 내 조금 쿼리 문자열 변경 내 응용 프로그램의 닷넷 프레임 워크가 배포 된 .mdf 데이터베이스에 액세스 할 수 있도록 배포 된 응용 프로그램
해피 코딩! :)

2

를 압축 판 혼란, 그들은 정말 아주 다르다

컴팩트 에디션은 SDF 데이터베이스 파일을 소요, 그리고 임베디드 데이터베이스가 아닌 별도의 서버입니다. MDF와는 직접적으로 작동하지 않을 것이라고 생각합니다. export an MDF to an SDF 수 있습니다.

SQLCE는 사용자 인스턴스, 통합 보안 또는 데이터베이스 첨부 ents. 데이터 소스 섹션에서 직접 SDF 파일에 대한 경로가 필요할 것이라고 생각하지만 이되어야합니다.은 MDF가 아닌 SDF입니다.

기본적으로 Compact Edition을 설치하는 것처럼 보이지만 전체/익스프레스 버전에는 연결 문자열과 데이터 파일을 사용하는 것처럼 보이므로 작동하지 않을 수 있습니다.

+0

당신이 맞을 것 같네요. SQL Server 2008 R2를 사용하여 응용 프로그램을 개발했지만 클라이언트 컴퓨터에서 작동하지 않았기 때문에 문제를 검색하여 클라이언트 컴퓨터에 SQLCE를 설치하여 프로그램을 실행하고 아무 것도 변경하지 않고 결과를 얻었습니다 내 프로그램. 연결 문자열과 .mdf 데이터베이스는 모두 SQL Server 유형입니다. 하지만 질문은 지금 무엇을해야합니까? : – sohaiby

0

"DataDirectory | \ AG.mdf"는 데이터 디렉토리에서 DB를 볼 필요가 있지만 응용 프로그램의 루트 폴더에서는 볼 필요가 없음을 의미합니다.

AppDomain.CurrentDomain.SetData("DataDirectory", AppDomain.CurrentDomain.BaseDirectory + "DB"); 
+0

그래서 지금 어떻게해야합니까? 배포 된 응용 프로그램의 루트 디렉토리에있는 데이터베이스를 가리키는 방법 – sohaiby

+0

위의 코드 예제에서 "DB"부분을 삭제하거나 폴더 DB를 만들고 db 파일을 저장합니다 폴더에 넣습니다. –

관련 문제