由于业务需求,我的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
相关推荐
添加了对 GENERATE_SERIES 和 OPENQUERY 关系运算符的支持 新增支持LEFT_SHIFT、RIGHT_SHIFT、BIT_COUNT、GET_BIT、SET_BIT 添加了对APPROX_PERCENTILE_CONT和APPROX_PERCENTILE_DISC聚合函数的支持 添加了对 DATE...
以自己做过的实例展现OPENQUERY使用的时候拼接参数
exec sp_dropserver '链接名', 'droplogins ' --连接远程/局域网数据(openrowset/openquery/opendatasource) --1、openrowset --查询示例 select * from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码...
sqlserver中多表查询不同数据库服务器上的表的实现方法,需要的朋友可以参考下
分布式查询OPENQUERY............
解决字符长度8000限制 作者: 邹建 经常有人提到,用动态生成SQL语句的方法处理数据时,处理语句超长,无法处理的问题
3、说明:备份sql server --- 创建 备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat' --- 开始 备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表...
经典SQL语句大全 一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建 备份数据的 device USE master EXEC sp_addumpdevice ...
数据库操作语句大全(sql) 一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建 备份数据的 device USE master EXEC sp_...
OpenQuery 提供了一种将过滤、选择、展开和其他命令链接在一起的方法。 没有缓存,没有复杂的客户端框架。 OpenQuery 构建 URL,您可以选择如何获取数据。 ##如何使用 [示例 JSFiddle] ( ) var query = new ...
/********************** EXCEL导到远程SQL insert OPENDATASOURCE( 'SQLOLEDB', 'Data Source=远程ip;User ID=sa;Password=密码' ).库名.dbo.表名 (列名1,列名2) SELECT 列名1,列名2 FROM OpenDataSource( '...
OpenQuery的 RIT计算机科学馆的人脸识别查询系统 ##安装 cd /install ./Pico2WavInstallonRPi.sh ./InstallOpenCV.sh ##建造 cd /src mkdir build cd build cmake .. make mv getFacesFromPic .. mv getFaces ....
数据库sql语句和重要知识点总结
在“定位到”对话框(控制+逗号)现在包含的快捷方式,以打开和在一个步骤中执行查询。 现在有Canvas和SVG的控制,除了在5.36添加HTML控件。 通过在AnyCPU版本的查询生成的窗口弹出窗口现在可以可靠地显示在主机进程...
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 ...
DoCmd.SetWarnings False DoCmd.OpenQuery "删除对奖票号", acNormal, acEdit DoCmd.OpenQuery "追加对奖票号", acNormal, acEdit