zoukankan      html  css  js  c++  java
  • SQLServer跨库查询分布式查询

    --用openrowset连接远程SQL或插入数据 

    --如果只是临时访问,可以直接用openrowset

    --查询示例

    select * from openrowset('SQLOLEDB'

    ,'sql服务器名';'用户名';'密码'

    ,数据库名.dbo.表名)

    在跨库查询时需要启用Ad Hoc Distributed Queries
    启用Ad Hoc Distributed Queries:
    exec sp_configure 'show advanced options',1
    reconfigure
    exec sp_configure 'Ad Hoc Distributed Queries',1
    reconfigure
    使用完成后,关闭Ad Hoc Distributed Queries:
    exec sp_configure 'Ad Hoc Distributed Queries',0
    reconfigure
    exec sp_configure 'show advanced options',0
    reconfigure


    --导入示例

    select * intofrom openrowset('SQLOLEDB'

    ,'sql服务器名';'用户名';'密码'

    ,数据库名.dbo.表名)


    --创建链接服务器

    exec sp_addlinkedserver 'srv_lnk','','SQLOLEDB','远程服务器名或ip地址'

    exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'用户名','密码'

    go


    --查询示例

    select * from srv_lnk.数据库名.dbo.表名


    --导入示例

    select * intofrom srv_lnk.数据库名.dbo.表名


    --以后不再使用时删除链接服务器

    exec sp_dropserver 'srv_lnk','droplogins'

    go

    --下面的示例访问来自某个表的数据,该表在 SQL Server 的另一个实例中。

    SELECT *FROM OPENDATASOURCE('SQLOLEDB','Data Source=ServerName;User ID=MyUID;Password=MyPass').Northwind.dbo.Categories

    --下面是个查询的示例,它通过用于 Jet 的 OLE DB 提供程序查询 Excel 电子表格。

    SELECT *FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="c:Financeaccount.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions
    例如:

    SELECT *

    FROM OPENQUERY(Far_MDB, 'SELECT * FROM MDB_Member')

    这就是从我的链接服务器当中去查询MDB_Member表的数据

    备注:

    1、关于链接服务器的详细情况请参阅联机丛书中的sp_addlinkedserver、 sp_addlinkedsrvlogin、sp_addserver、sp_dropserver、sp_serveroption、sp_linkedservers等系统级存储过程。

    2、关于此链接服务器的创建及其使用在不同环境下(全部内网服务器、一内网一公网服务器、全公网服务器)测试,均告通过。

    3、有时候在存储过程中访问链接服务器的时候可能会碰到如下的提示,必须要对ANSI warning 和ANSI nulls进行设置,这时候按照如下的方法进行设置:

    设置本地数据库的属性-->连接-->选上ANSI warning 和 ANSI nulls

    如何用sql语句进行跨库查询

    在机器B上的数据库database2中创建一个临时表#tmp,

    内容就是机器A上的数据库database1里面的Table1。

    如何用sql语句完成?(不借用dts等)

    SQL code --创建链接服务器

    exec sp_addlinkedserver 'ITSV','','SQLOLEDB','远程服务器名或ip地址'

    exec sp_addlinkedsrvlogin 'ITSV','false',null,'用户名','密码'

    --查询示例

    select * from ITSV.数据库名.dbo.表名

    --导入示例

    select * intofrom ITSV.数据库名.dbo.表名

    --以后不再使用时删除链接服务器

    exec sp_dropserver 'ITSV','droplogins'

    --连接远程/局域网数据(openrowset/openquery/opendatasource)

    --1、openrowset

    --查询示例

    select * from openrowset('SQLOLEDB','sql服务器名';'用户名';'密码',数据库名.dbo.表名)

    --生成本地表

    select * intofrom 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 本地表

    用 链接服务器

    OPENROWSET

    OPENDATASOURCE

    都可以

    链接服务器.database1.dbo.table1

    链接服务器.database1.dbo.table1

    SQL code

    select * into #

    from openrowset('sqloledb','ip';'sa';'','select * from pubs.dbo.jobs')

    如果只是偶尔使用 就用opendatasource/openrowset 固定的频繁使用建linked server
  • 相关阅读:
    Windows Azure Web Site (19) Azure Web App链接到VSTS
    Windows Azure Virtual Machine (35) Azure VM通过Linked DB,执行SQL Job
    Azure PowerShell (16) 并行开关机Azure ARM VM
    Windows Azure Virtual Network (12) 虚拟网络之间点对点连接VNet Peering
    Azure ARM (21) Azure订阅的两种管理模式
    Windows Azure Platform Introduction (14) 申请海外的Windows Azure账户
    Azure ARM (20) 将非托管磁盘虚拟机(Unmanage Disk),迁移成托管磁盘虚拟机(Manage Disk)
    Azure ARM (19) 将传统的ASM VM迁移到ARM VM (2)
    Azure ARM (18) 将传统的ASM VM迁移到ARM VM (1)
    Azure Automation (6) 执行Azure SQL Job
  • 原文地址:https://www.cnblogs.com/doosmile/p/2400646.html
Copyright © 2011-2022 走看看