2011-11-05 3 views
1

SQL Server 2008에 데이터베이스가 있으며 Visual Basic 2010에서 코드를 실행하여 연결하려고합니다. 나는 다음과 같은 코드를 가지고 있지만 라인 SQLConn.Open()에 오류 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)을 얻고있다 :VB2010 : SQL Server 2008에 연결

Imports System.Data 
Imports System.Data.SqlClient 

Public Class Form1 

    Dim SQLConn As SqlClient.SqlConnection 

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click 
     Dim i As Integer 
     Dim connectionstring As String 
     connectionstring = "Data Source=MySQLServer\MyInstance;Database=MyDatabase;Integrated Security=true;" 

     Try 
      SQLConn = New SqlConnection(connectionstring) 
      SQLConn.Open() 
     Catch ex As Exception 
      MsgBox(ex.Message & " Error Connecting to database!", MsgBoxStyle.Critical) 
      Exit Sub 
     End Try 
     Dim da As SqlDataAdapter 
     da = New SqlDataAdapter("SELECT * from DR_Users", SQLConn) 
     Dim dt As DataTable 
     da.Fill(dt) 
     For i = 0 To dt.Rows.Count - 1 
      Dim dr As DataRow = dt.Rows(i) 
      Debug.Print(dr.Item("UserId").ToString) 
     Next 

    End Sub 
End Class 

편집 : 나는 VBA 코드에 노력하고있다 서버 \ 인스턴스를 알고 데이터베이스 이름이 올바른지 확인합니다.

1) 데이터베이스 서버의 이름은 MySQLServer되지 않습니다 : 그것은 VB.NET에서 2010 년

+0

동료가 작업 한 VB.NET 2010 솔루션을 복사했습니다. 나는 그의 PC에서 테스트를했고 잘 작동했다. 그의 SQL Server 2008 데이터베이스에 액세스 할 수 있고 첫 번째 TableAdapter.Fill 문에서 동일한 오류 메시지가 나타납니다. 데이터 원본 창을 통해 연결할 수 있으며 문제없이 디자인 모드에서 레코드를 미리 볼 수 있지만 한 번 준수하면 레코드를 볼 수 없습니다. 깨끗한 Visual Studio Ultimate 설치를 수행해야합니까? 아니면 패치/핫픽스가 있습니까? – Rick

+0

Visual Studio 2010 제거 유틸리티를 실행하고 다시 설치했지만 여전히 동일한 메시지가 나타납니다. – Rick

답변

0

가능한 원인 작동하지 않는 이유는 확실하지. 로컬 시스템 인 경우 이것을로 변경하십시오. 또는 (지역) 또는 기계의 이름.

2) 인스턴스에서 SQL Server가 실행되고 있지 않거나 인스턴스의 이름이 MyInstance가 아닙니다.

3) SQL Server 서비스가 실제로 실행되고 있지 않습니다. 시작해보십시오.

4) SQL 트래픽은 통과시키지 않는 방화벽에 의해이 코드를 실행하는 컴퓨터에서 SQL Server가 분리됩니다.

5) 로컬 SQL Server 클라이언트 네트워크 유틸리티 중 하나는 SQL Server가 않습니다 또는 잘못된 기계 또는 주소를 가리키는 오래된 별명을 가지고있는 프로토콜을 지원하도록 구성되지 않은 : 업데이트

. 이 유틸리티를 열려면 실행 ... 프롬프트 또는 명령 줄에서 cliconfg를 실행할 수 있습니다.

업데이트 2 :

This blog entry이 특정 문제를 해결하는 방법을 정확하게의 훌륭한 설명이 있습니다.

+0

VBA 코드 (ADO)를 사용하여 여러 번 SQL Server 2008 R2에 연결되어 있습니다. 나는 SQL 서버 이름 \ 인스턴스와 데이터베이스를 확신한다. Visual Basic 2010과 연결할 수없는 이유를 잘 모릅니다. 서버가 실행 중이며 Microsoft SQL Server Management Studio를 통해 연결할 수 있습니다. – Rick

+0

추가 답변으로 업데이트되었습니다. –

+0

방화벽이 꺼져 있고 작동하는 네트워크에있는 다른 SQL Server에 연결을 시도하고 있으며 VB.NET에서 제공된 코드를 제외한 다른 방법으로 연결할 수 있습니다. – Rick

1

첫 번째 단계는 "SQL Server 관리 스튜디오"를 설치하는 것입니다. SQL 서버에 연결할 수 있으면 서버에 액세스 할 수 있다는 것을 알고 있습니다. 그렇지 않으면 연결 문자열에 대해

..., 방화벽을 해결 등의 SQL 서버를 시작해야합니다 내가 "구축"하는 것을 선호 그것은 온 - 더 - 플라이 너무 당신을 위해 작동 어쩌면,

Public Property ServerName() As String 
    Public Property DatabaseName() As String 
    Public Property Login() As String 
    Public Property Password() As String 

    Private Function SqlConn(Optional timeout As Integer = 0) As String 
    ' Initialize the connection string builder for the 
    ' underlying provider. 
    Dim sqlBuilder As New SqlClient.SqlConnectionStringBuilder() 

    ' Set the properties for the data source. 
    sqlBuilder.DataSource = _serverName 
    sqlBuilder.InitialCatalog = _databaseName 
    sqlBuilder.IntegratedSecurity = False 
    sqlBuilder.MultipleActiveResultSets = True 'to avoid exception if a query uses anothe rquery internal 

    sqlBuilder.UserID = _Login 
    sqlBuilder.Password = _Password 
    If timeout > 0 Then 
     sqlBuilder.ConnectTimeout = timeout 
    End If 

    Return sqlBuilder.ToString 
    End Function 

그래서 당신은 로그인 및 비밀번호와 같은 서버 관리 스튜디오와 연결하기 위해 노력 이름을 사용하여 서버 이름

Using sqlConn As New SqlClient.SqlConnection(sqlConnString) 
    sqlConn.Open() 
     [...] 
    sqlConn.Close() 
End Using 

를 작성할 수 있습니다. 데이터베이스 = 연결되었을 때 볼 수있는 데이터베이스.

그리고 Windows 자격 증명을 사용하는 경우 통합 보안을 유지할 수 있습니다. 하지만 프로그램에 대해 좀 더 독립적 인 느낌이 들기 때문에 일반적인 SQL 로그인 만 설정하면됩니다.

+0

Windows> 혼합 모드 인증 일반적으로 SA 암호를 변경하거나 계정을 완전히 비활성화하는 것을 잊지 않으므로 –

+0

SQL Server 2008이 별도로 있으며 VBA 코드를 사용하여 잘 연결할 수 있습니다. – Rick

+0

VBA에 대한 많은 경험이 없지만 VBA와 VB.Net간에 연결 문자열이 다른 것처럼 보입니다. [다른 방법] 시도 할 수 있습니다 (http://geekswithblogs.net). /darrengosbell/archive/2006/11/05/96166.aspx)를 사용하여 연결 문자열을 만들고 그 방법으로 작동하는지 테스트합니다. – Amegon

관련 문제