电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

使用SQLServer的OPENROWSET函数

4页
  • 卖家[上传人]:cn****1
  • 文档编号:488210335
  • 上传时间:2024-01-19
  • 文档格式:DOC
  • 文档大小:22.51KB
  • / 4 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、使用SQL Server的OPENROWSET你可能常常会需要运行一个ad hoc查询从远程OLE DB数据源提取数据,或者批量向SQL Server表导入数据。在这种情况下,你可以在T-SQL(Transact-SQL,微软对SQL的扩展)中用OPENROWSET函数给数据源传入一个连接串和查询来提取需要你可能常常会需要运行一个ad hoc查询从远程OLE DB数据源提取数据,或者批量向SQL Server表导入数据。在这种情况下,你可以在T-SQL(Transact-SQL,微软对SQL的扩展)中用OPENROWSET函数给数据源传入一个连接串和查询来提取需要的数据。 你可以使用OPENROWSET函数从任何支持注册OLE DB的数据源获取数据,比如从SQL Server或Access的远程实例中提取数据。如果你用OPENROWSET从SQL Server实例中获取数据,该实例必须配置为允许ad hoc分布式查询。 要配置远程SQL Server实例支持ad hoc查询,需要使用系统存储过程sp_configure先设置advanced options,再启用Ad Hoc Dist

      2、ributed Queries(ad hoc分布式查询)。请看下面的T-SQL脚本:EXEC sp_configure show advanced options, 1; GO RECONFIGURE; GO EXEC sp_configure Ad Hoc Distributed Queries, 1 GO RECONFIGURE; GO 要注意的是,在运行完存储过程之后,你必须运行“RECONFIGURE”命令。 一旦你配置好了远程SQL Server实例,你就可以对它使用OPENROWSET函数。这个函数可以在SELECT语句的FROM从句里使用。下面的例子显示了该函数的基本语法:OPENROWSET(provider, connection string, target) 可以看到,这个函数有三个参数: Provider 某特定数据源支持的OLE DB提供者的人机友好名称(ProgID)。Provider的名字必须用单引号括起来。 Connection string 连接串。它是与具体提供者provider相关的字符串,包括连接到给字符串中指定的数据源所需要的细节信息。根据pr

      3、ovider的不同,连接串信息需要用一对或多对单引号括起来。 Target target参数可以使一个数据库对象或者一个查询。 Object 数据库对象的名字,比如表或者视图的名称。对象的完整名字必须提供,它们不需要用单引号括起来。 Query query是从远程数据源提取数据的Select语句。Query必须用单引号括起来。 下面的例子展示了OPENROWSET函数的用法:SELECT Employees.* FROM OPENROWSET( SQLNCLI, Server=SqlSrv1;Trusted_Connection=yes, SELECT EmployeeID, FirstName, LastName, JobTitle FROM AdventureWorks.HumanResources.vEmployee ORDER BY LastName, FirstName ) AS Employees 注意该Select语句的FROM从句中使用了OPENROWSET函数和3个参数。第一个参数SQLNCLI是SQL Server OLE DB提供者的名称。第二个参数是连接串。对于

      4、SQL Server提供者,整个连接串应该被单引号括起来,连接串内的每一组信息用分号分割。在上面的例子中,第一组信息指定了目标服务器SqlSrv1,第二组信息指定了该连接可信任连接。在指定目标Server时,如果实例不是该Server的默认实例,则一定要在连接串中指定实例名。(注意:SQLNCLI提供者还支持其他参数。) OPENROWSET函数的最后一个参数是实际执行的Select语句。注意SQL语句中使用了完整对象名来访问视图。 这样我们就可以使用OPENROWSET函数了。函数返回一个结果集(我把它用AS命名为“Employees”),From使用该结果集的方式与使用其他普通查询的方式一样。 我们在上面提到,你也可以从SQL Server以外的数据源提取数据。例如:下面的Select语句查询微软Access数据库的Employees表。SELECT Employees.* FROM OPENROWSET( Microsoft.Jet.OLEDB.4.0, C:DataEmployees.mdb;admin; , SELECT EmployeeID, FirstName, Last

      5、Name, JobTitle FROM Employees ORDER BY LastName, FirstName ) AS Employees 你可能注意到了,这次的provider不同于我们在访问SQL Server时使用的Provider。在本例中,Provider是Microsoft.Jet.OLEDB.4.0(注意:对于Access 2007,有新的Provider可用)。 连接串与前面例子中的写法也不一样。整个连接串从头到尾分成了三部分,每一部分都被单引号单独括起来,各部分之间用分号分割。 第一部分指定了Access数据库文件的路径和文件名,后面紧跟着是用户账号admin(Access数据库内部的管理员账号)。第三部分是一个空字符串,是Access数据库的密码。因为admin账号没有设定密码,所以使用空字符串。如果该账号设置了密码,应该把密码写在第三部分。 整个连接串与后面用来从Access数据库查询数据的Select语句用逗号“,”隔开。(我在Access中使用的Employees表是从SQL Server的vEmployee视图导入的) 这就是从Access数据库查询

      6、数据要做的全部事情。你的查询会返回一个结果集,该结果集与访问本地SQL Server数据库时得到的结果集类似。 你也可以使用OPENROWSET函数从多个数据源中查询数据。例如:下面的例子我使用inner join(内连接)从远程SQL Server实例和Access数据库查询数据。SELECT e1.EmployeeID, e2.FirstName, e2.LastName, e1.JobTitle FROM OPENROWSET( SQLNCLI, Server=SqlSrv1;Trusted_Connection=yes;, SELECT EmployeeID, FirstName, LastName, JobTitle FROM AdventureWorks.HumanResources.vEmployee ) AS e1 INNER JOIN OPENROWSET( Microsoft.Jet.OLEDB.4.0, C:DataEmployees.mdb; admin; , SELECT EmployeeID, FirstName, LastName, JobTitle FR

      7、OM Employees ) AS e2 ON e1.EmployeeID = e2.EmployeeID ORDER BY e2.LastName, e2.FirstName 注意:外层的Select语句从两个表返回数据从SQL Server返回员工ID和工作头衔,从Access数据库返回姓和名。由于你可以得到可靠的连接查询,尽管你是从本地SQL Server实例连接表中查询的数据,你可以处理这些数据。 现在我们来看看OPENROWSET函数的另一个重要功能批量导入。为了举例需要,我在AdventureWorks数据库中用下面的脚本创建了表Employees并导入数据。USE AdventureWorks GO IF OBJECT_ID (NEmployees, NU) IS NOT NULL DROP TABLE dbo.Employees GO SELECT EmployeeID, FirstName, LastName, JobTitle INTO Employees FROM HumanResources.vEmployee GO ALTER TABLE Employees

      8、ADD ResumeFile VARBINARY(MAX) NULL GO 注意:我没有把ResumeFile列的数据导入,它的数据类型是VARBINARY(MAX)。我会用下面的Update语句把Employee1.docx文件作为二进制数据批量导入到该列。USE AdventureWorks GO UPDATE Employees SET ResumeFile = ( SELECT * FROM OPENROWSET(BULK C:DataEmployee1.docx, SINGLE_BLOB) AS ResumeContent) WHERE EmployeeID = 1 可以看到,OPENROWSET函数提供了BULK选项,你可以用它来导入数据。要使用BULK选项,需要指定你想要导入的文件,并指定导入方式。既然我想把文件以二进制形式导入,我在上面的例子中使用了SINGLE_BLOB选项。当然,如果该列支持字符型数据,我也可以用SINGLE_CLOB或者SINGLE_NCLOB选项指定数据存储为字符类型格式。此外,在使用OPENROWSET函数批量导入数据功能时,你也可以使用格式化的文件,不过关于格式化文件的用法超出了本文讨论的范围。

      《使用SQLServer的OPENROWSET函数》由会员cn****1分享,可在线阅读,更多相关《使用SQLServer的OPENROWSET函数》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    监控施工 信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.