sql访问远程数据库

  1、启用Ad Hoc Distributed Queries

  在使用openrowset/opendatasource前搜先要启用Ad Hoc Distributed Queries服务,因为这个服务不安全所以SqlServer默认是关闭的

  启用Ad Hoc Distributed Queries的方法

  SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource'

  的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用

  sp_configure 启用 'Ad Hoc Distributed Queries'.有关启用 'Ad Hoc Distributed Queries' 的详细

  信息,请参阅 SQL Server 联机丛书中的 "外围应用配置器".

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

  exec sp_configure 'show advanced options',1

  reconfigure

  exec sp_configure 'Ad Hoc Distributed Queries',1

  reconfigure

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

  exec sp_configure 'Ad Hoc Distributed Queries',0

  reconfigure

  exec sp_configure 'show advanced options',0

  reconfigure

  2、使用示例

  --创建链接服务器

  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 本地表

  3、自己写的例子

  --openrowset使用OLEDB的一些例子

  select * from openrowset('SQLOLEDB','Server=(local);PWD=***;UID=sa;','select * from TB.dbo.school') as t

  select * from openrowset('SQLOLEDB','Server=(local);PWD=***;UID=sa;',TB.dbo.school) as t

  select * from openrowset('SQLOLEDB','Server=(local);Trusted_Connection=yes;',TB.dbo.school) as t

  select * from openrowset('SQLOLEDB','(local)';'sa';'***','select * from TB.dbo.school') as t

  select * from openrowset('SQLOLEDB','(local)';'sa';'***',TB.dbo.school) as t

  select * from openrowset('SQLOLEDB','(local)';'sa';'***','select school.id as id1,people.id as id2 from TB.dbo.school inner join TB.dbo.people on school.id=people.id') as t

  --openrowset使用SQLNCLI的一些例子(SQLNCLI在SqlServer2005以上才能使用)

  select * from openrowset('SQLNCLI','(local)';'sa';'***','select * from TB.dbo.school') as t

  select * from openrowset('SQLNCLI','Server=(local);Trusted_Connection=yes;','select * from TB.dbo.school') as t

  select * from openrowset('SQLNCLI','Server=(local);UID=sa;PWD=***;','select * from TB.dbo.school') as t

  select * from openrowset('SQLNCLI','Server=(local);UID=sa;PWD=***;',TB.dbo.school) as t

  select * from openrowset('SQLNCLI','Server=(local);UID=sa;PWD=***;DataBase=TB','select * from dbo.school') as t

  --openrowset其他使用

  insert openrowset('SQLNCLI','Server=(local);Trusted_Connection=yes;','select name from TB.dbo.school where id=1') values('ghjkl')/*要不要where都一样,插入一行*/

  update openrowset('SQLNCLI','Server=(local);Trusted_Connection=yes;','select name from TB.dbo.school where id=1') set name='kkkkkk'

  delete from openrowset('SQLNCLI','Server=(local);Trusted_Connection=yes;','select name from TB.dbo.school where id=1')

分类:mssql数据库 时间:2012-01-07 人气:7
本文关键词:
分享到:

相关文章

  • Linux下如何将数据库脚本文件从sh格式变为sql格式 2012-01-01

      1. sh文件内容   本文中的文件名为example.sh,其内容如下:   #!/bin/bash   function Init()   {   if [ -f"example.sql" ]   then   echo"example.sql is exits and is deleting it,then recreate it"   rm -fexample.sql   else   echo"example.sql no exits and is creating it"   f

  • Sql Server 存储过程实例讲解 2012-01-02

      一、遇到的问题   我们在之前学习的课程写了不少的批处理语句,这些批处理语句存在两个问题:   1.没法像函数那样传参数运行(自定义化)   2.没法像函数那样可以反复地调用(功能化模块化)   说到这里,我们可以猜到,数据库中应该可以建立函数形式的数据库对象来解决这样的问题。但是介绍这种数据库对象之前,我们再来看几个需要解决的问题:   我们已经学会把一条select语句封装在视图中,但是它只能用来查询,如果我们希望进行其它操作,比如增删改记录、建删库表等,是不能用视图来完成的。   另一

  • 修改SQL Server Management Studio默认设置提高开发效率 2012-01-03

    修改SQL Server Management Studio默认设置提高开发效率 2012导脚本默认没有判断对象是否存在的,导致执行删除创建的脚本会先报一次错。可以在工具=>选项==>sqlserver对象资源管理器中的编写脚本的.检查是否存在对象。 可以设置默认数据库。可以对数据库用户设置最近主要开发的数据库为默认,这样直接点工具栏的新建查询就不会每次需要选数据库了。 个人习惯,不喜欢启动ssms时候自动弹出一个新的查询而且还需要你去填写用户和密码。我是每次都要取消,当然你也可以去

  • 突破Sql 防注入过滤程序继续注入的一点方法.经验.技巧总结 2012-01-03

    看了以下帖子想写一点东西,原帖内容如下: 标题:防注入真的有用吗? 作者:798146410 时间:2012-2-22 21:39 内容: 现在网上流传很多防注入代码。这些真的有用吗?这是在网上找的一个防注入代码 例如: ''''--------定义部份------------------ DimFy_Post,Fy_Get,Fy_In,Fy_Inf,Fy_Xh,Fy_db,Fy_dbstr''''自定义需要过滤的字串,用"|"分隔Fy_In="''''|;|and|exec|insert|se

  • 在EA中将画出的ER图转换成SQL脚本 2012-01-04

    在进行数据库设计的时候,想着正好安装着EA软件呢,看能不能用EA画ER模型。结果发现不仅能画,而且还能进行整套数据库设计(生成SQL脚本)。 下面以机房收费系统用户--学生为例。学生可以查看余额,可以查看上机记录,可以查看上机状态,可以查看充值记录,可以修改密码。步骤如下: (1)建立ER图之前,首先在EA中应选择使用哪种数据库。如图所示: (3)转换成数据模型图,选中所有的实体和属性名,右击,点击转换出现如图: (5)任何的数据库表都需要主键,外键和约束,下面我们对这些表进行修改,选择任何一个

  • 计世网sql注射,xss大礼包集合 2012-01-04

    多个sql注射+大量xss+一个上传,后台泄露,报错等。 面对G哥,压力大,果断翻硬盘找啊。找。 不说了。看详情。 注射漏洞: http://www.ccw.com.cn/oa/category/index.php?categoryId=165'%20or%20'1'= http://internet.ccw.com.cn/commlist/index.php?categoryId=1393'%20or%20% http://cio.ccw.com.cn/gq/index.php?nodeId=

  • php云两处SQL二次注入 2012-01-04

    php云两处二次注入 最新版。两个注入点。顺带一个绕过waf的小技巧。 第一处:/member/model/index.class.php 39行 function index_action() { $this->public_action(); $this->member_satic(); $this->com_cache(); $resume = $this->obj->DB_select_once("resume","`uid`='".$this->ui

  • SQL Server 2014新特性Data Explorer ForExcel的特点 2012-01-06

    Data Explorer是即将发布的SQL Server 2014里的一个新特性,借助这个特性讲使企业中的自助式的商业智能变得更加的灵活,从而也降低了商业智能的门槛。 Data Explorer Preview for Excel提供了一种新的方式来为自助式的商业智能发现数据,整合数据以及提炼数据。如果你对它还比较陌生,那么如下五点将使你了解它如何提升你在Excel中处理数据的方法。 借助Data Explorer,你可以: 1. 发现数据 Data Explorer带来了在Excel中数据检

  • SQL Server 2012中自带的SSDS多维数据集的浏览功能 2012-01-07

    在SQL Server 2012自带的SQL Server Data Tools(SSDT),上个版本中SQL Server 2008中对应为BIDS, 已经废除了多维数据集的数据浏览功能,同时在SSMS中也同步废除,只能浏览单维数据。 解决方法:在维度浏览界面,点击“Analyze in Excel”,在相应的Excel界面完成浏览。 www.2cto.com 关于“Management Studio 和多维数据集设计器中的多维数据集浏览器已被删除”的详细, 请看MSDN:http://msd

Copyright (C) quwantang.com, All Rights Reserved.

趣玩堂 版权所有 京ICP备15002868号

processed in 0.089 (s). 10 q(s)