2011-09-13 1 views
0

MS SQL 데이터베이스를 사용하는 C# Windows 응용 프로그램 (2.0 프레임 워크)을 만들었습니다.
개발하는 동안 MS Visual Studio 2010 및 SQL 2008 MANAGEMENT STUDIO를 사용했습니다. 개발하는 동안
내 연결 문자열은 다음과 같습니다C# Windows 응용 프로그램에서 MS SQL SERVER 2008 R2 EXPRESS를 사용합니까?

SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=SL;Integrated Security=True"); 

모든 것이 잘 작동 ....

가 지금은 클라이언트 시스템에서이 응용 프로그램을 실행합니다.
그래서 클라이언트 시스템에 MS SQL SERVER 2008 EXPRESS가 성공적으로 설치되었습니다.
내 시스템의 SQL 서비스를 중지하고 내 컴퓨터에서 .mdf 및 .ldf 파일을 복사하고 클라이언트의 "c : \ Database \"에 붙여 넣었습니다. 그러나 달리면서 문제가 발생합니다. 내가 여러 번 시도했습니다

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: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)

연결 문자열은 다음과 같습니다 내가 연결 문자열에 User ID=sa;Password=pass 사용하는 경우

SqlConnection con = new SqlConnection("Data Source=.\\MSSQLEXPRESS;Initial Catalog=SL;Integrated Security=True"); 

SqlConnection con = new SqlConnection("Data Source=.\\MSSQLEXPRESS;Initial Catalog=SL;Persist Security Info=True;User ID=sa;Password=pass"); 

SqlConnection con = new SqlConnection("Data Source=.\\MSSQLEXPRESS; AttachDbFilename =C:\\Database\\SL.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"); 

내가 얻을 :

authentication failed for 'sa'

내가 몇 가지 단계를 없거나 뭐하는 거지 잘못된? 제 시스템에서 데이터베이스를 복사 한 후 어떻게해야합니까? C#에서 내 연결 문자열은 어떻게되어야합니까?

감사합니다.

답변

2

데이터베이스를 SQLExpress에 첨부하거나 OSQL을 사용하거나 SQLExpress가있는 PC에 클라이언트 도구를 설치하고 데이터베이스를 연결하는 데 필요한 파일 만 복사했습니다.

0

새 인스턴스 이름이 'MSSQLEXPRESS'입니까?

내 R2 Express 인스턴스는 'SQLEXPRESS'라고합니다 (실제로 이는 installer의 알려진 버그가 원인입니다).

실제로 인스턴스가 있다고 생각하는지 확인하고 싶을 수 있습니다.

+0

예 ... 예 MSSQLEXPRESS. –

1

먼저 Sres' answer을 확인하십시오.
데이터베이스 연결 문자열 (예 : AttachDbFilename)에 연결 문자열로 SQL Server를 지정하지 않은 경우 세 번째 예와 같이 직접 연결해야합니다.

세 개의 연결 문자열 예에 대해서는 모두 특정 상황에서만 작동합니다. connectionstrings.com을 확인하시기 바랍니다. 여기

은 세 개의 연결 문자열, 플러스 그들의 문제의 간단한 설명은 다음과 같습니다

Data Source=.\MSSQLEXPRESS;Initial Catalog=SL;Integrated Security=True

-> 이것은 당신이 응용 프로그램에서 실행되는 현재 Windows 사용자를 사용합니다. 따라서 현재 Windows 사용자는 클라이언트 컴퓨터의 데이터베이스에 대한 사용 권한을 가지고 있어야합니다.

Data Source=.\MSSQLEXPRESS;Initial Catalog=SL;Persist Security Info=True;User ID=sa;Password=pass

은 -> 이것은 특별 'SA'사용자 계정을 사용합니다.

  • Mixed mode authentication는이 작업을 수행하지 않는 경우, 당신은 Windows를위한 인증 및 'SA'를 가지고 (설정해야합니다입니다 : 작업이 위해서는 다음과 같은 전제 조건이 충족되어 있는지 확인해야합니다 SQL Server 인증 사용자 이름)
  • 'sa'의 암호를 지정해야하며 물론 개발 컴퓨터의 암호와 같아야합니다.

하지만이 방법이 최선의 해결책은 아닙니다. 'sa'는 모든 권한을 가진 관리자 계정이므로 관리자 계정을 사용하여 앱과 함께 SQL Server에 액세스하면 안됩니다.
Windows 인증 대신 SQL Server 인증을 사용하려면 응용 프로그램에 필요한 최소한의 필요한 권한으로 새 계정을 만드는 것이 좋습니다.

Data Source=.\MSSQLEXPRESS; AttachDbFilename =C:\Database\SL.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True

- 첫번째 연결 문자열 (현재 Windows 사용자 권한이 있어야합니다)와 같이> 같은 문제. 더하기 User Instance=True을 SQL Server에서 사용하도록 설정해야합니다. connectionstrings.com에서
인용구 : 설치가 내가이 이름을 제공 한

To use the User Instance functionality you need to enable it on the SQL Server. This is done by executing the following command: sp_configure 'user instances enabled', '1'. To disable the functionality execute sp_configure 'user instances enabled', '0'.

관련 문제