1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| ALTER PROCEDURE [dbo].[sp_copy_schemab]
@Srvsource varchar (30),
@Dbsource varchar(30),
@Schsource varchar(30),
@DbDest varchar(30),
@SchDest varchar (30)
AS
EXEC master.dbo.sp_addlinkedserver @server = @Srvsource, @srvproduct=N'SQL Server'
/* For security reasons the linked server remote logins password is changed with ######## */
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=@Srvsource,@useself=N'True',@locallogin=NULL,@rmtuser=NULL,@rmtpassword=NULL
EXEC master.dbo.sp_serveroption @server=@Srvsource, @optname=N'collation compatible', @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=@Srvsource, @optname=N'data access', @optvalue=N'true'
EXEC master.dbo.sp_serveroption @server=@Srvsource, @optname=N'dist', @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=@Srvsource, @optname=N'pub', @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=@Srvsource, @optname=N'rpc', @optvalue=N'true'
EXEC master.dbo.sp_serveroption @server=@Srvsource, @optname=N'rpc out', @optvalue=N'true'
EXEC master.dbo.sp_serveroption @server=@Srvsource, @optname=N'sub', @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=@Srvsource, @optname=N'connect timeout', @optvalue=N'0'
EXEC master.dbo.sp_serveroption @server=@Srvsource, @optname=N'collation name', @optvalue=null
EXEC master.dbo.sp_serveroption @server=@Srvsource, @optname=N'lazy schema validation', @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=@Srvsource, @optname=N'query timeout', @optvalue=N'0'
EXEC master.dbo.sp_serveroption @server=@Srvsource, @optname=N'use remote collation', @optvalue=N'true'
declare @sql varchar(max)
declare @sql2 varchar(max)
CREATE TABLE stmt (sql varchar(max) )
set @sql = 'declare @sql varchar(max) select + ''SELECT * INTO '+ @SchDest + '.[''+TABLE_NAME+''] '
set @sql=@sql+' FROM ['+@Srvsource + '].'+ @Dbsource + '.' +@Schsource + '.[''+TABLE_NAME+''] '''
set @sql=@sql+' FROM ['+@Srvsource + '].'+ @Dbsource + '.INFORMATION_SCHEMA.TABLES '
set @sql=@sql+' WHERE TABLE_SCHEMA = '''+@Schsource+''' execute (@sql)'
insert into stmt execute (@sql)
SELECT @sql2 = coalesce(@sql2, '') + CAST (sql AS VARCHAR(MAX)) + ';' from stmt
print (@sql2)
exec (@sql2) |
Partager