Forum
Merhaba Arkadaşlar,
Uzun aramalar sonucu internetten bir şey bulamadığım için sizden yardım talep ediyorum.
Sorun Şöyle: 100 tane sql servera linked server ile bağlı durumdayım. Hepsiyle aramızda metro eth olduğu için iç ip'ye ping atabiliyorum.
Kendi sql makinamda söyle bir kod çalıştırdığımda karşı tarafın ne kadar boş alanı kaldığını görebiliyorum.
exec [192.168.xx.xx].DATABASE_ADI.sys.sp_spaceused @updateusage = 'FALSE', @oneresultset = '1';
Fakat yapamadığım dönen verileri herhangi bir tabloya, Geçici tabloya, yada değişkene atamıyorum Özetle hiç bir şeye atamadım.
YAPMAK İSTEDİĞİM tüm şubelerimi bir sorgu ile DB boş alanlarını yakalayıp bir tabloya yazdırmaktır.
Denediklerim Örnekler aşağıdaki gibidir.
- select * into #temp exec [192.168.xx.xx].DATABASE_ADI.sys.sp_spaceused @updateusage = 'FALSE', @oneresultset = '1';
- insert bosAlan exec [192.168.xx.xx].DATABASE_ADI.sys.sp_spaceused @updateusage = 'FALSE', @oneresultset = '1';
- OLE DB provider "SQLNCLI11" for linked server "192.168.xx.xx" returned message "Ortak hareket yöneticisi, uzak/ağ hareketleri desteğini devre dışı bıraktı.".
Msg 7391, Level 16, State 2, Line 16
The operation could not be performed because OLE DB provider "SQLNCLI11" for linked server "192.168.xx.xx" was unable to begin a distributed transaction.
- create table #test(gerekli bilgiler)
insert into #test (değerler) values (exec .....)
Yardımlarınız için teşekkürler
Tuncay GÜVEN
sp_spaceused i isteğinize göre konfigüre ettim. aşağıdaki script işinizi görecektir. Linkedserver name= PREPRODLSTR dö
DECLARE @spaceUsed TABLE (
[database_name] varchar(255) NULL,
[database_size] varchar(255) NULL,
[unallocated space] varchar(255) NULL)
DECLARE @pages bigint,@dbname sysname,@dbsize bigint,@logsize bigint,@reservedpages bigint,@usedpages bigint,@rowCount bigint
--------loop begin-------
select
@dbsize = sum(convert(bigint,case when status & 64 = 0 then size else 0 end))
,@logsize = sum(convert(bigint,case when status & 64 <> 0 then size else 0 end))
from
[PREPRODLSTR].[IB_GENEL].dbo.sysfiles
select
@reservedpages = sum(a.total_pages),
@usedpages = sum(a.used_pages),
@pages = sum(
CASE
-- XML-Index and FT-Index and semantic index internal tables are not considered "data", but is part of "index_size"
When it.internal_type IN (202,204,207,211,212,213,214,215,216,221,222,236) Then 0
When a.type <> 1 and p.index_id < 2 Then a.used_pages
When p.index_id < 2 Then a.data_pages
Else 0
END
)
from
[PREPRODLSTR].[IB_GENEL].sys.partitions p join sys.allocation_units a on p.partition_id = a.container_id
left join [PREPRODLSTR].[IB_GENEL].sys.internal_tables it on p.object_id = it.object_id
INSERT @spaceUsed
select
database_name = db_name(),
database_size = ltrim(str((convert (dec (15,2),@dbsize) + convert (dec (15,2),@logsize))
* 8192 / 1048576,15,2) + ' MB'),
'unallocated space' = ltrim(str((case when @dbsize >= @reservedpages then
(convert (dec (15,2),@dbsize) - convert (dec (15,2),@reservedpages))
* 8192 / 1048576 else 0 end),15,2) + ' MB')
--------loop end---------
select * from @spaceUsed
İyi çalışmalar...