獲得SQL SERVER伺服器列表

2021-04-13 00:39:03 字數 3362 閱讀 4670

區域網中有幾個sql server伺服器,我想在pb中得到所有的sql server伺服器列表,該怎麼做?

1、在sql查詢分析器中,輸入sp_linkedservers,就可以檢視已經連線上的 sql server伺服器。

2、api實現該功能

返回值ls_list,各個sqlserver伺服器是用','分隔的,自己做個拆分函式就可以分解成多個sqlserver伺服器名稱了。  

**如下:  

申明api函式:  

function   int   sqlallochandle(int   htype,long   inputhandle,ref   long   outputhandle)   library   "odbc32.dll"  

function   int   sqlsetenvattr(long   henv,int   attribute,long   valueptr,int   strlength)   library   "odbc32.dll"    

function   int   sqlfreehandle(int   htype,long   handle)   library   "odbc32.dll"  

function   int   sqlbrowseconnect(long   hconn,string   instring,int   instringlength,ref   string   outstring,int   outstringlength,ref   int   outlengthneeded)   library   "odbc32.dll"  

定義變數:  

private   int   sql_handle_env   =   1  

private   int   sql_handle_dbc   =   2  

private   int   sql_attr_odbc_version   =   200  

private   int   sql_ov_odbc3   =   3  

private   int   sql_success   =   0  

private   int   sql_need_data   =   99  

private   int   default_result_size   =   1024  

private   string   sql_driver_str   =   "driver=sql   server"  

取sqlserver伺服器函式主體:  

string   ls_list  

long   henv   =   0  

long   hconn   =   0  

string   instring  

instring   =   sql_driver_str  

string   outstring  

outstring   =   fill('   ',default_result_size)  

integer   instringlength    

instringlength   =   len(instring)  

integer   lenneeded   =   0  

integer   li_start    

integer   li_len    

integer   li_return  

li_return   =   sqlallochandle(sql_handle_env,   henv,   henv)  

if   (sql_success   =   li_return)   then  

li_return   =   sqlsetenvattr(henv,sql_attr_odbc_version,sql_ov_odbc3,0)  

if   (sql_success   =   li_return)   then  

li_return   =   sqlallochandle(sql_handle_dbc,   henv,   hconn)  

if   (sql_success   =   li_return)   then  

li_return   =   sqlbrowseconnect(hconn,   instring,   instringlength,   outstring,default_result_size,lenneeded)  

if   (sql_need_data   =   li_return   )   then  

if   (default_result_size   <   lenneeded)   then  

outstring   =   fill('   ',lenneeded)  

li_return   =   sqlbrowseconnect(hconn,   instring,   instringlength,   outstring,lenneeded,lenneeded)  

if   (sql_need_data   <>   li_return)   then  

messagebox('error',"unabled   to   aquire   sql   servers   from   odbc   driver.")  

return  

end   if  

end   if  

ls_list   =   outstring  

li_start   =   pos(ls_list,"")   -   li_start  

if   ((li_start   >   0)   and   (li_len   >   0))   then  

ls_list   =   mid(ls_list,li_start,li_len)  

else  

ls_list   =   ''  

end   if  

end   if  

end   if  

end   if  

end   if  

if   hconn   <>   0   then  

sqlfreehandle(sql_handle_dbc,hconn)  

end   if  

if   henv   <>   0   then  

sqlfreehandle(sql_handle_env,hconn);  

end   if  

messagebox('sqlserver_name',ls_list)  

return   ls_list  

3、以下**經過除錯正常

sqlserver伺服器 急救

今天突然發現,sqlserver伺服器 遠端桌面連不上了,但是資料庫都能正常連線,記得是上次更改了遠端桌面的埠,但是防火牆上沒有開啟規則。現在通過資料庫使用者解決方法如下 作為備忘 開啟xp cmdshell sql server blocked access to procedure xp cmd...

獲得伺服器時間 機房重構

如何獲得伺服器時間!很容易,就是用sql語句就ok了。sql select getdate 很簡單用sql 語句就可以完成這個功能,現在感覺很簡單,但是開始寫7層讀伺服器時間可是傷透了腦筋。困難一 如何從資料庫中獲得時間 解決 sql語句 用函式就能獲得。困難二 寫成7層,咋寫呀 sql語句查伺服器...

跨伺服器訪問SQLSERVER

建立鏈結伺服器 exec sp addlinkedserver wqjk sqloledb 遠端伺服器名或ip位址 exec sp addlinkedsrvlogin wqjk false null,使用者名稱 密碼 查詢示例 select from itsv.資料庫名.dbo.表名 匯入示例 se...