2、SQL Server简单的信息交互
2012-10-26 15:57
211 查看
其实SQL Server信息交互是一门很庞大的学问,我学习了两天学会了一个openrowset函数的用法,下面我简单的介绍一下这个函数:
OPENROWSET包含访问 OLE DB 数据源中的远程数据所需的全部连接信息。当访问链接服务器中的表时,这种方法是一种替代方法,并且是一种使用 OLE DB 连接并访问远程数据的一次性的、特殊的方法。可以在查询的 FROM 子句中像引用表名那样引用 OPENROWSET 函数。依据 OLE DB 提供程序的能力,还可以将 OPENROWSET 函数引用为 INSERT、UPDATE 或 DELETE 语句的目标表。尽管查询可能返回多个结果集,然而 OPENROWSET 只返回第一个。
语法
OPENROWSET ( 'provider_name', { 'datasource' ; 'user_id' ; 'password'|
'provider_string' }, { [ catalog.] [
schema.] object | 'query'
} )
参数列表简介
'provider_name'
字符串,它代表在注册表中指定的 OLE DB 提供程序的友好名。provider_name
没有默认值。
'datasource'
字符串常量,它对应着某个特定的 OLE DB 数据源。datasource
是将被传递到提供程序 IDBProperties 接口以初始化提供程序的 DBPROP_INIT_DATASOURCE 属性。通常,这个字符串包含数据库文件的名称、数据库服务器的名称,或者提供程序能理解的用于查找数据库的名称。
'user_id'
字符串常量,它是传递到指定 OLE DB 提供程序的用户名。user_id
为连接指定安全上下文,并将它作为 DBPROP_AUTH_USERID 属性传递进来以初始化提供程序。
'password'
字符串常量,它是将被传递到 OLE DB 提供程序的用户密码。当初始化提供程序时,将
password 作为 DBPROP_AUTH_PASSWORD 属性传递进来。
'provider_string'
提供程序特定的连接字符串,将它作为 DBPROP_INIT_PROVIDERSTRING 属性传递进来以初始化 OLE DB 提供程序。通常
provider_string 封装初始化提供程序所需的所有连接信息。
catalog
目录或数据库的名称,其中驻留着指定的对象。
schema
架构的名称或指定对象的对象所有者名称。
object
对象名称,它唯一地标识出将要操作的对象。
'query'
是字符串常量,发送到提供程序并由提供程序执行。Microsoft® SQL Server™ 不处理该查询,但处理由提供程序返回的查询结果(直接传递查询)。对于有些提供程序,它们并没有通过表名而是通过命令语言表现自己的表格格式数据,那么将直接传递查询用于这些提供程序是非常有用的。只要查询提供程序支持 OLE DB
Command 对象及其强制接口,那么在远程服务器上就支持直接传递查询。有关更多信息,请参见 SQL Server OLE DB 程序员参考。
注释
如果 OLE DB 提供程序在指定的数据源中支持多个目录和架构,那么就需要目录及架构名称。如果 OLE DB 提供程序并不支持目录和架构,那么可以省略
catalog 及 schema 的值。
如果提供程序只支持架构名,那么必须指定一个两部分名称,形式为 schema.object。如果提供程序只支持目录名,那么必须指定一个三部分名称,形式为
catalog.schema.object。
OPENROWSET 不接受参数变量。
权限
OPENROWSET 权限由传递到 OLE DB 提供程序的用户名的权限确定。
示例
A. 将 OPENROWSET 与 SELECT 语句及用于 SQL Server 的 Microsoft OLE DB 提供程序一起使用
下面的示例使用用于 SQL Server 的 Microsoft OLE DB 提供程序访问
pubs 数据库中的 authors 表,该数据库在一个名为 seattle1
的远程服务器上。从 datasource、user_id 及 password 中初始化提供程序,并且使用 SELECT 语句定义返回的行集。
USE pubs
GO
SELECT a.*FROM OPENROWSET('SQLOLEDB','seattle1';'sa';'MyPass', 'SELECT * FROM pubs.dbo.authors ORDER BY au_lname, au_fname')
AS a
GO
B. 将 OPENROWSET 与对象及用于 ODBC 的 OLE DB 提供程序一起使用
下面的示例使用用于 ODBC 的 OLE DB 提供程序以及 SQL Server ODBC 驱动程序访问
pubs 数据库中的 authors 表,该数据库在一个名为 seattle1
的远程服务器中。提供程序用在 ODBC 提供程序所用的 ODBC 语法中指定的 provider_string 进行初始化,定义返回的行集时使用
catalog.schema.object 语法。
USE pubs
GO
SELECT a.*FROM OPENROWSET('MSDASQL', 'DRIVER={SQL Server};SERVER=seattle1;UID=sa;PWD=MyPass', pubs.dbo.authors) AS
a ORDER BY a.au_lname, a.au_fname
GO
C. 使用用于 Jet 的 Microsoft OLE DB 提供程序
下面的示例通过用于 Jet 的 Microsoft OLE DB 提供程序访问 Microsoft Access
Northwind 数据库中的 orders 表。
说明 下面的示例假定已经安装了 Access。
USE pubs
GO
SELECT a.*FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'c:\MSOffice\Access\Samples\northwind.mdb';'admin';'mypwd', Orders)
AS
a
GO
D. 使用 OPENROWSET 和 INNER JOIN 中的另一个表
下面的示例从本地 SQL Server Northwind 数据库的
customers 表中,以及存储在相同计算机上 Access Northwind 数据库的
orders 表中选择所有数据
说明 下面的示例假定已经安装了 Access。
USE pubs
GO
SE
4000
LECT c.*, o.*FROM Northwind.dbo.Customers AS c INNER JOIN OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'c:\MSOffice\Access\Samples\northwind.mdb';'admin';'mypwd', Orders) AS o ON c.CustomerID = o.CustomerID
GO
E.两天下来自己的工作成果
这是将本地数据库中的表内容导入到远程数据库的表中。下面给出的代码只是一部分。
use pubs
go
if exists(select * from pubs.sys.objects where name = 'sendData')
drop procedure sendData
go
create procedure sendData
@tableName
as
if(select * from openrowset(‘SQLOLEDB','192.129.136.123';'sa';'sa','select * from pubs.sys.objects') = @tableName )
if (select * from openrowset(‘SQLOLEDB','192.129.136.123';'sa';'sa','select * from pubs.dbo.table') != null)
begin
delete from openrowset(‘SQLOLEDB','192.129.136.123';'sa';'sa','select * from pubs.dbo.table')
insert into openrowset(‘SQLOLEDB','192.129.136.123';'sa';'sa','select * from pubs.dbo.table') from select * from pubs.dbo.table
end
go
execute sendData 'table'
go
OPENROWSET包含访问 OLE DB 数据源中的远程数据所需的全部连接信息。当访问链接服务器中的表时,这种方法是一种替代方法,并且是一种使用 OLE DB 连接并访问远程数据的一次性的、特殊的方法。可以在查询的 FROM 子句中像引用表名那样引用 OPENROWSET 函数。依据 OLE DB 提供程序的能力,还可以将 OPENROWSET 函数引用为 INSERT、UPDATE 或 DELETE 语句的目标表。尽管查询可能返回多个结果集,然而 OPENROWSET 只返回第一个。
语法
OPENROWSET ( 'provider_name', { 'datasource' ; 'user_id' ; 'password'|
'provider_string' }, { [ catalog.] [
schema.] object | 'query'
} )
参数列表简介
'provider_name'
字符串,它代表在注册表中指定的 OLE DB 提供程序的友好名。provider_name
没有默认值。
'datasource'
字符串常量,它对应着某个特定的 OLE DB 数据源。datasource
是将被传递到提供程序 IDBProperties 接口以初始化提供程序的 DBPROP_INIT_DATASOURCE 属性。通常,这个字符串包含数据库文件的名称、数据库服务器的名称,或者提供程序能理解的用于查找数据库的名称。
'user_id'
字符串常量,它是传递到指定 OLE DB 提供程序的用户名。user_id
为连接指定安全上下文,并将它作为 DBPROP_AUTH_USERID 属性传递进来以初始化提供程序。
'password'
字符串常量,它是将被传递到 OLE DB 提供程序的用户密码。当初始化提供程序时,将
password 作为 DBPROP_AUTH_PASSWORD 属性传递进来。
'provider_string'
提供程序特定的连接字符串,将它作为 DBPROP_INIT_PROVIDERSTRING 属性传递进来以初始化 OLE DB 提供程序。通常
provider_string 封装初始化提供程序所需的所有连接信息。
catalog
目录或数据库的名称,其中驻留着指定的对象。
schema
架构的名称或指定对象的对象所有者名称。
object
对象名称,它唯一地标识出将要操作的对象。
'query'
是字符串常量,发送到提供程序并由提供程序执行。Microsoft® SQL Server™ 不处理该查询,但处理由提供程序返回的查询结果(直接传递查询)。对于有些提供程序,它们并没有通过表名而是通过命令语言表现自己的表格格式数据,那么将直接传递查询用于这些提供程序是非常有用的。只要查询提供程序支持 OLE DB
Command 对象及其强制接口,那么在远程服务器上就支持直接传递查询。有关更多信息,请参见 SQL Server OLE DB 程序员参考。
注释
如果 OLE DB 提供程序在指定的数据源中支持多个目录和架构,那么就需要目录及架构名称。如果 OLE DB 提供程序并不支持目录和架构,那么可以省略
catalog 及 schema 的值。
如果提供程序只支持架构名,那么必须指定一个两部分名称,形式为 schema.object。如果提供程序只支持目录名,那么必须指定一个三部分名称,形式为
catalog.schema.object。
OPENROWSET 不接受参数变量。
权限
OPENROWSET 权限由传递到 OLE DB 提供程序的用户名的权限确定。
示例
A. 将 OPENROWSET 与 SELECT 语句及用于 SQL Server 的 Microsoft OLE DB 提供程序一起使用
下面的示例使用用于 SQL Server 的 Microsoft OLE DB 提供程序访问
pubs 数据库中的 authors 表,该数据库在一个名为 seattle1
的远程服务器上。从 datasource、user_id 及 password 中初始化提供程序,并且使用 SELECT 语句定义返回的行集。
USE pubs
GO
SELECT a.*FROM OPENROWSET('SQLOLEDB','seattle1';'sa';'MyPass', 'SELECT * FROM pubs.dbo.authors ORDER BY au_lname, au_fname')
AS a
GO
B. 将 OPENROWSET 与对象及用于 ODBC 的 OLE DB 提供程序一起使用
下面的示例使用用于 ODBC 的 OLE DB 提供程序以及 SQL Server ODBC 驱动程序访问
pubs 数据库中的 authors 表,该数据库在一个名为 seattle1
的远程服务器中。提供程序用在 ODBC 提供程序所用的 ODBC 语法中指定的 provider_string 进行初始化,定义返回的行集时使用
catalog.schema.object 语法。
USE pubs
GO
SELECT a.*FROM OPENROWSET('MSDASQL', 'DRIVER={SQL Server};SERVER=seattle1;UID=sa;PWD=MyPass', pubs.dbo.authors) AS
a ORDER BY a.au_lname, a.au_fname
GO
C. 使用用于 Jet 的 Microsoft OLE DB 提供程序
下面的示例通过用于 Jet 的 Microsoft OLE DB 提供程序访问 Microsoft Access
Northwind 数据库中的 orders 表。
说明 下面的示例假定已经安装了 Access。
USE pubs
GO
SELECT a.*FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'c:\MSOffice\Access\Samples\northwind.mdb';'admin';'mypwd', Orders)
AS
a
GO
D. 使用 OPENROWSET 和 INNER JOIN 中的另一个表
下面的示例从本地 SQL Server Northwind 数据库的
customers 表中,以及存储在相同计算机上 Access Northwind 数据库的
orders 表中选择所有数据
说明 下面的示例假定已经安装了 Access。
USE pubs
GO
SE
4000
LECT c.*, o.*FROM Northwind.dbo.Customers AS c INNER JOIN OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'c:\MSOffice\Access\Samples\northwind.mdb';'admin';'mypwd', Orders) AS o ON c.CustomerID = o.CustomerID
GO
E.两天下来自己的工作成果
这是将本地数据库中的表内容导入到远程数据库的表中。下面给出的代码只是一部分。
use pubs
go
if exists(select * from pubs.sys.objects where name = 'sendData')
drop procedure sendData
go
create procedure sendData
@tableName
as
if(select * from openrowset(‘SQLOLEDB','192.129.136.123';'sa';'sa','select * from pubs.sys.objects') = @tableName )
if (select * from openrowset(‘SQLOLEDB','192.129.136.123';'sa';'sa','select * from pubs.dbo.table') != null)
begin
delete from openrowset(‘SQLOLEDB','192.129.136.123';'sa';'sa','select * from pubs.dbo.table')
insert into openrowset(‘SQLOLEDB','192.129.136.123';'sa';'sa','select * from pubs.dbo.table') from select * from pubs.dbo.table
end
go
execute sendData 'table'
go
相关文章推荐
- SpringBoot 集成 rabbitmq 简单实现通过队列进行,订单系统与库存系统,物流系统之间的信息交互
- 简单的sql server->bs或cs数据交互模式
- SQL Server 查看所有数据库所有表大小信息【简单版本】
- struts2 + jquery + json 简单的前后台信息交互
- sql server 关于表中只增标识问题 C# 实现自动化打开和关闭可执行文件(或 关闭停止与系统交互的可执行文件) ajaxfileupload插件上传图片功能,用MVC和aspx做后台各写了一个案例 将小写阿拉伯数字转换成大写的汉字, C# WinForm 中英文实现, 国际化实现的简单方法 ASP.NET Core 2 学习笔记(六)ASP.NET Core 2 学习笔记(三)
- 关于实现移动终端间互通信及相应交互方式的简单设想——畅想一个信息自由流动的时代
- sql server 查询表字段信息
- Android与Js的简单交互例子
- 查询sql server表的字段、注释、类型等信息
- jquery实现ajax提交表单信息的简单方法(推荐)
- Json 数据的简单使用和交互
- 一个简单的用户信息处理理组件
- SQL server中的简单触发器
- Android视频播放项目总结之 适配器绑定视频信息列表显示到界面(适配器简单优化)
- Global Azure上创建、配置、管理SQL Server信息
- 用JavaScript脚本实现Web页面信息交互
- [SQL Server] 游标的简单使用
- 利用存储过程取得SQL Server 2005数据表信息
- SQL SERVER 列出所有用户表,字段名,主键,类型,长度,小数位数等信息(转)
- 移动设备的简单交互设计