有一台是中心数据库,我这台是部门的。部门这台需要从中心的取回一些新数据保存到部门数据。如何写SQL呢?

解决方案 »

  1.   

    在两台机能保证互访的前提下,在服务器端创建链接服务器,然后部门端用select * from [链接服务器名].[数据库名].[架构名,一般为dbo].[表名] where 条件
      

  2.   

    创建链接服务,实现你的部门电脑可以访问中心数据库exec sp_addlinkedserver '链接名称',' ','SQLOLEDB','IP'
    exec sp_addlinkedsrvlogin '链接名称','false',NULL,'sa','xxxxxxx'--查询
    select * from  链接名称.数据库名.dbo.表名
    --连接远程/局域网数据(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本地表
    --不用后删除
    exec sp_dropserver '链接名称','droplogins'
      

  3.   

    用opendatasource,select * from opendatasource('SQLOLEDB',
    'Data Source=[中心数据库机器名];User ID=[帐号];Password=[密码]').[数据库名].[架构名].[表名]
      

  4.   

    有一台机是不同部门的。中心数据库,要从那里拿数据来更新。2楼的朋友,那么我在WAN上边可以进行这样的连接么?
      

  5.   

    这样就可以了哈,广域网也可以用,我在公司试验过的,如果你觉得不安全,可以考虑使用vpn:--建立链接服务器,通过@datasrc指定数据源,适合链接其他多种数据库
    EXEC master.dbo.sp_addlinkedserver @server = N'Link',
                                       @srvproduct='ms', 
                                       @provider=N'SQLNCLI',                                    
                                       @datasrc=N'192.168.1.16,1433'EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'Link',
                                        @useself=N'False',
                                        @locallogin=NULL,
                                        @rmtuser=N'sa',
                                        @rmtpassword='password'
                                        
    --执行后,能查看远程服务器上的数据
    select * from [Link].数据库.dbo.表
    insert into 本地表
    select * from [Link].数据库.dbo.表
                             
                                        
      

  6.   

    如果实时性不强
    用SSIS 将需求做成package
    定时ETL数据吧
      

  7.   


    可以的,做了VPN,直接连接到中心节点才能访问中心的数据库的。
      

  8.   

    安全这个不用担心,主要是能得到数据就满足我了。那就是上面的代码就可以的,你试试吧,只要把上面的ip地址改成你远程的sql server服务器的ip和端口,然后指定远程的登录用户名和密码,就可以了
      

  9.   

    链接服务器"CEODB"的 OLE DB 访问接口 "SQLNCLI11" 返回了消息 "登录超时已过期"。
    链接服务器"CEODB"的 OLE DB 访问接口 "SQLNCLI11" 返回了消息 "与 SQL Server 建立连接时发生了与网络相关的或特定于实例的错误。找不到或无法访问服务器。请检查实例名称是否正确以及 SQL Server 是否配置为允许远程连接。有关详细信息,请参阅 SQL Server 联机丛书。"。
      

  10.   

    注意必须要把里面的ip和端口改为你要访问的远程服务器的ip和端口,还有用户名和密码也是登录远程服务器的用户名和密码
    --建立链接服务器,通过@datasrc指定数据源,适合链接其他多种数据库
    EXEC master.dbo.sp_addlinkedserver @server = N'Link',
                                       @srvproduct='ms', 
                                       @provider=N'SQLNCLI',                                    
                                       @datasrc=N'改为远程服务器的ip,端口'EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'Link',
                                        @useself=N'False',
                                        @locallogin=NULL,
                                        @rmtuser=N'',用户名
                                        @rmtpassword='密码'
                                        
    --执行后,能查看远程服务器上的数据
    select * from [Link].数据库.dbo.表
    insert into 本地表
    select * from [Link].数据库.dbo.表
                             
                                        另外,需要在远程服务器上运行下面的代码,以允许你本地的服务器远程访问远程服务器:
    sp_configure 'show advanced options', '1' 
    go
    RECONFIGURE
    gosp_configure 'remote access', '1' 
    go
    reconfigure
    go