SQL Server数据库远程操作中,在使用openrowset/opendatasource前首先要启用Ad Hoc Distributed Queries服务,因为这个服务不安全所以SqlServer默认是关闭的。

1、启用Ad Hoc Distributed Queries的方法

SQL Server 阻止了对组件'Ad Hoc Distributed Queries' 的STATEMENT'OpenRowset/OpenDatasource'的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用。sp_configure 启用 'Ad Hoc Distributed Queries'。

启用Ad Hoc Distributed Queries的方法,执行下面的查询语句就可以了:

  1. exec sp_configure 'show advanced options',1
  2. reconfigure
  3. exec sp_configure 'Ad Hoc Distributed Queries',1
  4. reconfigure

使用完毕后,记得一定要关闭它,因为这是一个安全隐患,切记执行下面的SQL语句:

  1. exec sp_configure 'Ad Hoc Distributed Queries',0
  2. reconfigure
  3. exec sp_configure 'show advanced options',0
  4. reconfigure

2、使用示例

创建链接服务器

  1. exec sp_addlinkedserver   'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 '
  2. exec sp_addlinkedsrvlogin 'ITSV ', 'false ',null, '用户名 ', '密码 '

查询示例

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

导入示例

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

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

  1. exec sp_dropserver  'ITSV ', 'droplogins '

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

1、openrowset 

查询示例

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

生成本地表

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

把本地表导入远程表

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

更新本地表

  1. update b
  2. set b.列A=a.列A
  3. from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)as a inner join 本地表 b
  4. on a.column1=b.column1

openquery用法需要创建一个连接。

首先创建一个连接创建链接服务器

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

查询

  1. select * FROM openquery(ITSV,  'SELECT *  FROM 数据库.dbo.表名 ')

把本地表导入远程表

  1. insert openquery(ITSV,  'SELECT *  FROM 数据库.dbo.表名 ')
  2. select * from 本地表

更新本地表

  1. update b
  2. set b.列B=a.列B
  3. FROM openquery(ITSV,  'SELECT * FROM 数据库.dbo.表名 ') as a
  4. inner join 本地表 b on a.列A=b.列A

2、opendatasource/openrowset 

  1. SELECT   * FROM   opendatasource( 'SQLOLEDB ',  'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ' ).test.dbo.roy_ta

把本地表导入远程表:

  1. insert opendatasource( 'SQLOLEDB ',  'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ').数据库.dbo.表名
  2. select * from 本地表

关于SQL Server数据库中使用T-SQL语句访问远程数据库的操作就介绍到这里了,希望本次的介绍能够对您有所收获!

SQL Server数据库远程操作的更多相关文章

  1. 如何配置SQL Server数据库远程连接

    本地数据库(SQL Server 2012或以上) 连接外网服务器的数据库,外网的服务器端需要做如下配置: 1.首先是要打开 数据的配置管理工具 2.配置相关的客户端协议,开启TCP/IP 3.数据库 ...

  2. sql server 数据库的操作

    Technorati 标记: sql截取,sql修改 把一个字段的部分取出来,插入到新字段 1 )  //方法二 sql server修改一个字段中的部分数据  update tablename se ...

  3. C#操作access和SQL server数据库代码实例

    在C#的学习中,操作数据库是比较常用的技术,而access和sql server 数据库的操作却有着不同.那么,有哪些不同呢? 首先,需要引用不同的类.因为有着不同的数据引擎. access:usin ...

  4. Sql Server 数据库之间如何进行跨网远程连接访问

    场景说明 现在有一台A电脑和一台B电脑,两台电脑都安装了Sql Server数据库,两台电脑不在一个局域网(我们考虑的是不同网络的两台数据库连接),比如A电脑在公司,B电脑在家里,现在我要在家里用B电 ...

  5. 使用SQL Server 2008远程链接时SQL数据库不成功的解决方法

    关键设置: 第一步(SQL2005.SQL2008): 开始-->程序-->Microsoft SQL Server 2008(或2005)-->配置工具-->SQL Serv ...

  6. [转]C#操作SQL Server数据库

    转自:C#操作SQL Server数据库 1.概述 ado.net提供了丰富的数据库操作,这些操作可以分为三个步骤: 第一,使用SqlConnection对象连接数据库: 第二,建立SqlComman ...

  7. 对于超大型SQL SERVER数据库执行DBCC操作

    原文:对于超大型SQL SERVER数据库执行DBCC操作 对于数据库维护,主要使用DBCC CHECKDB来实现,以下是对大型数据库的使用说明,小型数据库一般直接使用就可以了: 1.2008(200 ...

  8. 详解连接SQL Server数据库的方法,并使用Statement接口实现对数据库的增删改操作

    总结一下,连接SQL Server数据库需要以下几个步骤: 1. 导入驱动Jar包:sqljdbc.jar 2. 加载并注册驱动程序 3. 设置连接路径 4. 加载并注册驱动 5. 连接数据库 6. ...

  9. SQL Server学习之路(七):Python3操作SQL Server数据库

    0.目录 1.前言 2.准备工作 3.简单测试语句 4.提交与回滚 5.封装成类的写法 1.前言 前面学完了SQL Server的基本语法,接下来学习如何在程序中使用sql,毕竟不能在程序中使用的话, ...

随机推荐

  1. jQuery中的trigger和triggerhandler区别

    $("form :input").blur(function(){ // }).keyup(function(){ $(this).triggerHandler("blu ...

  2. VML :Vector Markup Language

    在以前老是浏览器IE<9在不支持SVG情况下,IE一般通过VML来绘制图形,图片,文字等 步骤: 必须在头部添加 <HTML xmlns:v="urn:schemas-micro ...

  3. NO.14 两个div并排,左边为绝对宽度,右边为相对宽度

    两个div并排,左边为绝对宽度,右边为相对宽度,这个问题,我也经常遇到,我一般的处理方法是将最大的容器padding-left固定宽度,左边的固定宽度的一块position:absolute,然后ri ...

  4. .net下载

    1,Http 协议中有专门的指令来告知浏览器, 本次响应的是一个需要下载的文件. 格式如下: Content-Disposition: attachment;filename=filename.ext ...

  5. c#窗体的传值方法

    了解了窗体的显示相关知识,接着总结一下窗体的传值方法:  .通过构造函数  特点:传值是单向的(不可以互相传值),实现简单 实现代码如下: 在窗体Form2中         int value1;  ...

  6. Centos安装php提示virtual memory exhausted: Cannot allocate memory

    由于内存不够,需要在php配置的时候./configure最后添加上 --disable-fileinfo >>./configure --prefix= ...........   -- ...

  7. collections——高性能容器数据类型

    由于最近对机器学习算法感兴趣,一直知道python有一个包collections封装了一些比dict,list之类高级点的类,所以抽空研究下,为接下来的工作准备. 主要参考是https://docs. ...

  8. 三星S5驱动安装

    三星S5的驱动安装一定要先用原装的数据线链接电脑,在电脑里面安装完驱动之后,以后才能每次都用正常的数据线链接 不然的话会提示某些驱动安装不正常..

  9. 在WPF中使用ArcGIS Engine

    原文 http://blog.csdn.net/zzahkj/article/details/9102621 1.首先,新建一个WPF项目,添加引用ESRI.ArcGIS.AxControls.ESR ...

  10. WPF & ArcGIS Engine三维开发入门攻略

    原文 http://www.cnblogs.com/Realh/archive/2010/12/14/1906112.html 前些日子在做ESRI的开发大赛,从刚开始接触ArcGIS Engine( ...