create proc [dbo].[snyc_db]
@sdb varchar(200) ='test01',
@ddb varchar(200) ='test02'
AS
BEGIN
DECLARE @sql_txt varchar(2000);
SET @sql_txt='';
DECLARE cur_tb CURSOR FOR
SELECT name FROM sys.tables;
OPEN cur_tb
DECLARE @tb_cl varchar(2000),@tb_name varchar(500)
FETCH NEXT FROM cur_tb into @tb_name
WHILE @@FETCH_STATUS = 0
BEGIN
SET @tb_cl='';
SET @sql_txt='' ;
SET @tb_cl=replace(replace(replace(replace
(CAST((SELECT case name when 'user' then '[user]'
when 'table' then '[table]'
else name end FROM sys.all_columns
WHERE object_name(object_id)=@tb_name and is_identity=0
FOR XML PATH('tr'), TYPE) AS NVARCHAR(MAX) )
,'<tr>',''),'</tr>',','),'<name>',''),'</name>','');
SET @tb_cl=substring(@tb_cl,0,len(@tb_cl));
SET @sql_txt='INSERT INTO '+@ddb+'.dbo.'+@tb_name+'('+@tb_cl+')
SELECT '+@tb_cl+' FROM '+@sdb+'.dbo.'+@tb_name;
print @sql_txt;
exec (@sql_txt);
FETCH NEXT FROM cur_tb into @tb_name
END
CLOSE cur_tb
DEALLOCATE cur_tb
END;
@sdb varchar(200) ='test01',
@ddb varchar(200) ='test02'
AS
BEGIN
DECLARE @sql_txt varchar(2000);
SET @sql_txt='';
DECLARE cur_tb CURSOR FOR
SELECT name FROM sys.tables;
OPEN cur_tb
DECLARE @tb_cl varchar(2000),@tb_name varchar(500)
FETCH NEXT FROM cur_tb into @tb_name
WHILE @@FETCH_STATUS = 0
BEGIN
SET @tb_cl='';
SET @sql_txt='' ;
SET @tb_cl=replace(replace(replace(replace
(CAST((SELECT case name when 'user' then '[user]'
when 'table' then '[table]'
else name end FROM sys.all_columns
WHERE object_name(object_id)=@tb_name and is_identity=0
FOR XML PATH('tr'), TYPE) AS NVARCHAR(MAX) )
,'<tr>',''),'</tr>',','),'<name>',''),'</name>','');
SET @tb_cl=substring(@tb_cl,0,len(@tb_cl));
SET @sql_txt='INSERT INTO '+@ddb+'.dbo.'+@tb_name+'('+@tb_cl+')
SELECT '+@tb_cl+' FROM '+@sdb+'.dbo.'+@tb_name;
print @sql_txt;
exec (@sql_txt);
FETCH NEXT FROM cur_tb into @tb_name
END
CLOSE cur_tb
DEALLOCATE cur_tb
END;