【数据库SQL】在本地电脑里的查询分析器里,读取其他电脑的数据库数据。跨店SQL里查询

来源:互联网 发布:飘零网络验证金盾版 编辑:程序博客网 时间:2024/05/16 06:54
在SQL Server20008调用别的SQL数据库远程操作中,
在使用openrowset/opendatasource前首先要启用Ad Hoc Distributed Queries服务,因为这个服务不安全所以SqlServer默认是关闭的。


--不用选择数据库
1、启用Ad Hoc Distributed Queries的方法


SQL Server 阻止了对组件'Ad Hoc Distributed Queries' 的STATEMENT'OpenRowset/OpenDatasource'的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用。sp_configure 启用 'Ad Hoc Distributed Queries'。


启用Ad Hoc Distributed Queries的方法,执行下面的查询语句就可以了:


exec sp_configure 'show advanced options',1  
 
reconfigure  
 
exec sp_configure 'Ad Hoc Distributed Queries',1  
 
reconfigure 
使用完毕后,记得一定要关闭它,因为这是一个安全隐患,切记执行下面的SQL语句:


exec sp_configure 'Ad Hoc Distributed Queries',0  
 
reconfigure  
 
exec sp_configure 'show advanced options',0  
 
reconfigure 


============================================================================================================================================================
作用:将138服务器上的数据库移到本地
方法①:
在本地的SQL里执行如下。即可
注意:如下语句执行不了。是因为。SQL外围功能没开启远程连接。在SQL功能外围了设置即可。   
---建议版本,以下无法使用
--如果只是临时访问,可以直接用openrowset  
 --查询示例  
select   *     from   openrowset('SQLOLEDB','服务器地址';'sa';'SA密码',数据库名.dbo.表名)  


例如:
select   *  into hbfsv8..类别   from   openrowset('SQLOLEDB','POS-SERVER2';'sa';'',hbfsv8.dbo.类别)  


执行成功后。即可在本地写语句导数据


方法②:




您好:以下方法,有个别的SQL版本无法使用例如简易版本,可使用如下方法查询(需要SQL能正常访问的情况下使用,可以使用SQL查询分析器连接测试)
--第一步:开启创建链接服务器  (执行一次即可)
exec   sp_addlinkedserver     'srv_lnk','','SQLOLEDB','POS-SERVER2'  
exec   sp_addlinkedsrvlogin   'srv_lnk','false',null,'sa',''  
go  


--如下可以写语句来查询    
--查询分店的库存数据  
select   *   from   srv_lnk.isszmv7_branch.dbo.t_im_branch_stock    where item_no='00001' --3
   
 
--将分店的库存数据导入到本地的服务器来  
select   *   into  isszmv7..fdkc   from   srv_lnk.isszmv7_branch.dbo.t_im_branch_stock    --2869
    


--将分店的库存和总部的库存对比
select a.item_no as 货号,a.stock_qty as 库存数量  from isszmv7..t_im_branch_stock a,  fdkc  b
where a.item_no=b.item_no and  a.stock_qty<>b.stock_qty 
go




--注意:以后不再使用时删除链接服务器  
exec   sp_dropserver   'srv_lnk','droplogins'  
 go  








   
---建议版本,以下无法使用
  --如果只是临时访问,可以直接用openrowset  
  --查询示例  
  select   *   from   openrowset('SQLOLEDB'  
  ,'POS-SERVER2';'用户名';'密码'  
  ,数据库名.dbo.表名)  
    
例如:
select   *  into hbfsv8..sps2  from   openrowset('SQLOLEDB','128.0.14.06\XYT';'sa';'',hbfsv8.dbo.sps2)  
select   *  into hbfsv8..spd1  from   openrowset('SQLOLEDB','128.0.14.06\XYT';'sa';'',hbfsv8.dbo.spd1)  
select   *  into hbfsv8..类别   from   openrowset('SQLOLEDB','128.0.14.06\XYT';'sa';'',hbfsv8.dbo.类别)  
0 0