powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Получение списка SQL-серверов
5 сообщений из 5, страница 1 из 1
Получение списка SQL-серверов
    #32755909
Утюг
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как можно получить список SQL-серверов? Хотелось бы с помощью ADODB.
...
Рейтинг: 0 / 0
Получение списка SQL-серверов
    #32755947
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Милейший, поиск по форуму рулит. Эта тема обсуждалась уже не помню сколько раз и в VB и в C# и в куче других форумов.

Уважайте чужое время и люди к вам потянутся.


Magnus
...
Рейтинг: 0 / 0
Получение списка SQL-серверов
    #32756743
Фотография ziktuw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Через ADO - никак, нету у него таких методов.

Если через SQL-DMO не хочется связываться по причине его тормознутости, бажности или просто отсутствия, есть вариант через ODBC (ODBC всегда есть, когда есть ADO, т.е. когда установлен MDAC)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
Option Explicit

Private Const SQL_HANDLE_DBC As Integer =  2 
Private Const SQL_SUCCESS As Integer =  0 
Private Const SQL_SUCCESS_WITH_INFO As Integer =  1 

Private Declare Function SQLAllocEnv Lib "odbc32.dll" (ByRef phenv As Long) As Integer
Private Declare Function SQLAllocHandle Lib "odbc32.dll" (ByVal hType As Integer, ByVal hInput As Long, ByRef phOutput As Long) As Integer
Private Declare Function SQLBrowseConnect Lib "odbc32.dll" (ByVal hDbc As Long, ByVal szConnStrIn As String, ByVal cbConnStrIn As Integer, ByVal szConnStrOut As String, ByVal cbConnStrOutMax As Integer, ByRef pcbconnstrout As Integer) As Integer
Private Declare Function SQLDisconnect Lib "odbc32.dll" (ByVal hDbc As Long) As Integer
Private Declare Function SQLFreeConnect Lib "odbc32.dll" (ByVal hDbc As Long) As Integer
Private Declare Function SQLFreeEnv Lib "odbc32.dll" (ByVal hEnv As Long) As Integer

Public Function GetSQLServersArray() As Variant ' array of strings indeed
   GetSQLServersArray = Split(GetSQLServersCommaList, ",")
End Function

Private Function GetSQLServersCommaList() As String
  Const ODBC_ERR_MSG = "Failed ODBC call. Possible, you need reinstall the latest MDAC"

  Dim retCode As Integer
  Dim hDbc As Long
  Dim hEnv As Long
  Dim strCon As String
  Dim strOutCon As String
  Dim intConLenOut As Integer
  Dim lngPz1 As Long
  Dim lngPz2 As Long
  
  strCon = "DRIVER={SQL Server};"
  strOutCon = Space$( 10000 )
  retCode = SQLAllocEnv(hEnv)
  If retCode <> SQL_SUCCESS And retCode <> SQL_SUCCESS_WITH_INFO Then
     MsgBox ODBC_ERR_MSG
     Exit Function
  End If
  retCode = SQLAllocHandle(SQL_HANDLE_DBC, hEnv, hDbc)
  If retCode <> SQL_SUCCESS And retCode <> SQL_SUCCESS_WITH_INFO Then
     MsgBox ODBC_ERR_MSG
     Exit Function
  End If
  retCode = SQLBrowseConnect(hDbc, strCon, Len(strCon), strOutCon, Len(strOutCon) +  2 , intConLenOut)
  strOutCon = Left$(strOutCon, intConLenOut)
  lngPz1 = InStr(strOutCon, "Server={")
  If lngPz1 >  0  Then
     lngPz1 = lngPz1 +  8 
     lngPz2 = InStr(strOutCon, "}")
     If lngPz2 > lngPz1 Then
        GetSQLServersCommaList = Mid$(strOutCon, lngPz1, lngPz2 - lngPz1)
     End If
  End If
  retCode = SQLDisconnect(hDbc)
  retCode = SQLFreeConnect(hDbc)
  retCode = SQLFreeEnv(hEnv)
End Function

Код: plaintext
1.
 _________
Свет в конце тоннеля временно потушен по техническим причинам. 
...
Рейтинг: 0 / 0
Получение списка SQL-серверов
    #32757272
Утюг
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, единственно не устраивает, что локальный сервер определяется именно как local, а не по имени. Никак нельзя обойти?
...
Рейтинг: 0 / 0
Получение списка SQL-серверов
    #32757715
Фотография ziktuw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Заведи алиас к нему. Будет кроме local еще и алиас в списке.

Кстати, (local) в строку соединения ADO прекрасно прописывается, поэтому нет нужды его заменять родным именем.

Код: plaintext
1.
 _________
Свет в конце тоннеля временно потушен по техническим причинам. 
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Получение списка SQL-серверов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]