跨数据库操作

填写图片摘要(选填)

​​​​

方法一

------------将一个数据库表中的数据插入到另一个服务器的数据库的表中----

use financialproducts

go

---  把23数据同步到24

---  开启23连接

EXEC sp_addlinkedserver 'fundDb23','/数据库名称','SQLOLEDB','服务器名称,3433' --有自定义实例名还要加上"/实例名"

     

--1.2 创建登录信息(或叫创建链接服务器登录名映射)(只需选择一种方式)

--1.2.1 以windows认证的方式登录

EXEC sp_addlinkedsrvlogin 'fundDb23'  --或EXEC sp_addlinkedsrvlogin 'LinkName','true'

     

--1.2.2 以SQL认证的方式登录                                                                    

EXEC sp_addlinkedsrvlogin 'fundDb23','false',NULL,'fundviewer','Fund_vi3wer'

go

--------------------------------------

-------------  aspnet 表和用户数据表

---biao有主键 的时候,不能显示的插入,所以打开显示插入

set IDENTITY_INSERT sm.DebtDailyPriceHistory on

insert into sm.DebtDailyPriceHistory( [security_id]

      ,[date]    

      )

select  [security_id]

      ,[date]    

       from 

[fundDb23].[financialproducts].[sm].DebtDailyPriceHistory

---关闭显示插入

set IDENTITY_INSERT sm.DebtDailyPriceHistory off

go

-- 删除连接服务  第一个参数是:连接服务名称 第二个参数固定

exec sp_dropserver 'fundDb23','droplogins'

go

方法二

------------将一个数据库表中的数据插入到另一个服务器的数据库的表中----

use financialproducts

go

---  把23数据同步到24

---  开启23连接

EXEC sp_addlinkedserver 'fundDb24','/数据库名称','SQLOLEDB','服务器名称,3433' --有自定义实例名还要加上"/实例名"

     

--1.2 创建登录信息(或叫创建链接服务器登录名映射)(只需选择一种方式)

--1.2.1 以windows认证的方式登录

EXEC sp_addlinkedsrvlogin 'fundDb24'  --或EXEC sp_addlinkedsrvlogin 'LinkName','true'

     

--1.2.2 以SQL认证的方式登录                                                                    

EXEC sp_addlinkedsrvlogin 'fundDb24','false',NULL,'fundviewer','Fund_vi3wer'

go

declare @name varchar(100),@schemaName varchar(20)

declare #cour cursor for

select t.name,s.name as schemaName 

from sys.tables as t,sys.schemas as s              -------批量插入或者单个表插入

where t.schema_id = s.schema_id and type='U'   --- and t.name ='CachedCnabsYieldCurve'

order by name

open #cour

fetch #cour into @name,@schemaName

while @@FETCH_STATUS=0

begin

 begin try

 declare @column varchar(max)

 set @column=''

 Select @column='['+Name+'],'+@column FROM SysColumns 

    Where id=Object_Id(''+@schemaName+'.'+@name+'') and xtype!=189

 set @column=left(@column,len(@column)-1)

 declare @sql varchar(max)

 set @sql=''

 if  OBJECTPROPERTY(OBJECT_ID(@schemaName+'.'+@name),'TableHasIdentity')=1

  begin

   set @sql=' set identity_insert '+@schemaName+'.'+@name+' on'

  end

 set @sql+=' insert into '+@schemaName+'.'+@name+'('+@column+')'

 set @sql+=' select '+@column+' from [fundDb24].[financialproducts].['+@schemaName+'].['+@name+']'

   if  OBJECTPROPERTY(OBJECT_ID(@schemaName+'.'+@name),'TableHasIdentity')=1

  begin

   set @sql+=' set identity_insert '+@schemaName+'.'+@name+' off'  

  end  

 exec (@sql)

 end try

  begin catch

select @sql

  end catch

 fetch #cour into @name,@schemaName

end

close #cour

deallocate #cour

go

-- 删除连接服务  第一个参数是:连接服务名称 第二个参数固定

exec sp_dropserver 'fundDb24','droplogins'

go

 
原文地址:https://www.cnblogs.com/hnzheng/p/9717126.html