如果两个数据库在一台机器上,可以直接引用就可以了。b.db_name.dbo.table_name(sp_name)
如果不在一台机器上,需要在他们之间建立link server.

解决方案 »

  1.   

    如果是后者,可以先创建链接服务器,进行操作
    --创建链接服务器
    exec sp_addlinkedserver  ''''srv_lnk'''','''''''',''''SQLOLEDB'''',''''远程服务器名或ip地址''''
    exec sp_addlinkedsrvlogin ''''srv_lnk'''',''''false'''',null,''''用户名'''',''''密码''''具体语句可以这样来写
    比如:向B中table2表插入A中table1表的内容
    select * into B..table2 from table1  
    如果使用了链接服务器
    select * into 链接服务器名.b.dbo.table2 from table1
      

  2.   

    如果两数据库在同一服务器上,则比较简单,只要表的前面加上库名和所有者即可。
    形如:select * from [b数据库].[dbo].[tbname]
     如果是异地数据库,则先要建立连接服务器:
    举列如下:
    sp_addlinkedserver 'lnksvr','','sqloledb','192.168.18.33'
    exec sp_addlinkedsrvlogin 'lnksvr',false,null,'sa','密码'--test
    select * from [lnksvr].[数据库名].[所有者].[表名]
      

  3.   

    在存储过程中连接数据库exec sp_addlinkedserver
    @server='AnotherServer',
    @srvproduct='',
    @provider='MSDASQL',
    @provstr='Driver={SQL SERVER};SERVER=IP;UID=sa;PWD=;Database=数据库名称'select * from  AnotherServer.master.dbo.sysobjects
      

  4.   


    --如果经常访问或数据量大,建议用链接服务器--创建链接服务器
    exec sp_addlinkedserver  'srv_lnk','','SQLOLEDB','远程服务器名或ip地址'
    exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'用户名','密码'
    go--查询示例
    select * from srv_lnk.数据库名.dbo.表名--导入示例
    select * into 表 from srv_lnk.数据库名.dbo.表名go
    --以后不再使用时删除链接服务器
    exec sp_dropserver 'srv_lnk','droplogins'
    --如果只是临时访问,可以直接用openrowset
    --查询示例
    select * from openrowset('SQLOLEDB'
     ,'sql服务器名';'用户名';'密码'
     ,数据库名.dbo.表名)--导入示例
    select * into 表 from openrowset('SQLOLEDB'
     ,'sql服务器名';'用户名';'密码'
     ,数据库名.dbo.表名)在企业管理器中设置SQL实例--->安全性--->链接服务器--->右键新建链接服务器常规中输入链接服务器的名字,选其它数据源,选SQLOLEDB,数据源写上,一般写IP地址再选安全性-----》选本地登陆----》模拟打勾用此安全上下文进行,输入用户与密码
      
      

  5.   

    举个简单例子。
    我有两库 DBa,DBb
    分别有表 tbA,tbB 结构一样。
    现在我要将 tbA中的数据写入tbB
    使用存储过程:CREATE PROC t
    AS
    BEGIN
    INSERT DBb.dbo.tbB SELECT * FROM DBa.dbo.tbA
    END虽然很简单,其实只要用一个查询语句就可以解决问题,我这里写成存储过程仅仅是为了举个例子给楼主