|
|
|
Доступные SQL-сервера
|
|||
|---|---|---|---|
|
#18+
Нужно просканировать локалку на доступные SQL-сервера. Как ента реализовать? Буду очь признателен за подсказку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2003, 04:55:09 |
|
||
|
Доступные SQL-сервера
|
|||
|---|---|---|---|
|
#18+
Например, через SQLDMO. Включаешь в проект ссылку на Microsoft SQLDMO Object Library и... (с использованием листбокса) Dim i As Integer Dim CountSQL As Integer Dim Sql As SQLDMO.Application Set Sql = New SQLDMO.Application CountSQL = Sql.ListAvailableSQLServers.Count MsgBox "Найдено " & CStr(CountSQL) & " SQL серверов." For i = 1 To CountSQL List1.AddItem Sql.ListAvailableSQLServers.Item(i) Next i ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2003, 07:40:51 |
|
||
|
Доступные SQL-сервера
|
|||
|---|---|---|---|
|
#18+
/topic/30639&hl=%f1%ef%e8%f1%ee%ea ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2003, 08:38:52 |
|
||
|
Доступные SQL-сервера
|
|||
|---|---|---|---|
|
#18+
Огромный спасиб tpg и Shkurenko Alexander за ответы, очь пригодилось... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2003, 09:21:42 |
|
||
|
Доступные SQL-сервера
|
|||
|---|---|---|---|
|
#18+
2 tpg да пользовался dmo неоднократно (например, определение имеющися баз на сервере, объектов в базе и тд. и тп.), но до этого чего нехватило... документации по dmo 0, всё методом тыка... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2003, 09:26:21 |
|
||
|
Доступные SQL-сервера
|
|||
|---|---|---|---|
|
#18+
Вот так будет раз в 20 пошустрее Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2003, 09:28:13 |
|
||
|
Доступные SQL-сервера
|
|||
|---|---|---|---|
|
#18+
Да что такое (что то туплю сегодня) - так ещё чуть-чуть пошустрее Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2003, 09:35:08 |
|
||
|
Доступные SQL-сервера
|
|||
|---|---|---|---|
|
#18+
Был этот пример иль не был - но SQLDMO не нужно (и не на всяком клиенте он есть) - only API Код: 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. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. Правда этот пример Сайбейсовские сервера за мс скульные считает - хотя все они из одной п... родом. Возможно и еще что нить прихватит (оракл какой нибудь) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2003, 09:40:42 |
|
||
|
Доступные SQL-сервера
|
|||
|---|---|---|---|
|
#18+
2 tpg а такой цикл будет быстрее? Dim Sql As SQLDMO.Application Dim Srv As SQLDMO.NameList Set Sql = New SQLDMO.Application Set Srv = Sql.ListAvailableSQLServers For Each i in srv List1.AddItem i Next i ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2003, 09:45:10 |
|
||
|
Доступные SQL-сервера
|
|||
|---|---|---|---|
|
#18+
У меня (думаю из-за вариантного типа i) получилось на 0,01мс медленнее чем в предыдущем примере. Вообще то основной тормоз происходит в строке Set Srv = Sql.ListAvailableSQLServers ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2003, 10:13:08 |
|
||
|
Доступные SQL-сервера
|
|||
|---|---|---|---|
|
#18+
2 Senin Viktor да нету у меня других серверов в локалке акромя sql. А скорость (в сравнении с dmo)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2003, 10:16:44 |
|
||
|
Доступные SQL-сервера
|
|||
|---|---|---|---|
|
#18+
>А скорость (в сравнении с dmo)? Думаю, API будет гораздо быстрей. Проверить легко же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2003, 10:24:18 |
|
||
|
Доступные SQL-сервера
|
|||
|---|---|---|---|
|
#18+
ну лана..... спасибки, вы - настоящие други.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2003, 10:38:59 |
|
||
|
Доступные SQL-сервера
|
|||
|---|---|---|---|
|
#18+
SQL-DMO работаел лучше всего(корректней), едиснтвенный минус библиотеку с собой таскать :-(. API NetServerEnum не работает в Win9x :-( да и наименование ие оного не определяет (пр. comp01\TestSerever - выдаст результат comp01). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2003, 13:46:59 |
|
||
|
Доступные SQL-сервера
|
|||
|---|---|---|---|
|
#18+
>SQL-DMO работаел лучше всего(корректней, А не на основе ли то же айпи функции она и работает? Код: plaintext 1. 2. 3. 4. 5. 6. source: //ms-help://MS.MSDNQTR.2003OCT.1033/oledbsql/9_ole_34_3tma.htm >да и наименование ие оного не определяет (пр. comp01\TestSerever - выдаст результат comp01). как и SQLDMO ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2003, 14:11:45 |
|
||
|
Доступные SQL-сервера
|
|||
|---|---|---|---|
|
#18+
Все уже решили, ну и я свои 7 копеек вставлю с вашего позволения: Код: plaintext 1. 2. В счетчике "i" не нужно. Next и без него работает, даже быстрее :). Как обычно - борьба за миллисекунды :). Magnus ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2003, 14:30:35 |
|
||
|
Доступные SQL-сервера
|
|||
|---|---|---|---|
|
#18+
2 Senin Viktor Пасибо за уточнение. >> да и наименование ие оного не определяет (пр. comp01\TestSerever - выдаст результат comp01) > как и SQLDMO получить имена SQL Servers мне удалось только с помощью SQL-DMO, кстати его же использует Query Analyzer - диалог Connect to SQL Server-> кнопочка ... . Ну а при использовании NetServerEnum только имена компьютеров. Может попробуешь получить имена, с помощью NetServerEnum, а то вдруг я какую-нибудь мелочь пропустил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2003, 16:25:02 |
|
||
|
Доступные SQL-сервера
|
|||
|---|---|---|---|
|
#18+
2Shkurenko Alexander > Ну а при использовании NetServerEnum только имена компьютеров Т.е. пример кода, который я привел возратил имена ПК? Может там какая-нибудь заморочка из-за NamidPipes/TCP-IP ? У меня сервер по TCP общается NamedPipes отключено. == Константа lType = SV_TYPE_SQLSERVER должна по идее указать на возрат имен серверов. Если использовать lType = SV_TYPE_SERVER - то вернет имена всех ПК. === Все константы (из Netapi32.lib) SV_TYPE_WORKSTATION All workstations SV_TYPE_SERVER All computers that have the server service running SV_TYPE_SQLSERVER Any server running with Microsoft SQL Server SV_TYPE_DOMAIN_CTRL Primary domain controller SV_TYPE_DOMAIN_BAKCTRL Backup domain controller SV_TYPE_TIME_SOURCE Server running the Timesource service SV_TYPE_AFP Apple File Protocol servers SV_TYPE_NOVELL Novell servers SV_TYPE_DOMAIN_MEMBER LAN Manager 2.x domain member SV_TYPE_LOCAL_LIST_ONLY Servers maintained by the browser. See the following Remarks section. SV_TYPE_PRINTQ_SERVER Server sharing print queue SV_TYPE_DIALIN_SERVER Server running dial-in service SV_TYPE_XENIX_SERVER Xenix server SV_TYPE_SERVER_MFPN Microsoft File and Print for NetWare SV_TYPE_NT Windows NT workstation or server SV_TYPE_WFW Server running Windows for Workgroups SV_TYPE_SERVER_NT Server that is not a domain controller SV_TYPE_POTENTIAL_BROWSER Server that can run the browser service SV_TYPE_BACKUP_BROWSER Server running a browser service as backup SV_TYPE_MASTER_BROWSER Server running the master browser service SV_TYPE_DOMAIN_MASTER Server running the domain master browser SV_TYPE_DOMAIN_ENUM Primary domain SV_TYPE_WINDOWS Windows 95 or later SV_TYPE_ALL All servers SV_TYPE_TERMINALSERVER Terminal Server SV_TYPE_CLUSTER_NT Server clusters available in the domain SV_TYPE_CLUSTER_VS_NT Cluster virtual servers available in the domain. Windows 2000/NT: This value is not supported. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2003, 17:19:20 |
|
||
|
Доступные SQL-сервера
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток! Есть такой код : Dim oSQLServerDMOApp As SQLDMO.Application Dim namX As NameList Dim intI% Set oSQLServerDMOApp = New SQLDMO.Application Set namX = oSQLServerDMOApp.ListAvailableSQLServers If namX.Count <> 0 Then For intI = 1 To namX.Count contrSQLList.AddItem namX.Item(intI) Next End If Всё чудесно работает, кроме того, что он не возвращает имена instance - ServerName\InstanceName. Я имею ввиду случай, когда на одной машине несколько инстансов... Посоветуйте, как быть? Заранее спасибочки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2006, 17:41:51 |
|
||
|
Доступные SQL-сервера
|
|||
|---|---|---|---|
|
#18+
Проверила - инстансы не приносит. Возвращает то же, что и DMO . Может, это зависит от настроек системы? Я заметила что DMO иногда приносит инстансы, а иногда - нет. Тот же самый код. Есть какие-нибудь идеи, с чем это может быть связано? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2006, 10:33:09 |
|
||
|
Доступные SQL-сервера
|
|||
|---|---|---|---|
|
#18+
MarinaKПроверила - инстансы не приносит. Возвращает то же, что и DMO Что значит не приносит? У меня этот код работает несколько месяцев, вот доказательство: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2006, 10:39:12 |
|
||
|
Доступные SQL-сервера
|
|||
|---|---|---|---|
|
#18+
MarinaKПроверила - инстансы не приносит. Возвращает то же, что и DMO Что значит не приносит? У меня этот код работает несколько месяцев, прилагаю доказательство. Выложите свой проект. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2006, 10:40:35 |
|
||
|
Доступные SQL-сервера
|
|||
|---|---|---|---|
|
#18+
Это Ваш код Public Function GetSQLServersList(contrSQLList As Object) As String Const ODBC_ERR_MSG = "Error to call ODBC. Please install vertion of 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 Dim names() As String Dim intI As Integer 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 GetSQLServersList = Mid$(strOutCon, lngPz1, lngPz2 - lngPz1) End If End If retCode = SQLDisconnect(hDbc) retCode = SQLFreeConnect(hDbc) retCode = SQLFreeEnv(hEnv) names = Split(GetSQLServersList, ",") For intI = 0 To UBound(names) - 1 contrSQLList.AddItem names(intI) Next End Function ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2006, 10:48:29 |
|
||
|
|

start [/forum/topic.php?fid=60&msg=32308382&tid=2166198]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
160ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
75ms |
get tp. blocked users: |
2ms |
| others: | 208ms |
| total: | 486ms |

| 0 / 0 |
