Forum

Sql Server - Linked...
 
Bildirimler
Hepsini Temizle

Sql Server - Linked Server Hk.

2 Yazılar
2 Üyeler
0 Likes
1,874 Görüntüleme
(@tuncayguven)
Gönderiler: 58
Trusted Member
Konu başlatıcı
 

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

 

 
Gönderildi : 14/12/2018 14:27

(@cankaya)
Gönderiler: 117
Üye
 

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...

 

 
Gönderildi : 15/12/2018 08:07

Paylaş: