`

(转)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

分享到:
评论

相关推荐

    SQL Server调用WebService方法

    在SQL Server 2005中调用WebService方法是一种集成外部服务到数据库操作中的技术,这对于数据交互和扩展SQL Server的功能至关重要。以下将详细介绍如何实现这一功能,以及相关的知识点。 一、理解SQL Server与Web ...

    通过SQL Server操作MySQL的步骤和方法

    "SQL Server 操作 MySQL 的步骤和方法" 在多种数据库环境下,经常会遇见在...可以查询,可以在 SQL SERVER 中单独执行增删改,可以正常执行。但在存储过程中,增删改增加事务时就会报错,将事务注释又可以进行增删改。

    基于SQL Server链接服务器实现Proficy Historian数据库的访问.pdf

    - 通过链接服务器访问其他数据库系统时,SQL Server实例可以通过OpenQuery函数调用其他服务器上的SQL语句,并获得查询结果。 4. SQL Server对Proficy Historian数据库的访问和数据整合方法 - 文章通过实例展示了...

    vc Excel导入SQLserver

    4. **SQL Server 分布式查询**:利用`OPENQUERY`函数,可以在SQL Server查询中执行远程数据源的查询,从而导入Excel数据。 5. **ActiveX数据对象(ADO)和OLE DB Provider**:通过编程方式,使用ADO和特定的OLE DB提供...

    MS SQL Server对文件内容进行全文检索的查询

    最后,MS SQL Server调用索引服务器进行查询有两种常见方法。一是使用`OpenQuery`函数,结合`CONTAINS`函数在SQL语句中进行全文检索。二是利用SQL Server的全文搜索功能,将文件内容存储在`image`字段,文件类型信息...

    SQL中调用ORACLE存储过程.pdf

    `OPENQUERY`函数允许在远程服务器上执行SQL语句,如`SELECT StatusCode = p_msg FROM OPENQUERY(HI4DB_MS, '' + QueryStr + '')`。 5. 处理不同情况:根据需要,你可以调整查询语句以获取不同数量的结果。例如,`...

    SQL Server的链接服务器技术小结

    SQL Server的链接服务器技术是一种强大的特性,它允许SQL Server实例与其他数据源进行交互,包括其他SQL Server实例、MySQL、Oracle数据库、甚至文本文件。通过链接服务器,你可以执行跨数据库的查询,实现数据集成...

    Oracle SQLSERVER相互访问.docx

    - RPC 和 RPC OUT 是 SQL Server 中的选项,允许远程调用过程。启用这两个选项对于在链接服务器上执行远程存储过程至关重要: ```sql exec sp_serveroption @server='DBLINK_DGPRIMARY', @optname= 'rpc', @...

    SQL Server的链接服务器技术小结.docx

    SQL Server的链接服务器技术是一种强大的特性,允许在不同的数据源之间进行跨服务器查询和操作,如MySQL、Oracle、文本文件甚至是其他SQL Server实例。本文主要总结了如何使用SQL Server的链接服务器来连接到不同...

    SQLServer的链接服务器技术小结[参考].pdf

    通过链接服务器,用户可以执行跨服务器的JOIN操作,调用远程服务器的存储过程,甚至执行事务处理跨越多个数据库系统。然而,需要注意的是,这种技术可能会增加网络负载和性能开销,因此在设计和使用时需要谨慎考虑...

    SQL Server全文检索查询浅析

    在SQL Server中调用索引服务通常涉及使用`OpenQuery`函数,构造查询语句,例如,通过`CONTAINS`函数指定要搜索的关键词。需要注意的是,由于SQL语句不支持动态字符串,因此可能需要在应用程序(如C#)中预先构建查询...

    SQL专家门诊部分源代码.rar

    理解如何使用分布式查询,包括链接服务器、开放查询(OPENQUERY)和OPENROWSET函数,可以帮助开发跨数据库的应用。 通过深入学习这些知识点,开发者和数据库管理员可以更好地管理和优化SQL Server环境,从而提高...

    SqlServer2005 链接服务器用法

    在SQL Server 2005中,链接服务器功能允许用户执行跨数据库查询,即使这些数据库不在同一台服务器上。在本例中,我们探讨的是如何使用SQL Server 2005连接到MySQL数据库进行数据交互。以下是实现这一目标的具体步骤...

    HANA ODBC驱动64位

    例如,在SQL脚本或存储过程中,可以使用OPENQUERY函数来执行HANA上的SQL语句,或者使用SSIS(SQL Server Integration Services)进行数据导入导出。 5. **性能优化**:为了最大化性能,需要了解并调整ODBC驱动的...

    经典SQL语句大全

    在SQLServer中分组时:不能以text,ntext,image类型的字段作为分组依据 在selecte统计函数中的字段,不能和普通的字段放在一起; 13、对数据库进行操作: 分离数据库: sp_detach_db; 附加数据库:sp_attach_db 后...

    SQL语言大全

    ### SQL语言大全之函数应用详解 #### 概述 在SQL语言中,函数是一类重要的工具,用于处理从数据库表中检索出的数据,使其成为更有意义的信息。这不仅包括简单的数学计算,还涉及数据类型转换、数值解析、值的组合...

    跨服务器查询导入数据的sql语句

    首先,给出的SQL语句使用了`OPENROWSET`函数,这是SQL Server提供的一种直接访问外部数据源的机制,允许执行一次性的、非持久化的分布式查询。在这个例子中,`OPENROWSET`用于连接到远程服务器`192.168.2.97`上的...

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

    在SQLServer中分组时:不能以text,ntext,image类型的字段作为分组依据 在selecte统计函数中的字段,不能和普通的字段放在一起; 13、对数据库进行操作: 分离数据库: sp_detach_db; 附加数据库:sp_attach_db ...

    odbc连接cache

    为了能够跨数据库执行查询操作,需要在SQL Server中创建链接服务器。具体步骤如下: 1. **使用`sp_addlinkedserver`命令:** - `EXEC sp_addlinkedserver @server='test', @srvproduct='', @provider='MSDASQL', @...

Global site tag (gtag.js) - Google Analytics