Sql Saha Karşılaştırma
--saha bazında eksiklerin tespiti
declare @myserver varchar(100)
declare @mydb varchar(100)
declare @surumserver varchar(100)
declare @surumdb varchar(100)
set @myserver='eski sql sunucu'
set @mydb='eski sql db'
set @surumserver='yeni sql sunucu'
set @surumdb='yeni sql db'
EXEC('Select b.name tablo, ''gercek'' db
from ['+@surumserver+'].['+@surumdb+'].[dbo].Sysobjects b
left join ['+@myserver+'].['+@mydb+'].[dbo].Sysobjects c on c.name =b.name
where b.xtype=''U'' and c.id is null AND b.name not like ''VS_%''
order by b.name
' )
exec('
Select ''alter table ''+b.name+'' add ''+a.name+'' ''+
case
when a.xtype=127 then ''bigint''
when a.xtype=106 then ''decimal(''+cast(a.prec as varchar(20))+'',''+cast(a.scale as varchar(20))+'')''
when a.xtype=231 or a.xtype=167 then ''nvarchar(''+cast(prec as varchar(10))+'')''
when a.xtype=104 then ''bit''
when a.xtype=56 then ''int''
when a.xtype=61 then ''datetime''
when a.xtype=189 then ''timestamp''
end
from ['+@surumserver+'].['+@surumdb+'].[dbo].Syscolumns as a
inner join ['+@surumserver+'].['+@surumdb+'].[dbo].Sysobjects b on a.id=b.id
left join
(select x.name tablo,y.name saha
from ['+@myserver+'].['+@mydb+'].[dbo].Syscolumns as y
inner join ['+@myserver+'].['+@mydb+'].[dbo].Sysobjects x on y.id=x.id)
as z on z.tablo=b.name and z.saha=a.name
where b.xtype=''U'' and z.tablo is null and b.name not like ''VS_%''
and b.name not in (Select b.name
from ['+@surumserver+'].['+@surumdb+'].[dbo].Sysobjects b
left join ['+@myserver+'].['+@mydb+'].[dbo].Sysobjects c on c.name =b.name
where b.xtype=''U'' and c.id is null)
order by b.name,a.name
')
declare @myserver varchar(100)
declare @mydb varchar(100)
declare @surumserver varchar(100)
declare @surumdb varchar(100)
set @myserver='eski sql sunucu'
set @mydb='eski sql db'
set @surumserver='yeni sql sunucu'
set @surumdb='yeni sql db'
EXEC('Select b.name tablo, ''gercek'' db
from ['+@surumserver+'].['+@surumdb+'].[dbo].Sysobjects b
left join ['+@myserver+'].['+@mydb+'].[dbo].Sysobjects c on c.name =b.name
where b.xtype=''U'' and c.id is null AND b.name not like ''VS_%''
order by b.name
' )
exec('
Select ''alter table ''+b.name+'' add ''+a.name+'' ''+
case
when a.xtype=127 then ''bigint''
when a.xtype=106 then ''decimal(''+cast(a.prec as varchar(20))+'',''+cast(a.scale as varchar(20))+'')''
when a.xtype=231 or a.xtype=167 then ''nvarchar(''+cast(prec as varchar(10))+'')''
when a.xtype=104 then ''bit''
when a.xtype=56 then ''int''
when a.xtype=61 then ''datetime''
when a.xtype=189 then ''timestamp''
end
from ['+@surumserver+'].['+@surumdb+'].[dbo].Syscolumns as a
inner join ['+@surumserver+'].['+@surumdb+'].[dbo].Sysobjects b on a.id=b.id
left join
(select x.name tablo,y.name saha
from ['+@myserver+'].['+@mydb+'].[dbo].Syscolumns as y
inner join ['+@myserver+'].['+@mydb+'].[dbo].Sysobjects x on y.id=x.id)
as z on z.tablo=b.name and z.saha=a.name
where b.xtype=''U'' and z.tablo is null and b.name not like ''VS_%''
and b.name not in (Select b.name
from ['+@surumserver+'].['+@surumdb+'].[dbo].Sysobjects b
left join ['+@myserver+'].['+@mydb+'].[dbo].Sysobjects c on c.name =b.name
where b.xtype=''U'' and c.id is null)
order by b.name,a.name
')
Yorumlar
Yorum Gönder