- #1
Konu Sahibi
: serkankacan
[YÖNETİCİ REHBERİ] vSRO Belirli Bir Eşyayı Tüm Oyuncuların Çanta ve Kasalarından Silme
_Inventory, _Chest, _GuildChest, _InvCOS ve _Items Tablolarından Tam Senkronize İtem Temizleme
_Inventory, _Chest, _GuildChest, _InvCOS ve _Items Tablolarından Tam Senkronize İtem Temizleme
Merhaba değerli forum sakinleri,
Sunucunuzda hatalı dağıtılan bir eşyayı, suistimal (bug/dupe) edilen bir itemi veya piyasadan tamamen kaldırmak istediğiniz bir nesneyi (Astral/Immortal Stone, Silk Scroll, Coin vb.) tüm sunucudan tek bir sorguyla temizlemek isteyebilirsiniz.
Aşağıda paylaşılan optimize sorgu; belirtilen eşyayı **oyuncu çantalarından**, **banka kasalarından**, **guild kasalarından** ve **toplayıcı/binek hayvanı (Pet - COS) çantalarından** siler; ardından
_Items tablosunda kalan yetim kayıtları da temizleyerek veritabanı şişmesini engeller.Önemli Güvenlik Uyarısı' Alıntı:DİKKAT:
- Bu sorgu çalıştırılmadan önce GameServer ve ShardManager modüllerinin kapalı olması veya oyuncuların oyunda olmaması kesinlikle önerilir. Karakterler online iken envanter tabloları güncellenirse, oyuncular oyundan çıkış yaparken belleklerindeki eski çanta verisini tekrar DB'ye yazabilirler.
- İşlem öncesinde mutlaka SRO_VT_SHARD yedeğinizi alınız.
Hatasız & Tam Temizleme Yapan SQL Query Kodu
İçeriği görüntülemek için Giriş yapın veya Kayıt olun.
Yapılan İyileştirmeler Nelerdir?
- Yetim Kayıt Temizliği (Clean Deletion): Eski yöntemde eşya yuvaları `0` yapılıyor ancak veritabanındaki `_Items` satırları kalıyordu. Bu sorguyla fiziksel veri de güvenle temizlenir.
- Performans İndeksi: Tablolar `CodeName128` üzerinden 4 kere JOIN edilmek yerine önce filtrelenen tekil ID listesi alınır; bu sayede milyonlarca kayıt içeren sunucularda sorgu kilitlenme (deadlock) yaratmadan birkaç saniyede biter.
- Raporlama Çıktısı: Sorgu bittiğinde Messages panelinde sunucudan toplam kaç adet item silindiğini raporlar.
Nasıl Uygulanır?
- Mümkünse sunucu modüllerini geçici olarak kapatın veya oyunu bakım moduna alın.
- SQL Server Management Studio (SSMS) programını açın.
- Üst menüden New Query butonuna tıklayın.
- Yukarıdaki SQL kodunu yapıştırın ve
@Codename128alanına silmek istediğiniz eşyanın kodunu yazın. - F5 tuşuna basarak çalıştırın.
- İşlem bittiğinde sunucunuzu tekrar başlatabilirsiniz.
Sorularınızı ve takıldığınız yerleri konu altından belirtebilirsiniz. Herkese iyi forumlar!
Moderatör tarafında düzenlendi:

