powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как программно получить список MS SQL серверов в сети?
3 сообщений из 3, страница 1 из 1
Как программно получить список MS SQL серверов в сети?
    #37853615
FAM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Требуется пвывести список серверов для выбора, к какому подключаться. Как это сделать не используя SQLDMO.Application ?
...
Рейтинг: 0 / 0
Как программно получить список MS SQL серверов в сети?
    #37856194
Дмитрий Григорьев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно посмотреть в исходниках Dataexplorer.app, лежат в Tools\xsource.zip

Код: vbnet
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.
	* Populate collection with available SQL servers
	FUNCTION OnGetAvailableServers(oServerCollection AS ServerCollection)
		LOCAL hEnv
		LOCAL hConn
		LOCAL cInString
		LOCAL cOutString
		LOCAL nLenOutString
		LOCAL ARRAY aServerList[1]

		DECLARE SHORT SQLBrowseConnect IN odbc32 ; 
		    INTEGER   ConnectionHandle, ; 
		    STRING    InConnectionString, ; 
		    INTEGER   StringLength1, ; 
		    STRING  @ OutConnectionString, ; 
		    INTEGER   BufferLength, ; 
		    INTEGER @ StringLength2Ptr
		    
		DECLARE SHORT SQLAllocHandle IN odbc32 ; 
		    INTEGER   HandleType, ; 
		    INTEGER   InputHandle, ; 
		    INTEGER @ OutputHandlePtr 
		    
		DECLARE SHORT SQLFreeHandle IN odbc32 ; 
		    INTEGER HandleType, ; 
		    INTEGER Handle 

		DECLARE SHORT SQLSetEnvAttr IN odbc32 ; 
		    INTEGER EnvironmentHandle, ; 
		    INTEGER Attribute, ; 
		    INTEGER ValuePtr, ; 
		    INTEGER StringLength 


		hEnv = 0
		hConn = 0
		cInString = SQL_DRIVER_STR
		cOutString = SPACE(DEFAULT_RESULT_SIZE)
		nLenOutString = 0

		TRY
			IF SQLAllocHandle(SQL_HANDLE_ENV, hEnv, @hEnv) == SQL_SUCCESS
				IF (SQLSetEnvAttr(hEnv, SQL_ATTR_ODBC_VERSION, SQL_OV_ODBC3, 0)) == SQL_SUCCESS
					IF SQLAllocHandle(SQL_HANDLE_DBC, hEnv, @hConn) == SQL_SUCCESS
						IF (SQLBrowseConnect(hConn, @cInString, LEN(cInString), @cOutString, DEFAULT_RESULT_SIZE, @nLenOutString)) == SQL_NEED_DATA
							nCnt = ALINES(aServerList, STREXTRACT(cOutString, '{', '}'), .T., ',')
							FOR i = 1 TO nCnt
								oServerCollection.AddEntity(aServerList[i])
							ENDFOR
						ENDIF
					ENDIF
				ENDIF
			ENDIF
		CATCH TO oException
			* ignore error, just return an empty collection of servers
		FINALLY
			IF hConn <> 0
				SQLFreeHandle(SQL_HANDLE_DBC, hConn)
			ENDIF
			IF hEnv <> 0
				SQLFreeHandle(SQL_HANDLE_ENV, hConn)
			ENDIF
		ENDTRY
	ENDFUNC
...
Рейтинг: 0 / 0
Как программно получить список MS SQL серверов в сети?
    #37888529
FAM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий Григорьев,
СПАСИБО!
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как программно получить список MS SQL серверов в сети?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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