select *
 from openrowset('MSDASQL','DRIVER={SQL Server};SERVER=192.168.0.1;',pubs.dbo.authors) select *from OPENDATASOURCE('SQLOLEDB','Data Source=192.168.0.1;User ID=sa;Password=С‘).[qumeierptest].dbo.[AssistOrderProduct] a 
由于我是查公司内部的服务器 所以使用域控,我修改一下 也是不行
select * from OPENDATASOURCE('SQLOLEDB.1','Data Source=192.168.0.1;Integrated Security=SSPI;Persist Security Info=False;').[qumeierptest].dbo.[AssistOrderProduct] 
在搜索以前的帖子
发现一个 sasacat(傻傻猫)写的连接ORACLE的创建链接数据库   
  create   shared   public   database   link   another_database   
      connect   to   用户名   identified   by   密码   
      using   'tns   name';     
    
  使用的时候就是   
    
  select   *   from   tablename@another_database;

解决方案 »

  1.   

    不同服务器数据库之间的数据操作--创建链接服务器 
    exec sp_addlinkedserver   'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 ' 
    exec sp_addlinkedsrvlogin  'ITSV ', 'false ',null, '用户名 ', '密码 ' --查询示例 
    select * from ITSV.数据库名.dbo.表名 --导入示例 
    select * into 表 from ITSV.数据库名.dbo.表名 --以后不再使用时删除链接服务器 
    exec sp_dropserver  'ITSV ', 'droplogins ' --连接远程/局域网数据(openrowset/openquery/opendatasource) 
    --1、openrowset --查询示例 
    select * from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名) --生成本地表 
    select * into 表 from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名) --把本地表导入远程表 
    insert openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名) 
    select *from 本地表 --更新本地表 
    update b 
    set b.列A=a.列A 
     from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)as a inner join 本地表 b 
    on a.column1=b.column1 --openquery用法需要创建一个连接 --首先创建一个连接创建链接服务器 
    exec sp_addlinkedserver   'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 ' 
    --查询 
    select * 
    FROM openquery(ITSV,  'SELECT *  FROM 数据库.dbo.表名 ') 
    --把本地表导入远程表 
    insert openquery(ITSV,  'SELECT *  FROM 数据库.dbo.表名 ') 
    select * from 本地表 
    --更新本地表 
    update b 
    set b.列B=a.列B 
    FROM openquery(ITSV,  'SELECT * FROM 数据库.dbo.表名 ') as a  
    inner join 本地表 b on a.列A=b.列A --3、opendatasource/openrowset 
    SELECT   * 
    FROM   opendatasource( 'SQLOLEDB ',  'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ' ).test.dbo.roy_ta 
    --把本地表导入远程表 
    insert opendatasource( 'SQLOLEDB ',  'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ').数据库.dbo.表名 
    select * from 本地表  
      

  2.   

    if object_id('BAK200801') is not null
       drop table BAK200801
    if object_id('BAK200802') is not null
       drop table BAK200802
    if object_id('BAK200804') is not null
       drop table BAK200804
    if object_id('usp_GetAllcount') is not null
       drop proc usp_GetAllcount
    go
    create table BAK200801(name_ch varchar(10),count_i int)
    insert into BAK200801 
    select 'wo',10 union all
    select 'ni',20 union all
    select 'ta',20 
    create table BAK200802(name_ch varchar(10),count_i int)
    insert into BAK200802 
    select 'wo',10 union all
    select 'ta',20
    create table BAK200804(name_ch varchar(10),count_i int)
    insert into BAK200804 
    select 'ni',20 union all
    select 'ta',20
    go
    --usp_GetAllcount 'ni','2008-1-10','2008-5-10'
    create proc usp_GetAllcount
    (@personname varchar(10),@begin datetime,@end datetime)
    as
    begin
       declare @b_i int,@e_i int
       select @b_i=cast(cast(datepart(yy,@begin) as varchar(5))+right('0'+cast(datepart(mm,@begin)as varchar(5)),2) as int)
       select @e_i=cast(cast(datepart(yy,@end) as varchar(5))+right('0'+cast(datepart(mm,@end)as varchar(5)),2) as int)
       declare @Allcount int
       declare @tablename varchar(10)
       declare cur cursor for
              select [name] from sys.sysobjects 
              where xtype='u' and [name] like 'BAK%' and cast(substring([name],4,len([name])) as int)>=@b_i
                                                     and cast(substring([name],4,len([name])) as int)<=@e_i
       open cur 
       fetch next from cur into @tablename
       while(@@fetch_status=0)
           begin
                DECLARE @sql NVARCHAR(4000),@parms NVARCHAR(1000),@ReturnValue_want int 
                set @sql=N'select @ReturnValue=sum(count_i) from '+@tablename+' where name_ch='''+@personname+''''
                print @sql
                set @parms=N'@ReturnValue int output' 
                EXECUTE sp_executesql 
    @sql, 
    @parms,
    @ReturnValue=@ReturnValue_want output
                set @Allcount=isnull(@Allcount,0)+isnull(@ReturnValue_want,0)
                fetch next from cur into @tablename
           end
       close cur
       deallocate cur
       select @Allcount
    end
      

  3.   


    --*远程库
    select * from openrowset('SQLOLEDB','远程服务器名';'用户名';'密码','库名.dbo.表名')
    SELECT * FROM OPENDATASOURCE('SQLOLEDB','Data Source=192.168.0.111;User ID=sa;Password=sa').tt.dbo.ALaw_BestbigPunish--前提
    勾选了外围服务配置器中的Romate query
      

  4.   

    --启动功能的外围应用配置器里面的即席远程查询——启用Openrowset和opendatasource支持再参考下面的语句!
    SELECT   *  
    FROM   opendatasource( 'SQLOLEDB ',  'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ' ).test.dbo.roy_ta  
      

  5.   

    我用的是SQL 2000 不是2005