Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Sql серверы / 22 сообщений из 22, страница 1 из 1
17.03.2004, 15:00
    #32445551
sharper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sql серверы
Добрый день!
Как можно получить список SQL серверов в сети.
...
Рейтинг: 0 / 0
17.03.2004, 15:04
    #32445565
Magnus23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sql серверы
Пользуй SQLDМО обьект, лежит в папке сервера.

Magnus
...
Рейтинг: 0 / 0
17.03.2004, 15:05
    #32445568
Eyeless
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sql серверы
Сысылаешься в проете на SQLDMO.dll
добавляешь в проект
Код: plaintext
using SQLDMO

затем вот так:
Код: plaintext
1.
SQLDMO.ApplicationClass app = new ApplicationClass();
       SQLDMO.NameList servers = app.ListAvailableSQLServers();

Дальше присоединяешься ко мне в борьбе с System.InvalidCastException.
(Смотри тему SQLDMO)
...
Рейтинг: 0 / 0
17.03.2004, 16:16
    #32445772
sharper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sql серверы
Все так и сделал, только вот опять выдает sqlApp.SQLServers.Count = 0,
а у меня их целых СЕМЬ штук в одной группе :((
...
Рейтинг: 0 / 0
17.03.2004, 16:47
    #32445853
Eyeless
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sql серверы
Код покажешь?
...
Рейтинг: 0 / 0
17.03.2004, 18:02
    #32446037
sharper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sql серверы
Да короче элементарный код:

если писать так
SQLDMO.ApplicationClass sqlAppl = new SQLDMO.ApplicationClass();
SQLDMO.NameList sqlServers = sqlAppl.ListAvailableSQLServers();

то на 2 строчке выдает "QueryInterface for interface SQLDMO.NameList failed."

а если взять sqlAppl.SQLServers.Count, то дает ноль
...
Рейтинг: 0 / 0
19.03.2004, 14:18
    #32449317
Eyeless
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sql серверы
Нашел как все это борется:
Во-первых с QueryInterface Failed он обваливается в старой версии этого СОМа. Надо патчиться. А список серверов можно получить, если у тебя правильно прописаны их алиасы в Client Network Utility.

Я бы изменил мир, но бог не дает исходники...
...
Рейтинг: 0 / 0
19.03.2004, 14:38
    #32449381
Eyeless
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sql серверы
Если есть желание, могу подорить работающий SQLDMO.dll


Я бы изменил мир, но бог не дает исходники...
...
Рейтинг: 0 / 0
19.03.2004, 15:31
    #32449536
sharper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sql серверы
Давай, раз такое дело :)
пришли на magomedov@front.ru
Заранее благодарю!
...
Рейтинг: 0 / 0
20.03.2004, 00:21
    #32450095
Artur Muradian
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sql серверы
Привет Коллеги.

У меня тоже точно такая проблемма.
Пожалуйста поделитесь с работающей SQLDМО.
e-mail: m_artur@web.am

Спасибо.
...
Рейтинг: 0 / 0
22.03.2004, 12:20
    #32451163
avg
avg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sql серверы
Вот здесь

http://www.codeproject.com/csharp/servercombobox.asp

есть отличный код для получения списка SQL серверов (и нетолько SQL) без использования DMO
...
Рейтинг: 0 / 0
22.03.2004, 23:56
    #32452146
Artur Muradian
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sql серверы
Спасибо за ссылку avg.
Но у меня проблема не только с получением списка серверов, так что нужна SQLDMO.
...
Рейтинг: 0 / 0
23.03.2004, 11:49
    #32452749
avg
avg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sql серверы
У каждого свои проблемы :)

Вот только если есть сервер, если есть к нему доступ (имеется в виду БД master) - то можно сделать все, что умеет SQLDMO и ещё гораздо больше -средствами TSQL.
...
Рейтинг: 0 / 0
26.03.2004, 11:17
    #32458131
Eyeless
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sql серверы
Краткий экскурс в SQLDMO:

Получение списка серверов:

Код: plaintext
1.
SQLDMO.Application m_App = new SQLDMO.ApplicationClass();
         SQLDMO.NameList m_List = m_App.ListAvailableSQLServers();


Доступ к списку серверов через NameList.Item(int a);
Эта коллекция индексируется с 1.

Список БД через интерфейс _Database;

При подключении к SQL-серверу, если нет желания передавать логин и пароль,
следует использовать примерно такой код:

Код: plaintext
1.
2.
3.
SQLServer2 m_Serv = new SQLServer2Class();
[color=red]m_Serv.LoginSecure = true;[/color]
         m_Serv.Connect(myserver, null [это логин], null [это пароль]);




Я бы изменил мир, но бог не дает исходники...
...
Рейтинг: 0 / 0
26.03.2004, 16:04
    #32458883
Magnus23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sql серверы
В соседнем топике уже отрапортовались, дополню и здесь картину.
SQLDMO имеет ряд встроенных багов.
Один из них выпадает при попытках получить список серверов.
Лечение> установка SP3 на сервер.
Проверено, работает.

Magnus
...
Рейтинг: 0 / 0
27.03.2004, 11:31
    #32459442
avg
avg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sql серверы
авторЛечение> установка SP3 на сервер.
Проверено, работает.
Ага, у меня в сети порядка 10 серверов и только половина из них под 3 сервис паком. Остальные (по разным причинам, иногда оправданным) под 2 и обновлятся в ближайшее время не будут. Да и не разработчика ПО это дело сервера обновлять, на это DBA имеются. А если у всех клиентов еще и вместо DBA сервис паки накатывать...
...
Рейтинг: 0 / 0
27.03.2004, 17:56
    #32459596
Magnus23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sql серверы
СП3 нужен на машине которая опрашивает. На остальных не обязательно

Magnus
...
Рейтинг: 0 / 0
29.03.2004, 10:08
    #32460162
avg
avg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sql серверы
авторСП3 нужен на машине которая опрашивает. На остальных не обязательно

Я не понял (серьезно) - для возможности получения списка серверов с использованием SQLDMO в своем клиентском приложении я должен установить на клиента SQL сервер (даже если только clients tools) и облить его (их) 3 сервис паком ???
...
Рейтинг: 0 / 0
29.03.2004, 16:01
    #32460977
Magnus23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sql серверы
Собственно тебе нужен только SQLDMO из третьего сервис пака.
Этим обьектом пользуется сам сиквел для собственных телодвижений.

Кстати, вот только что накопал код, который делает тоже самое но сам в себе, без SQLDMO.
Он на VBNET но думаю не составит труда конвертануть.
Код: 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.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
Public Structure ServerInfo
Friend ServerName As String
Friend InstanceName As String
Friend IsClustered As Boolean
Friend Version As String
Friend TCPPort As Long
Friend IPAddress As String
End Structure

Public Sub Start()
Dim objSQLServers() As ServerInfo = EnumSQLServer()
End Sub

Friend Function EnumSQLServer() As ServerInfo()
Dim objUDPClient As New System.Net.Sockets.UdpClient
Dim objRemoteIP As System.Net.IPEndPoint
Dim objAllServers() As ServerInfo
Dim bytData() As Byte = { 2 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,
 0 ,  0 ,  0 ,  0 }
Dim bytReceived() As Byte
Dim strInfo() As String
Dim strHostHeaders() As String
Dim booDone As Boolean = False
Dim i As Long
Dim x As Int16

ReDim strHostHeaders( 0 )
objUDPClient.Send(bytData,  18 , "255.255.255.255", "1434")
While booDone = False
Try
bytReceived = objUDPClient.Receive(objRemoteIP)
Catch
booDone = True
Exit While
End Try
If strHostHeaders(strHostHeaders.Length -  1 ) <> "" Then
ReDim Preserve strHostHeaders(strHostHeaders.Length)
End If
strHostHeaders(strHostHeaders.Length -  1 ) =
Mid(System.Text.ASCIIEncoding.ASCII.GetString(bytReceived),  4 )
strHostHeaders(strHostHeaders.Length -  1 ) &= ";IPADDRESS;" &
objRemoteIP.Serialize.Item( 4 ).ToString & "." &
objRemoteIP.Serialize.Item( 5 ).ToString & "." &
objRemoteIP.Serialize.Item( 6 ).ToString & "." &
objRemoteIP.Serialize.Item( 7 ).ToString
If strHostHeaders.Length >  1  Then
If strHostHeaders(strHostHeaders.Length -  1 ) =
strHostHeaders(strHostHeaders.Length -  2 ) Then ReDim Preserve
strHostHeaders(strHostHeaders.Length -  2 )
End If
End While
objUDPClient.Close()
objUDPClient = Nothing

ReDim objAllServers(strHostHeaders.Length -  1 )
For i =  0  To strHostHeaders.Length -  1 
strInfo = Split(strHostHeaders(i), ";")
For x =  0  To strInfo.Length -  1 
Select Case LCase(strInfo(x))
Case "servername"
objAllServers(i).ServerName = strInfo(x +  1 )
Case "instancename"
objAllServers(i).InstanceName = strInfo(x +  1 )
Case "isclustered"
objAllServers(i).IsClustered = IIf(LCase(strInfo(x +
 1 )) = "no", False, True)
Case "version"
objAllServers(i).Version = strInfo(x +  1 )
Case "tcp"
objAllServers(i).TCPPort = CLng(strInfo(x +  1 ))
Case "ipaddress"
objAllServers(i).IPAddress = strInfo(x +  1 )
End Select
Next
Next
Return objAllServers
End Function


Magnus
...
Рейтинг: 0 / 0
29.03.2004, 16:14
    #32461010
Crip
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sql серверы
Для sqldmo есть соответствующий merge module. Вот его и нужно ставить клиентам, при условии, что дистрибутив использует Windows Installer.
...
Рейтинг: 0 / 0
29.03.2004, 16:17
    #32461018
Magnus23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sql серверы
Можно еще через АПИ, как вариант.

Magnus
...
Рейтинг: 0 / 0
29.03.2004, 18:29
    #32461335
avg
avg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sql серверы
Понятно.

По ссылке, что я приводил выше:

http://www.codeproject.com/csharp/servercombobox.asp

как раз через NetAPI и получают список, причем не только SQL серверов, но и рабочих станций, контроллеров домена и т.д.
А этот код на VB тоже очень интересный. Надо будет попробовать!
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Sql серверы / 22 сообщений из 22, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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