大家好,我又来了,呵呵
我现在有一个信息公开的网站,这个网站有好多个部门要使用,他们的要求是在我这个网站发布信息之后,在他们各自的门户网站中也出现相应的信息。而且栏目也要相对应。我刚开始想用iframe调用页面。但是不符合要求。
现在我想能不能这样,对方数据库给我开通远程,我这边如果有他的部门的更新信息,就直接插入到他们的数据库中。这样他们网站的前台程序就不需要在修改,而是直接调用他们的数据库的信息。问题是就算我知道他们的数据结构,数据可以返回给他们。但是他们未必都能够开通远程数据库操作啊,还要他们有可能用sqlserver、mysql、access数据库。是不是这些数据库都能开通远程操作功能。不知道各位高手可看懂什么意思了吗?

解决方案 »

  1.   

    Replication 复制技术,可以达到您想要的要求,至于外部有access,mysql等数据库的处理.就需要跟管理这两块儿的人员进行沟通解决的. 
      

  2.   


    --sql server
    不同服务器数据库之间的数据操作--创建链接服务器 
    exec sp_addlinkedserver   'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 ' 
    exec sp_addlinkedsrvlogin  'ITSV ', 'false ',null, '用户名 ', '密码 ' --查询示例 
    select * from ITSV.数据库名.dbo.表名 --导入示例 
    select * into 表 from ITSV.数据库名.dbo.表名 --以后不再使用时删除链接服务器 
    exec sp_dropserver  'ITSV ', 'droplogins ' --连接远程/局域网数据(openrowset/openquery/opendatasource) 
    --1、openrowset --查询示例 
    select * from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名) --生成本地表 
    select * into 表 from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名) --把本地表导入远程表 
    insert openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名) 
    select *from 本地表 --更新本地表 
    update b 
    set b.列A=a.列A 
     from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)as a inner join 本地表 b 
    on a.column1=b.column1 --openquery用法需要创建一个连接 --首先创建一个连接创建链接服务器 
    exec sp_addlinkedserver   'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 ' 
    --查询 
    select * 
    FROM openquery(ITSV,  'SELECT *  FROM 数据库.dbo.表名 ') 
    --把本地表导入远程表 
    insert openquery(ITSV,  'SELECT *  FROM 数据库.dbo.表名 ') 
    select * from 本地表 
    --更新本地表 
    update b 
    set b.列B=a.列B 
    FROM openquery(ITSV,  'SELECT * FROM 数据库.dbo.表名 ') as a  
    inner join 本地表 b on a.列A=b.列A --3、opendatasource/openrowset 
    SELECT   * 
    FROM   opendatasource( 'SQLOLEDB ',  'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ' ).test.dbo.roy_ta 
    --把本地表导入远程表 
    insert opendatasource( 'SQLOLEDB ',  'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ').数据库.dbo.表名 
    select * from 本地表  --oracle
    SQL和ORACLE之间的数据查询配置透明网关的步骤
    前一段花了些时间配置 TRANSPARENT GATEWAY
    现在把心得贴出来与大家共享我的OS是WIN2000  
    ORACLE 9.0
    SQLSERVER2000
    HOSTNAME : SVR1
    都使用 tcp/ip 默认端口
    1: 安装 TRANSPARENT GATEWAY 选件(我安装的是FOR MSSQL)
       安装完成了以后有这样一个目录 oracle_home\ora90\tg4msql2: 配置 LISTENER.ORA
        (SID_DESC =
          (GLOBAL_DBNAME = tg4sql) # 可自己命名
          (PROGRAM = tg4msql)
          (SID_NAME = sql2000)  # SID 自己命名
          (ORACLE_HOME = D:\oracle\ora90)
        )3: 在 oracle_home\ora90\tg4msql\admin
       建文件 init<SID>.ora 由于LISTENER里定义SID为 sql2000
       因此文件名为:initsql2000.ora
       其中内容为:
       HS_FDS_CONNECT_INFO=svr1.master # svr1为SQL服务器名
       HS_FDS_TRACE_LEVEL=OFF
       HS_FDS_RECOVERY_ACCOUNT=RECOVER
       HS_FDS_RECOVERY_PWD=RECOVER4: 重启 DATABASE AND LISTENER5: 配置 tnsnames.ora
    tg_sql = 
      (DESCRIPTION = 
        (ADDRESS_LIST = 
          (ADDRESS = (PROTOCOL = TCP)(HOST = SVR1)(PORT = 1521)) 
        ) 
        (CONNECT_DATA = 
          (SID = sql2000) 
        ) 
        (HS=OK) 
      ) 6: 建立 DATABASE LINK
    CREATE PUBLIC DATABASE LINK DB_SQL
    CONNECT TO SA IDENTIFIED BY PASSWORD
    USING 'tg_sql'7: 完成,测试
      select * from t_test@db_sql8: 请注意使用 DBLINK 时,INIT.ORA中 GLOBAL_NAME 的设置,
      如果为 ture , 请使用DBLINK的全称,可在 all_db_links 中查到,
      如果为 FALSE, 不必使用全称,当出现 
      “ORA-02019:为找到远程数据库的连接说明”
      时,请使用全称,如:
      select * from t_test@db_sql.US.ORACLE.COM
    --access
    SQL SERVER 和ACCESS的数据导入导出常规的数据导入导出:使用DTS向导迁移你的Access数据到SQL Server,你可以使用这些步骤: 1在SQL SERVER企业管理器中的Tools(工具)菜单上,选择Data Transformation 
    2Services(数据转换服务),然后选择  czdImport Data(导入数据)。 
    3在Choose a Data Source(选择数据源)对话框中选择Microsoft Access as the Source,然后键入你的.mdb数据库(.mdb文件扩展名)的文件名或通过浏览寻找该文件。 
    4在Choose a Destination(选择目标)对话框中,选择Microsoft OLE DB Prov ider for SQL Server,选择数据库服务器,然后单击必要的验证方式。 
    5在Specify Table Copy(指定表格复制)或Query(查询)对话框中,单击Copy tables(复制表格)。 
    6在Select Source Tables(选择源表格)对话框中,单击Select All(全部选定)。下一步,完成。Transact-SQL语句进行导入导出:1.在SQL SERVER里查询access数据:
    -- ======================================================
    SELECT * 
    FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
    'Data Source="c:\DB.mdb";User ID=Admin;Password=')...表名
    -------------------------------------------------------------------------------------------------
    2.将access导入SQL server 
    -- ======================================================
    在SQL SERVER 里运行:
    SELECT *
    INTO newtable
    FROM OPENDATASOURCE ('Microsoft.Jet.OLEDB.4.0', 
          'Data Source="c:\DB.mdb";User ID=Admin;Password=' )...表名
    -------------------------------------------------------------------------------------------------
    3.将SQL SERVER表里的数据插入到Access表中
    -- ======================================================
    在SQL SERVER 里运行:
    insert into OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
      'Data Source=" c:\DB.mdb";User ID=Admin;Password=')...表名 
    (列名1,列名2)
    select 列名1,列名2  from  sql表
    实例:
    insert into  OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
       'C:\db.mdb';'admin';'', Test) 
    select id,name from Test
    INSERT INTO OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'c:\trade.mdb'; 'admin'; '', 表名)
    SELECT *
    FROM sqltablename....其他数据库不清楚