Merhaba, Hoşgeldin!

VSRO.org, Silkroad Online, Knight Online, Metin2 ve diğer çevrimiçi oyunlar için öncü bir yardım ve geliştirme platformudur. Misyonumuz, bilgi ve deneyim sahibi bireyleri, bilgiye ihtiyaç duyanlarla bir araya getirerek, zengin bir etkileşim ortamı yaratmak ve farklı bakış açılarını birleştirmektir. Topluluğumuzda güçlü bir işbirliği ve öğrenme kültürü oluşturarak, herkesin değerli katkılarda bulunmasını sağlıyoruz.

vSRO Çözüldü BETA Sonrası Gift Silkler kalacak şekilde DB temizleme

Katılım
11 Eki 2021
Mesajlar
145
Çözümler
2
Tepkime puanı
40
Puanları
28
Yaş
33
Konum
İstanbul
Merhaba, BETA da kasılan gift silkleri officiala da aktarabilmek için accountlari silmeden DB yi temizlemek istiyorum. Hangi tablolar temizlenmeli hangileri temizlenmemeli ? Tahminim var ama gözden bir şey kaçmaması için emin olmak istedim. Yardımcı olabilirseniz sevinirim, teşekkürler.
 
Çözüm
Beta sonrasında veritabanı temizliğini elbette yapmalısın çünkü ID çakışmalarındaki en ufak hata seni içinden çıkamayacağın dönüm noktalarına sürükleyebilir.
Bunun için önce içinin rahat olması gerekiyor.

SQL:
USE YEDEKDB

DECLARE @Count INT

SELECT @Count = COUNT(DISTINCT U.StrUserID)
FROM TB_User AS U
JOIN SK_Silk AS S ON S.JID = U.JID;

IF (@Count > 0)
BEGIN

    UPDATE SRO_VT_ACCOUNT.dbo.SK_Silk
    SET silk_gift = Y.silk_gift
    FROM YEDEKDB.dbo.SK_Silk AS Y
    JOIN TB_User AS U ON U.JID = Y.JID
    WHERE SRO_VT_ACCOUNT.dbo.SK_Silk.JID = Y.JID

    PRINT 'Veri aktarımı başarılı.'
END
ELSE
BEGIN
    PRINT 'Geçerli StrUserID bulunamadı. Veri aktarımı yapılmadı.'
END


Beta sonrasında sadece SRO_VT_ACCOUNT veritabanının yedeğini...
SRO_VT_ACCOUNT > SK_Silk tablosunu temizlemezsen aynı id ve pw ile kayıt olduklarında ödüller aktarılır.
O tabloda silkler JID bazlı tutuluyor yani username değil sağlıklı olur mu bu çözüm? Bir de accountları hiç silmeden yapmak istiyorum çünkü illa ki kayıt olurken yanlış ID ile kayıt olanlar olacaktır onlarla uğraşmamak için.
 
Oyla 0
O tabloda silkler JID bazlı tutuluyor yani username değil sağlıklı olur mu bu çözüm? Bir de accountları hiç silmeden yapmak istiyorum çünkü illa ki kayıt olurken yanlış ID ile kayıt olanlar olacaktır onlarla uğraşmamak için.
Kayıtlı ID lere göre veriliyor o JID lar. yani bağlantılılar. Kayıtlı ıd leri silmezsen ve silk tablosuna dokunmazsan herhangi bir sorun yaşanmaz şahsımca. ama yani beta da eğer normal silk de verdiysen onlar da kalır.
 
Oyla 0
Kayıtlı ID lere göre veriliyor o JID lar. yani bağlantılılar. Kayıtlı ıd leri silmezsen ve silk tablosuna dokunmazsan herhangi bir sorun yaşanmaz şahsımca. ama yani beta da eğer normal silk de verdiysen onlar da kalır.
O zaman sadece sk silk tablosuna dokunmasam yeterli olacak yani, tesekkurler. JID ile kayitli ID yani username yi eslestiren tablo hangisi biliyor musun kontrol etmek icin?
 
Oyla 0
Şimdi tam hatırlamıyom ama , Siteden kayıt açtıklarında silk sistem oyunda O SK_Silk tablosuna her kayıt açan düşüyormuydu onu tam bilmiyorum kontrol etmedim hiç o şekilde. düşmüyor farz edersek. Betada gift Silk kazanan oyuncular var ise kullanıcı ID lerini baz alarak oraya misal ( hasan ) kullanıcı adlı player 300 Gift Silk kazandı. bu hasan kullanıcı adının ıd si kaç ise JID Olarak SK_Silk tablosundan manuel gift silk verebilirsin. Bunun kısa yolu varmı bilmiyorum ben biraz uzun yoldan anlattım.
 
Oyla 0
Beta sonrasında veritabanı temizliğini elbette yapmalısın çünkü ID çakışmalarındaki en ufak hata seni içinden çıkamayacağın dönüm noktalarına sürükleyebilir.
Bunun için önce içinin rahat olması gerekiyor.

SQL:
USE YEDEKDB

DECLARE @Count INT

SELECT @Count = COUNT(DISTINCT U.StrUserID)
FROM TB_User AS U
JOIN SK_Silk AS S ON S.JID = U.JID;

IF (@Count > 0)
BEGIN

    UPDATE SRO_VT_ACCOUNT.dbo.SK_Silk
    SET silk_gift = Y.silk_gift
    FROM YEDEKDB.dbo.SK_Silk AS Y
    JOIN TB_User AS U ON U.JID = Y.JID
    WHERE SRO_VT_ACCOUNT.dbo.SK_Silk.JID = Y.JID

    PRINT 'Veri aktarımı başarılı.'
END
ELSE
BEGIN
    PRINT 'Geçerli StrUserID bulunamadı. Veri aktarımı yapılmadı.'
END


Beta sonrasında sadece SRO_VT_ACCOUNT veritabanının yedeğini alarak tekrar SQL'e yükle ve adını YEDEKDB olarak güncelle.
Akabinde Klasik olarak YEDEKDB hariç Diğer tüm DB lerini kontrollü bir şekilde sıfırla.
Daha sonra Okutmak istediğinde aşağıdaki kodu New Query Açarak Okut.
Eğer Güncel veritabanında StrUserID 'si uygun olan birisi mevcut ise YEDEKDB'de bulunan silk_gift stununun aktarımını sağlar.
Eğer StrUserID'si uygun değilse işlemi döndürerek hata mesajı verir.
Keyifli Forumlar Dilerim.
 
Oyla 0
Çözüm
Beta sonrasında veritabanı temizliğini elbette yapmalısın çünkü ID çakışmalarındaki en ufak hata seni içinden çıkamayacağın dönüm noktalarına sürükleyebilir.
Bunun için önce içinin rahat olması gerekiyor.

SQL:
USE YEDEKDB

DECLARE @Count INT

SELECT @Count = COUNT(DISTINCT U.StrUserID)
FROM TB_User AS U
JOIN SK_Silk AS S ON S.JID = U.JID;

IF (@Count > 0)
BEGIN

    UPDATE SRO_VT_ACCOUNT.dbo.SK_Silk
    SET silk_gift = Y.silk_gift
    FROM YEDEKDB.dbo.SK_Silk AS Y
    JOIN TB_User AS U ON U.JID = Y.JID
    WHERE SRO_VT_ACCOUNT.dbo.SK_Silk.JID = Y.JID

    PRINT 'Veri aktarımı başarılı.'
END
ELSE
BEGIN
    PRINT 'Geçerli StrUserID bulunamadı. Veri aktarımı yapılmadı.'
END


Beta sonrasında sadece SRO_VT_ACCOUNT veritabanının yedeğini alarak tekrar SQL'e yükle ve adını YEDEKDB olarak güncelle.
Akabinde Klasik olarak YEDEKDB hariç Diğer tüm DB lerini kontrollü bir şekilde sıfırla.
Daha sonra Okutmak istediğinde aşağıdaki kodu New Query Açarak Okut.
Eğer Güncel veritabanında StrUserID 'si uygun olan birisi mevcut ise YEDEKDB'de bulunan silk_gift stununun aktarımını sağlar.
Eğer StrUserID'si uygun değilse işlemi döndürerek hata mesajı verir.
Keyifli Forumlar Dilerim.
Dönüşünüz için teşekkürler. Aklıma sadece şu takıldı anladığım kadarıyla bu query icin oyuncuların tekrar ayni ID ile kayit olmasi gerekiyor ama anlamadığım nokta şu ayni ID ile kayit olsalar bile yeni actiklari accounta tanimlanacak olan JID leri eski JID leri ile nasil ayni olacak? Bu query de eski ve yeni acckunt db sinde eslesme saglamak icin JID leri kullanmisiz da bu baglanti nasil saglaniyor onu anlayamadim.
 
Oyla 0
Burda oyuncunun jid üzerinden değil kullanıcı adı uzerinden referans alarak aktarma yapılıyor yani beta daki jid ve acilistaki jid farklı diyorsun onların üzerinden aktarmiyor aynı olmasına gerek yok bunun için kullanıcı adından. Jid bulup gönderiyor
 
Oyla 1
Geri
Üst Alt