【网学网提醒】:网学会员为您提供sql2000数据与sql2005数据交互的方法参考,解决您在sql2000数据与sql2005数据交互的方法学习中工作中的难题,参考学习。
接口接入实现方案一.总体思路在xx的数据服务器中建立接口数据库,在该数据库中建立两张表。分别存放水位,流量,雨量。在我方数据库中写入两个触发器,当我方数据库被写入数据时,触发触发器,将数据写入对方的接口表中。二对服务器的配置1.首先保证双方服务器网络畅通2.关闭双方服务器的防火墙3.配置双方服务器的msdtc服务打开控制面板->管理工具->组件服务双击组件服务,打开计算机,在我的电脑中点击右键中的属性图1在属性中,选定msdtc选项卡,点击“安全配置按钮”图2在安全配置窗口中做如下配置,如图2所示选中“网络DTC访问”在客户端管理中选中“允许远程客户端”和“允许远程管理”在事务管理通讯中选“允许入站”,“允许出站”,“不需要进行验证”确保DTC登陆帐户为:NTAuthority\NetworkService在双方服务器配置完毕后,需要重新启动计算机。4.启动双方的msdtc服务在计算机中进入命令编辑窗口写入命令Netstartmsdtc如果不能启动msdtc需要运行msdtc-resetlogNetstartmsdtc5.在开始->运行中写入services.msc后运行,确保RPC服务已经启动。如图3所示图3三对方sql2005配置1.配置sql2005express服务运行远程连接在managementstudioExpress中新建一个查询,执行以下语句:sp_configure'remoteadminconnections',1;RECONFIGURE;然后重启服务。如图4所示图42.打开远程连接协议解决方法是打开SQLServerConfigurationManager,展开SQLServer2005NetworkConfiguration,选择目标实例名,在右边的列表里允许远程连接的协议。在TCP/IP上点击右键,选中启动按钮,然后重启服务。如图5所示图53.选择混合模型验证先使用Windows验证的方式登陆ManagementStudio,右键点击实体的目标服务器,选择属性,再点击安全性,在服务器身份验证节上选择“混合模型验证”,然后重启服务。如图6所
示图64.打开sa帐户,设置秘密在查询中执行如下语句ALTERLOGINsaENABLE;ALTERLOGINsaWITHPASSWORD='123';如图7所示图7四.Sql2005建表1.在sql2005上建立interfacedb数据库2.在该数据库中建立表sw和ylSw表列名类型ZhLlSj该表收集水位,流量值Yl表列名类型ZhYlSjInt说明属性站号Notnull索引Int说明属性站号Notnull索引
SwDecimal(6,2,)水位NotnullDecimal(6,2,)流量Notnull站名NotnullSmalldatetime时间NullZmVarchar(16)
Decimal(6,2,)雨量Notnullsmalldate时间Null
ZmVarchar(16)站名Notnull该表收集雨量值所用sql语句如下,在sql2005查询窗口执行USE[interfacedb]SETANSI_NULLSONSETQUOTED_IDENTIFIERONSETANSI_PADDI
NGONCREATETABLE[dbo].[sw]([zh][int]NULL,[sw][decimal](6,2)NULL,[ll][decimal](6,2)NULL,[zm][varchar](16)NULL,[sj][smalldatetime]NULL)ON[PRIMARY]SETANSI_PADDINGOFFUSE[interfacedb]SETANSI_NULLSON
SETQUOTED_IDENTIFIERONSETANSI_PADDINGONCREATETABLE[dbo].[yl]([zh][int]NULL,[yl][decimal](6,2)NULL,[zm][varchar](16)NULL,[sj][smalldatetime]NULL)ON[PRIMARY]SETANSI_PADDINGOFF五.对sql2000进行配置1.建立与sql2005连接,在sql2000的查询窗口中执行如下语句
EXECmaster.dbo.sp_addlinkedserver@server=N'ROY_LNK',@srvproduct=N'ROY_LNK',@provider=N'SQLOLEDB',@datasrc=N'Roy\SQL2005DE'--SQL05可用SQLNCLI\SQLOLEDBGOEXECmaster.dbo.sp_addlinkedsrvlogin@rmtsrvname=N'ROY_LNK',@locallogin=NULL,@useself=N'False',@rmtuser=N'sa',@rmtpassword=N'Test2005'GO
2.在sq_wlfl和sq_hourrain表上建立trigger在sql2000中执行如下如下sql语句,以建立triggerCREATETRIGGERSQ_WLFL_interfaceONdbo.SQ_WLFLFORINSERT,UPDATENOTFORREPLICATION--该触发器为了向接口表中插入数据--将水位值,流量值,以及其相对于的站号,站名,时间信息插入interface的sw表中ASbeginsetXACT_ABORTonDECLARE@zhint,@swdecimal(6,2),@lldecimal(6,2),@sjsmalldatetime,@zmvarchar(16)DECLAREhq_cursorCURSORFORSELECTST_NUM,WLFL_WL,WLFL_fL,WLFL_timefrominsertedorderbyST_NUMOPENhq_cursorFETCHnextFROMhq_cursorINTO@zh,@sw,@ll,@sjwhile@@FETCH_STATUS=0beginif@swisnullset@sw=0if@llisnullset@ll=0select@zm=st_namefromiwhr_rldb.dbo.ST_PRMwherest_num=@zhif@zmisnotnullinsertintotest.interfacedb.dbo.sw(zh,sw,ll,zm,sj)values(@zh,@sw,@ll,@zm,@sj)FETCHnextFROMhq_cursor
INTO@zh,@sw,@ll,@sjendCLOSEhq_cursorDEALLOCATEhq_cursorendCREATETRIGGERrain_interfaceONdbo.SQ_HOURRAINFORINSERT,UPDATENOTFORREPLICATION--该触发器为了向接口表中插入数据--将雨量,以及其相对于的站号,站名,时间信息插入interface的yl表中ASbeginsetXACT_ABORTonDECLARE@zhint,@yldecimal(6,2),@zmvarchar(16),@sjsmalldatetimeDECLARErain_cursor2CURSORFORSELECTST_NUM,HOURRAIN_TIME,HOURRAIN_rainfrominsertedbyHOURRAIN_TIMEOPENrain_cursor2FETCHnextFROMrain_cursor2INTO@zh,@sj,@ylwhile@@FETCH_STATUS=0beginif@ylisnullset@yl=0select@zm=st_namefromiwhr_rldb.dbo.ST_PRMwherest_num=@zhif@zmisnotnullinsertintotest.interfacedb.dbo.yl(zh,yl,zm,sj)values(@zh,@yl,@zm,@sj)FETCHnextFROMrain_cursor2INTO@zh,@sj,@ylendCLOSErain_cursor2DEALLOCATErain_cursor2end
order