创建Sql数据访问接口
- 格式:docx
- 大小:20.24 KB
- 文档页数:3
SQL SERVER 创建链接服务器SP_addlinkedserver SP_addlinkedserver小结(oracle,sqlserver,access,excel)
-----------------------------SQL SERVER---------------------------- Exec sp_droplinkedsrvloginshizg_ip,Null Exec sp_dropservershizg_ip EXEC sp_addlinkedserver @server='shizg_ip',--被访问的服务器别名 @srvproduct='', @provider='SQLOLEDB', @datasrc='Server2' --要访问的服务器
EXEC sp_addlinkedsrvlogin 'shizg_ip', --被访问的服务器别名 'false', NULL, 'sa', --帐号 'sa' --密码
Select * from shizg_ip.pubs.dbo.orders -----------------------------ORACLE---------------------------- 需要SQL SERVER服务器中安装ORACLE客户端; Exec sp_droplinkedsrvlogindemo,Null Exec sp_dropserver demo go EXEC sp_addlinkedserver @server ='demo', --要创建的链接服务器别名 @srvproduct='Oracle', --产品名称 @provider='MSDAORA', --OLE DB 字符 @datasrc='ServiceName' --数据源 oracle"ora92"network"admin"tnsnames.ora 查看
EXEC sp_addlinkedsrvlogin 'demo', --已建立的链接服务器名 'false', -- 固定 *- NULL, --为每个登陆SQL SERVER的用户使用此链接服务器,否则写用户名 *- 'userid', --帐号 'password' –密码 go
SELECT * FROM demo.. USERID.TABLE --注意用大写,因为在Oracle的数据字典中为大写 数据库的格式必须是链接服务器名..ORACLE用户名.表名.
SELECT * FROM OPENQUERY(demo ,'select * from tbdemo' ) UPDATE OPENQUERY (demo, 'SELECT id FROM tbdemo WHERE id = 101') SET name = 'hello'; INSERT OPENQUERY (demo, 'SELECT id FROM tbdemo') VALUES ('hello'); DELETE OPENQUERY (demo, 'SELECT id FROM tbdemo WHERE name = ''hello'''); 如此则在SQL SERVER中就可以访问ORACLE的数据了。 建立的链接服务器可以在企业管理器中看见.
-----------------------------ACCESS---------------------------- --建立连接服务器 EXEC sp_addlinkedserver 'shizg1', --要创建的链接服务器名称 ‘access', --产品名称 'Microsoft.Jet.OLEDB.4.0', --OLE DB 字符 'd:"testdb"db.mdb' --数据源 -- 盘符:"路径"文件名 -- ""网络名"共享名"文件名 (网络版本) GO
--创建链接服务器上远程登录之间的映射 --链接服务器默认设置为用登陆的上下文进行 --现在我们修改为连接链接服务器不需使用任何登录或密码 execsp_addlinkedsrvlogin 'shizg1','false' go
select * from shizg1...mytable -----------------------------EXCEL---------------------------- --建立连接服务器 EXEC sp_addlinkedserver 'shizg1_ex', --要创建的链接服务器名称 'ex', --产品名称 'Microsoft.Jet.OLEDB.4.0', --OLE DB 字符 'd:"testdb"mybook.xls' , --数据源 -- 盘符:"路径"文件名-- ""网络名"共享名"文件名 (网络版本) null, 'Excel 5.0' --OLE DB 提供程序特定的连接字符串 GO
----创建链接服务器上远程登录之间的映射 --链接服务器默认设置为用登陆的上下文进行 --现在我们修改为连接链接服务器不需使用任何登录或密码 execsp_addlinkedsrvlogin 'shizg1_ex','false' go
--查询数据 select * from shizg1_ex...sheet3$
-----------------------------MS SQL---------------------------- --建立连接服务器 EXEC sp_addlinkedserver 'shizg1_mssql', --要创建的链接服务器名称 'ms', --产品名称 'SQLOLEDB', --OLE DB 字符 '192.168.1.1' --数据源 GO
--创建链接服务器上远程登录之间的映射 EXEC sp_addlinkedsrvlogin 'shizg1_mssql', 'false', NULL, 'shizg1', --远程服务器的登陆用户名 'sa' --远程服务器的登陆密码 go
--查询数据 select * from shizg1_mssql.pubs.dbo.jobs --还有一个更简单的办法 --这种方式在链接服务器建立后,它是默认开放RPC的 --建立连接服务器 EXEC sp_addlinkedserver '192.168.1.1', --要创建的链接服务器名称 'SQL Server' --这里就用数据源作名称 GO
--创建链接服务器上远程登录之间的映射 EXEC sp_addlinkedsrvlogin '192.168.1.1', 'false', NULL, 'shizg1', --远程服务器的登陆用户名 'sa' --远程服务器的登陆密码 go
--查询数据 select * from [192.168.1.1].pubs.dbo.jobs go 内容提示:关于跨服务器直接连接存取SQL Server数据库的问题,有两种方法可以实现: 一、利用OPENDATASOURCE直接连接即时存取。 insert 本地库名..表名 select * from OPENDATASOURCE( 'SQLOLEDB', 'Data Source=远程ip;User ID=sa;Password=密码' ).库名.dbo.表名 二、使用较稳定的联结服务器(sp_addlinkedserver): EXEC sp_addlinkedserver '别名','','MSDASQL',NULL,NULL,'DRIVER={SQL Server};SERVER=远程名;UID=用户;PWD=密码;' exec sp_addlinkedsrvlogin @rmtsrvname='别名',@useself='false',@locallogin='sa',@rmtuser='sa',@rmtpassword='密码' GO 然后你就可以如下: select * from 别名.库名.dbo.表名 insert 库名.dbo.表名 select * from 别名.库名.dbo.表名 select * into 库名.dbo.新表名 from 别名.库名.dbo.表名 go --创建链接服务器 exec sp_addlinkedserver 'lnk','','SQLOLEDB','另一台机' exec sp_addlinkedsrvlogin 'lnk','false',null,'sa','密码' go --插入数据: select * insert into [02].dbo.[002] from lnk.[01].dbo.[001] --上面的插入语句写错了,改一下: select * into [02].dbo.[001] from lnk.[01].dbo.[001] --如果只临时插入数据,可以用: select * into [02].dbo.[001] from openrowset('sqloledb','另一台机';'sa';'密码',[01].dbo.[001])