9

데이터 기반 서비스 기반의 C# Windows 응용 프로그램을 개발하고 있습니다. 내 응용 프로그램을 테스트 할 때 데이터베이스가 잘 작동이다하지만, 게시 및 프로그램하여 SQLConnection을 열려고하면 프로그램을 설치 한 후,이 오류가 나타납니다게시 도중 데이터베이스 파일이 복사되지 않아 설치된 응용 프로그램에서 예외가 발생합니다.

System.Data.SqlClient.SqlException (0x80131904) : 를 연결하려는 시도 C : \ Users \ Behnam \ AppData \ Local \ Apps \ 2.0 \ Data \ 5XVOVXV1.3VG \ M5T04ZK7.QBJ \ tahl..tion_45c3791d6509222d_0001.0000_be1c7cc05811ecf0 \ Data \ AppData \ TahlilGar.mdf 파일의 자동 명명 된 데이터베이스가 실패했습니다. 같은 이름의 데이터베이스가 있거나 지정된 파일을 열 수 없거나 UNC 공유에 있습니다.

<add name="BA" connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\AppData\TahlilGar.mdf; 
Integrated Security=True;"providerName="System.Data.SqlClient" /> 

나는 또한 시도 :

내 ConnectionString을하다 User Instance= True;하지만 결과는 다음과 같습니다

사용자 인스턴스 로그인 플래그가 허용되지 않습니다의 사용자 인스턴스에 연결할 때 SQL 서버. 연결이 닫힙니다.

어떻게이 문제를 해결할 수 있습니까?


편집

: 는 내가 언급 한 경로를 확인하고 내의 .mdf 파일은 없었다. 그래서 나는 그것을 프로젝트에서 복사했고, 그 후에는 잘 작동했다. 이제 예상 경로에 게시 및 설치시 내 mdf 파일이 복사되지 않습니다.

+0

당신이 LocalDB에 사용하는 선택하고 프로젝트에 추가 된 경우에만 데이터베이스 응용 프로그램 파일 대화 상자에 나타납니다 게시하려는 서버? 다른 기계입니까? 적어도 서버에서 SQL Express를 사용한다고 생각합니다. LocalDB는 개발 용입니다. –

+0

프로그램을 개발 한 컴퓨터에 게시 된 응용 프로그램을 설치합니까? 또한 다른 컴퓨터에서 테스트 한 결과 동일한 오류가 다시 나타납니다. – Behnam

+1

이 링크 https://msdn.microsoft.com/en-us/library/kzy0fky2.aspx에는 clickonce 게시를위한 파일 포함 및 제외에 대한 세부 정보가 있습니다. – Kira

답변

1

연결 문자열은 SQL Server Express 인스턴스가 개발 컴퓨터에 사용 된 것을 언급 :

배포 기계가 SQL Server 인스턴스의 전체 버전을 사용하는 가정, 코드에서 자동 데이터베이스 생성 배포에 영향을주지 않습니다
<add name="BA" connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\AppData\TahlilGar.mdf; Integrated Security=True;"providerName="System.Data.SqlClient" /> 

문맥은 User Instance 이후 익스프레스 버전에서만 지원됩니다. (User Instance=True있는 경우 제거)

  1. 사용자 인스턴스의 일부를 제거하여 연결 문자열을 수정 : 여기

    이 문제를 해결하는 단계이다.

  2. aspnet_regsql.exe을 수동으로 실행하여 배포 컴퓨터에 데이터베이스/MDF 파일을 첨부하고 등록하십시오 (아직 수행하지 않은 경우).

  3. 배포 컴퓨터에서 데이터베이스를 SQL Server 인스턴스로 마이그레이션 한 경우 데이터 원본 경로를 변경하고 초기 카탈로그 (예 : DB 이름)를 추가해야합니다.

    <add name="BA" connectionString="Data Source=SERVERNAME;Initial Catalog=TahlilGar;Persist Security Info=True;User ID=DBUserID;Password=DBPassword;Integrated Security=True;"providerName="System.Data.SqlClient" /> 
    

AttachDbFilename=|DataDirectory|\AppData\TahlilGar.mdf 부분은 데이터베이스가 현재 MDF 파일을 첨부 할 인스턴스 부여 적절한 권한을 사용하여 로컬 컴퓨터 및 사용자 계정에 존재하는 경우에 작동합니다.Adam Tuliper에서

추가 참고 :

이 잠재적으로 해당 파일에 대한 액세스 권한을 가지고 있지에서 를 IIS 실행중인 계정 문제입니다.

네트워크 서비스 계정에 대한 해당 폴더에 대한 모든 권한을 할당하십시오.

일시적으로 '모두에게'시도하여 문제가 해결되었는지 확인하고 하고 거기서 거꾸로 작업 할 수 있습니다.

또한 다른 웹 서버에서 사용하지 않도록하십시오 ( 탐색기/sysinternals가 도움을 줄 수 있음).

참고 :

Attempt to attach an auto-named database for .mdf file failed

The user instance login flag is not supported on this version of SQL Server. The connection will be closed

+0

내 프로젝트는 asp.net이 아닌 Windows 양식 응용 프로그램입니다. – Behnam