區域網中有幾個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...