VB2010: подключение к SQL Server 2008 - PullRequest
1 голос
/ 05 ноября 2011

У меня есть база данных на SQL Server 2008, и я пытаюсь запустить код на Visual Basic 2010 для подключения к ней. У меня есть следующий код, но я получаю сообщение об ошибке 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) в строке SQLConn.Open():

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 и знаю, что имя сервера \ экземпляра и базы данных указаны правильно. Не уверен, почему он не работает под VB.NET 2010.

Ответы [ 2 ]

1 голос
/ 05 ноября 2011

Первый шаг - установка «Студия управления 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

для имени сервера, используйте имя, которое работало для подключения к Server Management Studio, то же самое с логином и паролем. База данных = та, которую вы видите при подключении.

А если вы используете учетные данные Windows, вы можете оставить имя IntegratedSecurity. Но я полагаю, что для программ имеет смысл быть немного более независимым, поэтому просто настройте обычную учетную запись SQL.

0 голосов
/ 05 ноября 2011

Возможные причины:

1) Имя сервера базы данных не MySQLServer.Если это ваш локальный компьютер, измените его на.или (локально) или имя вашего компьютера.

2) Либо SQL Server не запущен в экземпляре, либо экземпляр не называется MyInstance.

3) Служба SQL Server нена самом деле работает.Попробуйте запустить его.

4) SQL Server отделен от компьютера, на котором выполняется этот код, брандмауэром, который не пропускает трафик SQL.

Обновление:

5) Локальная сетевая служебная программа клиента SQL Server либо не настроена для поддержки протоколов, используемых SQL Server, либо имеет старый псевдоним, указывающий на неправильный компьютер или адрес.Чтобы открыть эту утилиту, вы можете запустить cliconfg из командной строки Run ... или командной строки.

Обновление 2:

Эта запись в блоге имеет отличное объяснение, как именно решить эту конкретную проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...