`

(转)SqlServer调用OPENQUERY函数远程执行增删改查

 
阅读更多

由于业务需求,我的SqlServer数据库通过MySQL的ODBC驱动连接了一个远程MySQL数据库,在SqlServer上要怎么远程执行MySQL命令呢,经过一番百度,将练习内容整理如下

 

 

 

/*  
OPENQUERY函数,远程执行数据库增删改查  
关于OPENQUERY函数第二个参数不支持拼接变量的方案  
方案1:将OPENQUERY语句整个拼接为字符串,再用EXEC执行该字符串语句  
方案2:将要拼接的变量直接挪移到括号外进行拼接  
  
由于字符串中单引号多层引用需要用到很多个单引号,容易混淆,导致方案1写起来头疼、眼睛疼,但是自由度大,想怎么来就怎么来。  
而方案2能够清晰简洁地使用变量,但经我目前的测试,发现只有SELECT语句和DELETE语句的WHERE子句可以挪移出来(见上方SQL语句),限制太大。  
  
OPENQUERY(MySQL, 'select * from hhp_user where chrusername = ''hhp'';')  
第一个参数为配置好的链接服务器名称,第二个参数为要执行的MySQL命令  
*/  
  
  
DECLARE @username NVARCHAR(50),   
        @pwd VARCHAR(64),   
        @pwdmd5 VARCHAR(64),  
        @sql VARCHAR(2000),   
        @sql2 VARCHAR(2000)  
--设置用户名  
SET @username = 'hhp'  
--设置密码  
SET @pwd = '123456'  
--对密码进行MD5加密  
SET @pwdmd5 = SUBSTRING(sys.fn_sqlvarbasetostr(HASHBYTES('MD5', @pwd)),3,32)  
  
--1.SELECT语句  
SELECT *  FROM  OPENQUERY(MySQL, 'select * from hhp_user where chrusername = ''hhp'';');  
--或  
SELECT * FROM OPENQUERY(MySQL, 'select * from hhp_user') WHERE chrusername = @username  
  
--2.INSERT语句,INTO可省略  
INSERT INTO OPENQUERY(MySQL,'select chrusername,chrpwd from hhp_user;')  VALUES( @username , @pwdmd5)  
  
--3.UPDATE语句  
SET @pwd = 'hhp'  
SET @pwdmd5 = SUBSTRING(sys.fn_sqlvarbasetostr(HASHBYTES('MD5', @pwd)),3,32)  
UPDATE OPENQUERY(MySQL, 'select chrusername, chrpwd from hhp_user where chrusername = ''hhp''') SET chrpwd = @pwdmd5  
  
--4.DELETE语句,FROM可省略  
DELETE FROM OPENQUERY(MySQL, 'select * from hhp_user where chrusername = ''hhp''')  
--或  
SET @username = 'ls'  
DELETE FROM OPENQUERY(MySQL, 'select * from hhp_user') WHERE chrusername = @username   

 

 

 

REFS:http://blog.csdn.net/u012143455/article/details/49929137

分享到:
评论

相关推荐

    dbForge Studio 2023 for SQL Server Enterprise 6.5.1 x64【亲测官网最新版】

    添加了对 GENERATE_SERIES 和 OPENQUERY 关系运算符的支持 新增支持LEFT_SHIFT、RIGHT_SHIFT、BIT_COUNT、GET_BIT、SET_BIT 添加了对APPROX_PERCENTILE_CONT和APPROX_PERCENTILE_DISC聚合函数的支持 添加了对 DATE...

    SQL OPENQUERY 传参数

    以自己做过的实例展现OPENQUERY使用的时候拼接参数

    连接其它服务器数据库查询数据(sql server)

    exec sp_dropserver '链接名', 'droplogins ' --连接远程/局域网数据(openrowset/openquery/opendatasource) --1、openrowset --查询示例 select * from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码...

    sqlserver 多表查询不同数据库服务器上的表

    sqlserver中多表查询不同数据库服务器上的表的实现方法,需要的朋友可以参考下

    分布式查询OPENQUERY

    分布式查询OPENQUERY............

    解决字符长度8000限制

    解决字符长度8000限制 作者: 邹建 经常有人提到,用动态生成SQL语句的方法处理数据时,处理语句超长,无法处理的问题

    经典SQL语句大全

    3、说明:备份sql server --- 创建 备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat' --- 开始 备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表...

    sql经典语句一部分

    经典SQL语句大全 一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建 备份数据的 device USE master EXEC sp_addumpdevice ...

    数据库操作语句大全(sql)

    数据库操作语句大全(sql) 一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建 备份数据的 device USE master EXEC sp_...

    OpenQuery:一个严肃的 OData 查询 url 构建器

    OpenQuery 提供了一种将过滤、选择、展开和其他命令链接在一起的方法。 没有缓存,没有复杂的客户端框架。 OpenQuery 构建 URL,您可以选择如何获取数据。 ##如何使用 [示例 JSFiddle] ( ) var query = new ...

    xls转mdb代码以及.exe执行软件

    /********************** EXCEL导到远程SQL insert OPENDATASOURCE( 'SQLOLEDB', 'Data Source=远程ip;User ID=sa;Password=密码' ).库名.dbo.表名 (列名1,列名2) SELECT 列名1,列名2 FROM OpenDataSource( '...

    OpenQuery:人脸识别查询系统

    OpenQuery的 RIT计算机科学馆的人脸识别查询系统 ##安装 cd /install ./Pico2WavInstallonRPi.sh ./InstallOpenCV.sh ##建造 cd /src mkdir build cd build cmake .. make mv getFacesFromPic .. mv getFaces ....

    数据库sql语句和重要知识点总结

    数据库sql语句和重要知识点总结

    LINQPad_5.40.0_Any_CPU.zip

    在“定位到”对话框(控制+逗号)现在包含的快捷方式,以打开和在一个步骤中执行查询。 现在有Canvas和SVG的控制,除了在5.36添加HTML控件。 通过在AnyCPU版本的查询生成的窗口弹出窗口现在可以可靠地显示在主机进程...

    SQLPrompt_7.3.0.651(包含注册机)

    Ole db provider names are now suggested for OPENROWSET and OPENQUERY Fix for incorrectly qualifying a column using the xml "modify" method (Forum post) Fix for syntax error being introduced when ...

    抽奖信息管理系统的设计思路和基本原理.doc

    DoCmd.SetWarnings False DoCmd.OpenQuery "删除对奖票号", acNormal, acEdit DoCmd.OpenQuery "追加对奖票号", acNormal, acEdit

Global site tag (gtag.js) - Google Analytics