Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Получение списка SQL-серверов / 5 сообщений из 5, страница 1 из 1
26.10.2004, 21:32:08
    #32755909
Утюг
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение списка SQL-серверов
Как можно получить список SQL-серверов? Хотелось бы с помощью ADODB.
...
Рейтинг: 0 / 0
26.10.2004, 23:33:38
    #32755947
Magnus23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение списка SQL-серверов
Милейший, поиск по форуму рулит. Эта тема обсуждалась уже не помню сколько раз и в VB и в C# и в куче других форумов.

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


Magnus
...
Рейтинг: 0 / 0
27.10.2004, 12:43:16
    #32756743
ziktuw
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение списка SQL-серверов
Через 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
27.10.2004, 15:11:13
    #32757272
Утюг
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение списка SQL-серверов
Спасибо, единственно не устраивает, что локальный сервер определяется именно как local, а не по имени. Никак нельзя обойти?
...
Рейтинг: 0 / 0
27.10.2004, 17:29:49
    #32757715
ziktuw
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение списка SQL-серверов
Заведи алиас к нему. Будет кроме local еще и алиас в списке.

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

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


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