【网学网提醒】:网学会员为需要朋友们搜集整理了sqlserver数据库网络连接测试方法相关资料,希望对各位网友有所帮助!
关于sqlserver数据库的分布式网络连接测试的处理方法,该存储过程把安装有sqlserver的数据库服务器在进行分布管理时提供数据库服务器的网络连接测试和建立远程服务连接,方便在分布式网络中处理各个独立服务器之间的数据库访问连接问题。希望能够为大家在做这方面的设计时提供一个解决方法。
--createprocp_process
--as
--若要用sp_configure配置高级选项,必须首先在将showadvancedoptions选项设置为1的情况下运行sp_configure,然后运行RECONFIGURE:
--sp_configure'showadvancedoptions',1;--查询
--GO
--RECONFIGURE;
--GO
--sp_configure'OleAutomationProcedures',1;--打开ole权限
--GO
--RECONFIGURE;
--GO
--sp_configure'remotelogintimeout',20;--设置登录时间
--GO
--RECONFIGURE;
--GO
--测试数据库服务器连接是否成功,不成功则退出-----------------------------------------------------------------------
declare@ServIP varchar(20), --服务器IP
@SrvIDint,--服务器ID
@hrint,--执行语句返回值
@Errorint--错误返回值(999:存储过程或触发器错误;9999:视图错误)
declare@ServerNamesysname,--链接服务器名称
@User varchar(10), --数据库登录用户名
@pwd varchar(20), --数据库登录密码
@SQL_strvarchar(2000) --sql操作语句
set@ServerName='srv1'
set@ServIP='192.168.1.141'
set@User='sa'
set@pwd='123'
exec@hr=sp_oacreate'SQLDMO.sqlserver',@SrvIDoutput
if@hr<>0
begin
set@Error=1
execsp_OADestroy@SrvID--释放ole对象
end
--/*连接服务器
exec@hr=sp_oamethod@SrvID,'connect',null,@ServIP,@User,@pwd
print@hr
if@hr<>0
begin
set@Error=2
print'连接失败'+convert(varchar(20),@SrvID)
end
else
begin
set@Error=0
print'连接成功'+convert(varchar(20),@SrvID)
end
exec@hr=sp_OAMethod@SrvID,'DisConnect'--断开服务器连接
execsp_OADestroy@SrvID--释放ole对象
--检查数据库链接服务器是否存在,不存在则创建并且登录--------------------------------------------
--判断该链接服务器
ifnotexists(select*frommaster.dbo.sysserverswheresrvname=@ServerName)
begin
exec@hr=sp_addlinkedserver@ServerName,@ServerName,'SQLOLEDB',@ServIP,null,null,'ERPData'
if@hr=0
print'重新创建链接服务器成功!'+@ServerName
end
exec@hr=sp_addlinkedsrvlogin@ServerName,'false',null,@User,@pwd
IF@hr=1--登录失败
begin
exec@hr=sp_dropserver@ServerName,'droplogins'--删除链接服务器,等待下次重新重建
print'登录失败,请重新登录'+@ServerName+'登录返回值:'+convert(varchar(1),@hr)
end
else
begin
print'登录成功!'+@ServerName+'登录返回值:'+convert(varchar(1),@hr)
--测
试查询是否可以使用链接服务器
set@SQL_str='selecttop1*from'+@ServerName+'.erpdata.dbo.User_comp'
print@SQL_str
exec(@SQL_str)
end