OpenDataSOurce 指定参数

declare @IP1 varchar(100)
declare @Uid1 varchar(100)
declare @Pwd1 varchar(100)
set @IP1 = '127.0.0.1'
set @Uid1 = 'sa'
set @Pwd1 = '123'
exec ('select * from OpenDataSource(''SQLOLEDB'',''Data Source='+@IP1+';User ID='+@Uid1+';Password='+@Pwd1+''').Agency.dbo.Property')
 
declare @IP1 varchar(100)
declare @Uid1 varchar(100)
declare @Pwd1 varchar(100)
set @IP1 = '127.0.0.1'
set @Uid1 = 'sa'
set @Pwd1 = '123'
declare @SQL varchar(500)
set @SQL=
'select * from OpenDataSource(''SQLOLEDB'',''Data Source='+@IP1+';User ID='+@Uid1+';Password='+@Pwd1+''').Agency.dbo.Property'
select @SQL
exec (@SQL)
 
同样可以指定access 数据库,但注意引号的不同
 
最近做表复制的时候遇到的问题。。
 
第1步 删除表2
 
第2步 筛选表1将数据插入表2
 
create proc Proc_TableCopy
 @IP1 varchar(50),
 @Uid1 varchar(50),
 @Pwd1 varchar(50),
 @IP2 varchar(50),
 @Uid2 varchar(50),
 @Pwd2 varchar(50)
as
 begin Transaction
 /*declare @IP1 varchar(50)
 set @IP1 = '127.0.0.1'
 declare @Uid1 varchar(50)
 set @Uid1='sa'
 declare @Pwd1 varchar(50)
 set @Pwd1 = '123'
 declare @IP2 varchar(50)
 declare @Uid2 varchar(50)
 declare @Pwd2 varchar(50)
 set @IP2 = '127.0.0.1'
 set @Uid2='sa'
 set @Pwd2 = '123'*/
 --1 检索源数据表中需要复制的数据信息(初步是设想可以区分新的要筛选的数据)
 /*declare @SQL varchar(8000)
 set @SQL = 'select * from OpenDataSource(''SQLOLEDB'',''Data Source='+@IP1+';User ID='+@Uid1+';Password='+@Pwd1+''').Agency.dbo.Property'
 select @SQL
 if Exists(exec(@SQL))*/
 --begin
 --2 将新增数据写入临时表中
 --select * into #temp from OpenDataSource('SQLOLEDB','Data Source=127.0.0.1;User ID=sa;Password=123').Agency.dbo.Property
 --3 将目标表中的数据删除
 declare @DelSQL varchar(8000)
 set @DelSQL = 'delete from OpenDataSource(''SQLOLEDB'',''Data Source='+@IP2+';User ID='+@Uid2+';Password='+@Pwd2+''').pubs.dbo.Property'
 --select @DelSQL
 exec(@DelSQL)
 --4 将临时表中的数据插入到目标表中
 declare @InsertSQL varchar(8000)
 set @InsertSQL ='insert into OpenDataSource(''SQLOLEDB'',''Data Source='+@IP2+';User ID='+@Uid2+';Password='+@Pwd2+''').pubs.dbo.Property select * from OpenDataSource(''SQLOLEDB'',''Data Source='+@IP1+';User ID='+@Uid1+';Password='+@Pwd1+''').Agency.dbo.Property'
 select @InsertSQL
 exec (@InsertSQL)
 --5 删除临时表
 --drop table #temp
 --end
 --else
 --declare @SQL varchar(8000)
 --set @SQL = 'select * from OpenDataSource(''SQLOLEDB'',''Data Source='+@IP1+';User ID='+@Uid1+';Password='+@Pwd1+''').Agency.dbo.Property'
 --exec(@SQL)
 commit Transaction
  return 1
 rollback Transaction
  return 2
 
  
 
分类: SQL
posted @   小锋神  阅读(2650)  评论(0编辑  收藏  举报
编辑推荐:
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
阅读排行:
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 《HelloGitHub》第 106 期
· 数据库服务器 SQL Server 版本升级公告
· 深入理解Mybatis分库分表执行原理
· 使用 Dify + LLM 构建精确任务处理应用
点击右上角即可分享
微信分享提示