AIFA AKADEMI · Kurumsal Wiki
4.330 makale
Ana sayfa Kurumsal Wiki › Hata Bilgi Bankası › EKB-SQL

SQL Server Hataları

ERROR_KBERPGOLD_COREACTIVEAIFASOFT_INTERNALGENERATED_PROPOSAL
Kanonik kaynak: markdown · bu sayfa üretilmiş görünümdür

80 SQL Server hata riski: Invalid object name, Conversion failed, mükerrer anahtar, timeout, tetikleyici zinciri; nesne, ekran, guard, öneri.

Künye (front-matter) · EKB-SQL · reality [SUPPORT_OBSERVED, SOURCE_IMPLEMENTED, GENERATED_PROPOSAL]
idEKB-SQL
titleSQL Server Hataları
entity_typeERROR_KB
moduleMOD-KALITE
audience[SUPPORT, DEVELOPER, QA]
confidentialityAIFASOFT_INTERNAL
product_scopeERPGOLD_CORE
customer_scopeALL
reality[SUPPORT_OBSERVED, SOURCE_IMPLEMENTED, GENERATED_PROPOSAL]
lifecycleACTIVE
confidenceMEDIUM
version_fromVERSION_UNKNOWN
version_to-
created_at2026-09-13
last_verified2026-09-13
source_hashes[]
sources[DOCUMENT:ERPGOLD_ERROR_MASTER.xlsx, DOCUMENT:ERPGOLD_HATA_KOK_NEDEN_BILGI_BANKASI.md, SRC-TKT-ERP, SOURCE_CODE:ERPPRO, DB_CATALOG:INST-ERPGOLDV2]
aliases[SQL Server Hataları]
tags[error-kb]
wiki_versionv1.5
source_packageERPGOLD_HATA_BILGI_BANKASI_v1 / Wiki_23_Hata_Bilgi_Bankasi
severityS1–S4 (kayıt bazında)
sql_objects119 nesne
runtime_statusMOSTLY_NOT_REPRODUCED (Observed alanına bakınız)

SQL Server hata riskleri (SQLR-001…SQLR-080). Kod ile veritabanı kataloğu arasındaki uyumsuzluklardan (eksik nesne, eksik kolon, tip dönüşümü, mükerrer anahtar, timeout, tetikleyici zinciri) doğabilecek SQL hataları. Observed=HAYIR olan kayıtlar canlı ortamda görülmemiş, statik analizde bulunmuştur.

Özet

SQL hata sınıfıKayıtObserved=EVETGuard var
Invalid object name3700
Invalid column name900
Divide by zero502
Conversion failed400
Subquery returned more than 1 value400
Could not find stored procedure200
String or binary data would be truncated200
Cannot insert NULL200
Duplicate key200
Identity200
Dynamic SQL / injection200
Collation conflict200
Arithmetic overflow100
Transaction count mismatch100
Deadlock / timeout100
Recursive trigger100
Disabled trigger100
Broken dependency100
Legacy100

Kayıtlar

SQL SQLR-001 — Invalid object name: Cari.Odemeler S2 · Observed=HAYIR · Guard=HAYIR
Hata sınıfıInvalid object name · SQL Error 208
GözlemlendiHAYIR · Potential=EVET · Silent=KISMEN
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiCari.Odemeler
TabloCari.Odemeler
EkranFrmOdemeListesi (ANA MENÜ FrmMainForm.vb:63 ve işlem ekranı iScreen.vb:1237), FrmOdemeYap, FrmOdemeGirisi
Kod dosyasıERPPRO/Class/Dao/Cari.Odeme.vb:205; ERPPRO/Class/Dao/Cari.Odeme.vb:252; ERPPRO/Class/Dao/Cari.Odeme.vb:295; ERPPRO/Class/Dao/Cari.Odeme.vb:309; ERPPRO/Class/Dao/Cari.Odeme.vb:32; ERPPRO/Class/Dao/Cari.Odeme.vb:324
Tetikleme koşuluİlgili ekran açıldığında/kayıt yapıldığında kod 'Cari.Odemeler' nesnesine Select/Insert/Update gönderiyor; nesne DB1 kataloğunda yok.
Guard var mı?HAYIR
Olasılık / etki / güvenYüksek — menüden ve işlem ekranından açılabiliyor / S2 / 90
Var mı? V2 / KUYUMCU / BASEHAYIR / HAYIR (TD-45: iki DB'de de yok) / HAYIR
Kullanıcı belirtisiMsgBox: "Invalid object name 'Cari.Odemeler'." — ekran boş kalır ya da kayıt yapılamaz (InternalDb ham SQL mesajını gösterir; DAO kalıbında boş Catch → sessiz False).
ÖneriEkran/DAO'nun canlı olup olmadığı iş birimiyle netleştirilmeli; ya nesne şemaya (DBUpdate/ERPSCHEMA) eklenmeli ya da ekran menüden kaldırılmalı. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT OBJECT_ID('Cari.Odemeler') AS ObjId; -- NULL ise nesne yok
Kanıtbasedb/out/code_refs2.json code_only[Cari.Odemeler] (6 referans); Sistem.ERPSCHEMA satırı: YOK; TD-45.
İlgili SQL nesneleriSistem.ERPSCHEMA
Wiki bağlantılarıTD-45
SQL SQLR-002 — Invalid object name: Genel.IptalOnay S2 · Observed=HAYIR · Guard=HAYIR
Hata sınıfıInvalid object name · SQL Error 208
GözlemlendiHAYIR · Potential=EVET · Silent=KISMEN
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiGenel.IptalOnay
TabloGenel.IptalOnay
EkranFrmIptalOnayListesi (ANA MENÜ FrmMainForm.vb)
Kod dosyasıERPPRO/Class/Dao/IptalOnay.vb:130; ERPPRO/Class/Dao/IptalOnay.vb:172; ERPPRO/Class/Dao/IptalOnay.vb:209; ERPPRO/Class/Dao/IptalOnay.vb:223; ERPPRO/Class/Dao/IptalOnay.vb:238; ERPPRO/Class/Dao/IptalOnay.vb:32
Tetikleme koşuluİlgili ekran açıldığında/kayıt yapıldığında kod 'Genel.IptalOnay' nesnesine Select/Insert/Update gönderiyor; nesne DB1 kataloğunda yok.
Guard var mı?HAYIR
Olasılık / etki / güvenOrta — menüden açılabiliyor / S2 / 90
Var mı? V2 / KUYUMCU / BASEHAYIR / BİLİNMİYOR / HAYIR
Kullanıcı belirtisiMsgBox: "Invalid object name 'Genel.IptalOnay'." — ekran boş kalır ya da kayıt yapılamaz (InternalDb ham SQL mesajını gösterir; DAO kalıbında boş Catch → sessiz False).
ÖneriEkran/DAO'nun canlı olup olmadığı iş birimiyle netleştirilmeli; ya nesne şemaya (DBUpdate/ERPSCHEMA) eklenmeli ya da ekran menüden kaldırılmalı. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT OBJECT_ID('Genel.IptalOnay') AS ObjId; -- NULL ise nesne yok
Kanıtbasedb/out/code_refs2.json code_only[Genel.IptalOnay] (6 referans); Sistem.ERPSCHEMA satırı: YOK; TD-45.
İlgili SQL nesneleriSistem.ERPSCHEMA
Wiki bağlantılarıTD-45
SQL SQLR-003 — Invalid object name: Siparis.FiyatListesi S3 · Observed=HAYIR · Guard=HAYIR
Hata sınıfıInvalid object name · SQL Error 208
GözlemlendiHAYIR · Potential=EVET · Silent=KISMEN
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiSiparis.FiyatListesi
TabloSiparis.FiyatListesi
EkranFrmModelFiyatEkle (Siparis.FiyatListesiEx), FrmSipModelEkle (FrmSiparisGirisi), FrmCariHesapEkle
Kod dosyasıERPPRO/Class/Dao/Siparis.FiyatListesi.vb:125; ERPPRO/Class/Dao/Siparis.FiyatListesi.vb:150; ERPPRO/Class/Dao/Siparis.FiyatListesi.vb:177; ERPPRO/Class/Dao/Siparis.FiyatListesi.vb:204; ERPPRO/Class/Dao/Siparis.FiyatListesi.vb:218; ERPPRO/Class/Dao/Siparis.FiyatListesi.vb:233; ERPPRO/Class/Dao/Siparis.FiyatListesi.vb:31; ERPPRO/Class/Dao/Siparis.FiyatListesi.vb:54
Tetikleme koşuluİlgili ekran açıldığında/kayıt yapıldığında kod 'Siparis.FiyatListesi' nesnesine Select/Insert/Update gönderiyor; nesne DB1 kataloğunda yok.
Guard var mı?HAYIR
Olasılık / etki / güvenOrta / S3 / 90
Var mı? V2 / KUYUMCU / BASEHAYIR / BİLİNMİYOR / HAYIR
Kullanıcı belirtisiMsgBox: "Invalid object name 'Siparis.FiyatListesi'." — ekran boş kalır ya da kayıt yapılamaz (InternalDb ham SQL mesajını gösterir; DAO kalıbında boş Catch → sessiz False).
ÖneriEkran/DAO'nun canlı olup olmadığı iş birimiyle netleştirilmeli; ya nesne şemaya (DBUpdate/ERPSCHEMA) eklenmeli ya da ekran menüden kaldırılmalı. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT OBJECT_ID('Siparis.FiyatListesi') AS ObjId; -- NULL ise nesne yok
Kanıtbasedb/out/code_refs2.json code_only[Siparis.FiyatListesi] (8 referans); Sistem.ERPSCHEMA satırı: YOK; TD-45.
İlgili SQL nesneleriSistem.ERPSCHEMA
Wiki bağlantılarıTD-45
SQL SQLR-004 — Invalid object name: Uretim.Eritme S3 · Observed=HAYIR · Guard=HAYIR
Hata sınıfıInvalid object name · SQL Error 208
GözlemlendiHAYIR · Potential=EVET · Silent=KISMEN
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiUretim.Eritme
TabloUretim.Eritme
EkranEditEritme (Uretim.Eritmeex) — Üretim eritme ekranı
Kod dosyasıERPPRO/Class/Dao/Uretim.Eritme.vb:216; ERPPRO/Class/Dao/Uretim.Eritme.vb:269; ERPPRO/Class/Dao/Uretim.Eritme.vb:31; ERPPRO/Class/Dao/Uretim.Eritme.vb:321; ERPPRO/Class/Dao/Uretim.Eritme.vb:335; ERPPRO/Class/Dao/Uretim.Eritme.vb:350
Tetikleme koşuluİlgili ekran açıldığında/kayıt yapıldığında kod 'Uretim.Eritme' nesnesine Select/Insert/Update gönderiyor; nesne DB1 kataloğunda yok.
Guard var mı?HAYIR
Olasılık / etki / güvenDüşük-Orta (üretim modülü) / S3 / 90
Var mı? V2 / KUYUMCU / BASEHAYIR / HAYIR (TD-45: iki DB'de de yok) / HAYIR
Kullanıcı belirtisiMsgBox: "Invalid object name 'Uretim.Eritme'." — ekran boş kalır ya da kayıt yapılamaz (InternalDb ham SQL mesajını gösterir; DAO kalıbında boş Catch → sessiz False).
ÖneriEkran/DAO'nun canlı olup olmadığı iş birimiyle netleştirilmeli; ya nesne şemaya (DBUpdate/ERPSCHEMA) eklenmeli ya da ekran menüden kaldırılmalı. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT OBJECT_ID('Uretim.Eritme') AS ObjId; -- NULL ise nesne yok
Kanıtbasedb/out/code_refs2.json code_only[Uretim.Eritme] (6 referans); Sistem.ERPSCHEMA satırı: YOK; TD-45.
İlgili SQL nesneleriSistem.ERPSCHEMA
Wiki bağlantılarıTD-45
SQL SQLR-005 — Invalid object name: Uretim.Formul S3 · Observed=HAYIR · Guard=HAYIR
Hata sınıfıInvalid object name · SQL Error 208
GözlemlendiHAYIR · Potential=EVET · Silent=KISMEN
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiUretim.Formul
TabloUretim.Formul
EkranEditFormulEkle (Uretim.FormulEx), EditEritme
Kod dosyasıERPPRO/Class/Dao/Uretim.Formul.vb:109; ERPPRO/Class/Dao/Uretim.Formul.vb:148; ERPPRO/Class/Dao/Uretim.Formul.vb:188; ERPPRO/Class/Dao/Uretim.Formul.vb:202; ERPPRO/Class/Dao/Uretim.Formul.vb:217; ERPPRO/Class/Dao/Uretim.Formul.vb:32; ERPPRO/Uretim/EditEritme.vb:53
Tetikleme koşuluİlgili ekran açıldığında/kayıt yapıldığında kod 'Uretim.Formul' nesnesine Select/Insert/Update gönderiyor; nesne DB1 kataloğunda yok.
Guard var mı?HAYIR
Olasılık / etki / güvenDüşük-Orta / S3 / 90
Var mı? V2 / KUYUMCU / BASEHAYIR / HAYIR (TD-45: iki DB'de de yok) / HAYIR
Kullanıcı belirtisiMsgBox: "Invalid object name 'Uretim.Formul'." — ekran boş kalır ya da kayıt yapılamaz (InternalDb ham SQL mesajını gösterir; DAO kalıbında boş Catch → sessiz False).
ÖneriEkran/DAO'nun canlı olup olmadığı iş birimiyle netleştirilmeli; ya nesne şemaya (DBUpdate/ERPSCHEMA) eklenmeli ya da ekran menüden kaldırılmalı. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT OBJECT_ID('Uretim.Formul') AS ObjId; -- NULL ise nesne yok
Kanıtbasedb/out/code_refs2.json code_only[Uretim.Formul] (7 referans); Sistem.ERPSCHEMA satırı: YOK; TD-45.
İlgili SQL nesneleriSistem.ERPSCHEMA
Wiki bağlantılarıTD-45
SQL SQLR-006 — Invalid object name: Uretim.FormulDetay S3 · Observed=HAYIR · Guard=HAYIR
Hata sınıfıInvalid object name · SQL Error 208
GözlemlendiHAYIR · Potential=EVET · Silent=KISMEN
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiUretim.FormulDetay
TabloUretim.FormulDetay
EkranEditFormulEkle
Kod dosyasıERPPRO/Class/Dao/Uretim.FormulDetay.vb:117; ERPPRO/Class/Dao/Uretim.FormulDetay.vb:146; ERPPRO/Class/Dao/Uretim.FormulDetay.vb:160; ERPPRO/Class/Dao/Uretim.FormulDetay.vb:175; ERPPRO/Class/Dao/Uretim.FormulDetay.vb:32; ERPPRO/Class/Dao/Uretim.FormulDetay.vb:88; ERPPRO/Uretim/EditFormulEkle.vb:103
Tetikleme koşuluİlgili ekran açıldığında/kayıt yapıldığında kod 'Uretim.FormulDetay' nesnesine Select/Insert/Update gönderiyor; nesne DB1 kataloğunda yok.
Guard var mı?HAYIR
Olasılık / etki / güvenDüşük-Orta / S3 / 90
Var mı? V2 / KUYUMCU / BASEHAYIR / BİLİNMİYOR / HAYIR
Kullanıcı belirtisiMsgBox: "Invalid object name 'Uretim.FormulDetay'." — ekran boş kalır ya da kayıt yapılamaz (InternalDb ham SQL mesajını gösterir; DAO kalıbında boş Catch → sessiz False).
ÖneriEkran/DAO'nun canlı olup olmadığı iş birimiyle netleştirilmeli; ya nesne şemaya (DBUpdate/ERPSCHEMA) eklenmeli ya da ekran menüden kaldırılmalı. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT OBJECT_ID('Uretim.FormulDetay') AS ObjId; -- NULL ise nesne yok
Kanıtbasedb/out/code_refs2.json code_only[Uretim.FormulDetay] (7 referans); Sistem.ERPSCHEMA satırı: YOK; TD-45.
İlgili SQL nesneleriSistem.ERPSCHEMA
Wiki bağlantılarıTD-45
SQL SQLR-007 — Invalid object name: Uretim.ModelPartiBilgileri S3 · Observed=HAYIR · Guard=HAYIR
Hata sınıfıInvalid object name · SQL Error 208
GözlemlendiHAYIR · Potential=EVET · Silent=KISMEN
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiUretim.ModelPartiBilgileri
TabloUretim.ModelPartiBilgileri
EkranEditModelPartiBilgileri, FrmPartiEkle
Kod dosyasıERPPRO/Class/Dao/Uretim.ModelPartiBilgileri.vb:122; ERPPRO/Class/Dao/Uretim.ModelPartiBilgileri.vb:155; ERPPRO/Class/Dao/Uretim.ModelPartiBilgileri.vb:188; ERPPRO/Class/Dao/Uretim.ModelPartiBilgileri.vb:202; ERPPRO/Class/Dao/Uretim.ModelPartiBilgileri.vb:217; ERPPRO/Class/Dao/Uretim.ModelPartiBilgileri.vb:30; ERPPRO/Uretim/FrmPartiEkle.vb:17
Tetikleme koşuluİlgili ekran açıldığında/kayıt yapıldığında kod 'Uretim.ModelPartiBilgileri' nesnesine Select/Insert/Update gönderiyor; nesne DB1 kataloğunda yok.
Guard var mı?HAYIR
Olasılık / etki / güvenDüşük-Orta / S3 / 90
Var mı? V2 / KUYUMCU / BASEHAYIR / HAYIR (TD-45: iki DB'de de yok) / HAYIR
Kullanıcı belirtisiMsgBox: "Invalid object name 'Uretim.ModelPartiBilgileri'." — ekran boş kalır ya da kayıt yapılamaz (InternalDb ham SQL mesajını gösterir; DAO kalıbında boş Catch → sessiz False).
ÖneriEkran/DAO'nun canlı olup olmadığı iş birimiyle netleştirilmeli; ya nesne şemaya (DBUpdate/ERPSCHEMA) eklenmeli ya da ekran menüden kaldırılmalı. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT OBJECT_ID('Uretim.ModelPartiBilgileri') AS ObjId; -- NULL ise nesne yok
Kanıtbasedb/out/code_refs2.json code_only[Uretim.ModelPartiBilgileri] (7 referans); Sistem.ERPSCHEMA satırı: YOK; TD-45.
İlgili SQL nesneleriSistem.ERPSCHEMA
Wiki bağlantılarıTD-45
SQL SQLR-008 — Invalid object name: Uretim.Partiler S2 · Observed=HAYIR · Guard=HAYIR
Hata sınıfıInvalid object name · SQL Error 208
GözlemlendiHAYIR · Potential=EVET · Silent=KISMEN
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiUretim.Partiler
TabloUretim.Partiler
EkranFrmUretimIslemleri (ANA MENÜ), FrmPartiEkle
Kod dosyasıERPPRO/Class/Dao/Uretim.Partiler.vb:156; ERPPRO/Class/Dao/Uretim.Partiler.vb:187; ERPPRO/Class/Dao/Uretim.Partiler.vb:218; ERPPRO/Class/Dao/Uretim.Partiler.vb:232; ERPPRO/Class/Dao/Uretim.Partiler.vb:247; ERPPRO/Class/Dao/Uretim.Partiler.vb:30
Tetikleme koşuluİlgili ekran açıldığında/kayıt yapıldığında kod 'Uretim.Partiler' nesnesine Select/Insert/Update gönderiyor; nesne DB1 kataloğunda yok.
Guard var mı?HAYIR
Olasılık / etki / güvenOrta / S2 / 90
Var mı? V2 / KUYUMCU / BASEHAYIR / BİLİNMİYOR / HAYIR
Kullanıcı belirtisiMsgBox: "Invalid object name 'Uretim.Partiler'." — ekran boş kalır ya da kayıt yapılamaz (InternalDb ham SQL mesajını gösterir; DAO kalıbında boş Catch → sessiz False).
ÖneriEkran/DAO'nun canlı olup olmadığı iş birimiyle netleştirilmeli; ya nesne şemaya (DBUpdate/ERPSCHEMA) eklenmeli ya da ekran menüden kaldırılmalı. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT OBJECT_ID('Uretim.Partiler') AS ObjId; -- NULL ise nesne yok
Kanıtbasedb/out/code_refs2.json code_only[Uretim.Partiler] (6 referans); Sistem.ERPSCHEMA satırı: YOK; TD-45.
İlgili SQL nesneleriSistem.ERPSCHEMA
Wiki bağlantılarıTD-45
SQL SQLR-009 — Invalid object name: Siparis.GetFiyatListesi S3 · Observed=HAYIR · Guard=HAYIR
Hata sınıfıInvalid object name · SQL Error 208
GözlemlendiHAYIR · Potential=EVET · Silent=HAYIR
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiSiparis.GetFiyatListesi
EkranFrmModelFiyatEkle / Siparis.FiyatListesiEx.vb:31
Kod dosyasıERPPRO/Class/Ext/Siparis.FiyatListesiEx.vb:31
Tetikleme koşuluİlgili ekran açıldığında/kayıt yapıldığında kod 'Siparis.GetFiyatListesi' nesnesine Select gönderiyor; nesne DB1 kataloğunda yok.
Guard var mı?HAYIR
Olasılık / etki / güvenOrta / S3 / 90
Var mı? V2 / KUYUMCU / BASEHAYIR / BİLİNMİYOR / HAYIR
Kullanıcı belirtisiMsgBox: "Invalid object name 'Siparis.GetFiyatListesi'." — ekran boş kalır ya da kayıt yapılamaz (InternalDb ham SQL mesajını gösterir; DAO kalıbında boş Catch → sessiz False).
ÖneriEkran/DAO'nun canlı olup olmadığı iş birimiyle netleştirilmeli; ya nesne şemaya (DBUpdate/ERPSCHEMA) eklenmeli ya da ekran menüden kaldırılmalı. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT OBJECT_ID('Siparis.GetFiyatListesi') AS ObjId; -- NULL ise nesne yok
Kanıtbasedb/out/code_refs2.json code_only[Siparis.GetFiyatListesi] (1 referans); Sistem.ERPSCHEMA satırı: YOK; TD-45.
İlgili SQL nesneleriSistem.ERPSCHEMA
Wiki bağlantılarıTD-45
SQL SQLR-010 — Invalid object name: Uretim.GetEritmeListesi S3 · Observed=HAYIR · Guard=HAYIR
Hata sınıfıInvalid object name · SQL Error 208
GözlemlendiHAYIR · Potential=EVET · Silent=HAYIR
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiUretim.GetEritmeListesi
EkranUretim.Eritmeex.vb:17 liste
Kod dosyasıERPPRO/Class/Ext/Uretim.Eritmeex.vb:17
Tetikleme koşuluİlgili ekran açıldığında/kayıt yapıldığında kod 'Uretim.GetEritmeListesi' nesnesine Select gönderiyor; nesne DB1 kataloğunda yok.
Guard var mı?HAYIR
Olasılık / etki / güvenDüşük-Orta / S3 / 90
Var mı? V2 / KUYUMCU / BASEHAYIR / BİLİNMİYOR / HAYIR
Kullanıcı belirtisiMsgBox: "Invalid object name 'Uretim.GetEritmeListesi'." — ekran boş kalır ya da kayıt yapılamaz (InternalDb ham SQL mesajını gösterir; DAO kalıbında boş Catch → sessiz False).
ÖneriEkran/DAO'nun canlı olup olmadığı iş birimiyle netleştirilmeli; ya nesne şemaya (DBUpdate/ERPSCHEMA) eklenmeli ya da ekran menüden kaldırılmalı. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT OBJECT_ID('Uretim.GetEritmeListesi') AS ObjId; -- NULL ise nesne yok
Kanıtbasedb/out/code_refs2.json code_only[Uretim.GetEritmeListesi] (1 referans); Sistem.ERPSCHEMA satırı: YOK; TD-45.
İlgili SQL nesneleriSistem.ERPSCHEMA
Wiki bağlantılarıTD-45
SQL SQLR-011 — Invalid object name: Uretim.GetFormuls S3 · Observed=HAYIR · Guard=HAYIR
Hata sınıfıInvalid object name · SQL Error 208
GözlemlendiHAYIR · Potential=EVET · Silent=HAYIR
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiUretim.GetFormuls
EkranUretim.FormulEx.vb:31
Kod dosyasıERPPRO/Class/Ext/Uretim.FormulEx.vb:31
Tetikleme koşuluİlgili ekran açıldığında/kayıt yapıldığında kod 'Uretim.GetFormuls' nesnesine Select gönderiyor; nesne DB1 kataloğunda yok.
Guard var mı?HAYIR
Olasılık / etki / güvenDüşük-Orta / S3 / 90
Var mı? V2 / KUYUMCU / BASEHAYIR / BİLİNMİYOR / HAYIR
Kullanıcı belirtisiMsgBox: "Invalid object name 'Uretim.GetFormuls'." — ekran boş kalır ya da kayıt yapılamaz (InternalDb ham SQL mesajını gösterir; DAO kalıbında boş Catch → sessiz False).
ÖneriEkran/DAO'nun canlı olup olmadığı iş birimiyle netleştirilmeli; ya nesne şemaya (DBUpdate/ERPSCHEMA) eklenmeli ya da ekran menüden kaldırılmalı. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT OBJECT_ID('Uretim.GetFormuls') AS ObjId; -- NULL ise nesne yok
Kanıtbasedb/out/code_refs2.json code_only[Uretim.GetFormuls] (1 referans); Sistem.ERPSCHEMA satırı: YOK; TD-45.
İlgili SQL nesneleriSistem.ERPSCHEMA
Wiki bağlantılarıTD-45
SQL SQLR-012 — Invalid object name: Uretim.GetModelPartiBilgiListesi S3 · Observed=HAYIR · Guard=HAYIR
Hata sınıfıInvalid object name · SQL Error 208
GözlemlendiHAYIR · Potential=EVET · Silent=HAYIR
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiUretim.GetModelPartiBilgiListesi
EkranUretim.ModelPartiBilgileri.vb:15 (Ext)
Kod dosyasıERPPRO/Class/Ext/Uretim.ModelPartiBilgileri.vb:15
Tetikleme koşuluİlgili ekran açıldığında/kayıt yapıldığında kod 'Uretim.GetModelPartiBilgiListesi' nesnesine Select gönderiyor; nesne DB1 kataloğunda yok.
Guard var mı?HAYIR
Olasılık / etki / güvenDüşük-Orta / S3 / 90
Var mı? V2 / KUYUMCU / BASEHAYIR / BİLİNMİYOR / HAYIR
Kullanıcı belirtisiMsgBox: "Invalid object name 'Uretim.GetModelPartiBilgiListesi'." — ekran boş kalır ya da kayıt yapılamaz (InternalDb ham SQL mesajını gösterir; DAO kalıbında boş Catch → sessiz False).
ÖneriEkran/DAO'nun canlı olup olmadığı iş birimiyle netleştirilmeli; ya nesne şemaya (DBUpdate/ERPSCHEMA) eklenmeli ya da ekran menüden kaldırılmalı. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT OBJECT_ID('Uretim.GetModelPartiBilgiListesi') AS ObjId; -- NULL ise nesne yok
Kanıtbasedb/out/code_refs2.json code_only[Uretim.GetModelPartiBilgiListesi] (1 referans); Sistem.ERPSCHEMA satırı: YOK; TD-45.
İlgili SQL nesneleriSistem.ERPSCHEMA
Wiki bağlantılarıTD-45
SQL SQLR-013 — Invalid object name: Uretim.GetPartiler S3 · Observed=HAYIR · Guard=HAYIR
Hata sınıfıInvalid object name · SQL Error 208
GözlemlendiHAYIR · Potential=EVET · Silent=HAYIR
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiUretim.GetPartiler
EkranUretimPartilerEx.vb:15 → FrmUretimIslemleri
Kod dosyasıERPPRO/Class/Ext/UretimPartilerEx.vb:15
Tetikleme koşuluİlgili ekran açıldığında/kayıt yapıldığında kod 'Uretim.GetPartiler' nesnesine Select gönderiyor; nesne DB1 kataloğunda yok.
Guard var mı?HAYIR
Olasılık / etki / güvenOrta / S3 / 90
Var mı? V2 / KUYUMCU / BASEHAYIR / BİLİNMİYOR / HAYIR
Kullanıcı belirtisiMsgBox: "Invalid object name 'Uretim.GetPartiler'." — ekran boş kalır ya da kayıt yapılamaz (InternalDb ham SQL mesajını gösterir; DAO kalıbında boş Catch → sessiz False).
ÖneriEkran/DAO'nun canlı olup olmadığı iş birimiyle netleştirilmeli; ya nesne şemaya (DBUpdate/ERPSCHEMA) eklenmeli ya da ekran menüden kaldırılmalı. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT OBJECT_ID('Uretim.GetPartiler') AS ObjId; -- NULL ise nesne yok
Kanıtbasedb/out/code_refs2.json code_only[Uretim.GetPartiler] (1 referans); Sistem.ERPSCHEMA satırı: YOK; TD-45.
İlgili SQL nesneleriSistem.ERPSCHEMA
Wiki bağlantılarıTD-45
SQL SQLR-014 — Invalid object name: Cari.GETOdemeKasaOzeti S3 · Observed=HAYIR · Guard=HAYIR
Hata sınıfıInvalid object name · SQL Error 208
GözlemlendiHAYIR · Potential=EVET · Silent=HAYIR
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiCari.GETOdemeKasaOzeti
EkranFrmOdemeKasa.vb:8 (ödeme kasası özeti)
Kod dosyasıERPPRO/Controls/Islem Ekranı/Ekran/FrmOdemeKasa.vb:8
Tetikleme koşuluİlgili ekran açıldığında/kayıt yapıldığında kod 'Cari.GETOdemeKasaOzeti' nesnesine Select gönderiyor; nesne DB1 kataloğunda yok.
Guard var mı?HAYIR
Olasılık / etki / güvenOrta / S3 / 90
Var mı? V2 / KUYUMCU / BASEHAYIR / BİLİNMİYOR / HAYIR
Kullanıcı belirtisiMsgBox: "Invalid object name 'Cari.GETOdemeKasaOzeti'." — ekran boş kalır ya da kayıt yapılamaz (InternalDb ham SQL mesajını gösterir; DAO kalıbında boş Catch → sessiz False).
ÖneriEkran/DAO'nun canlı olup olmadığı iş birimiyle netleştirilmeli; ya nesne şemaya (DBUpdate/ERPSCHEMA) eklenmeli ya da ekran menüden kaldırılmalı. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT OBJECT_ID('Cari.GETOdemeKasaOzeti') AS ObjId; -- NULL ise nesne yok
Kanıtbasedb/out/code_refs2.json code_only[Cari.GETOdemeKasaOzeti] (1 referans); Sistem.ERPSCHEMA satırı: YOK; TD-45.
İlgili SQL nesneleriSistem.ERPSCHEMA
Wiki bağlantılarıTD-45
SQL SQLR-015 — Invalid object name: Cari.GETOdemeListesi S2 · Observed=HAYIR · Guard=HAYIR
Hata sınıfıInvalid object name · SQL Error 208
GözlemlendiHAYIR · Potential=EVET · Silent=HAYIR
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiCari.GETOdemeListesi
EkranFrmOdemeListesi.vb:9,11 (ANA MENÜ FrmMainForm.vb:63; iScreen.vb:1237)
Kod dosyasıERPPRO/Controls/Islem Ekranı/Ekran/FrmOdemeListesi.vb:11; ERPPRO/Controls/Islem Ekranı/Ekran/FrmOdemeListesi.vb:9
Tetikleme koşuluİlgili ekran açıldığında/kayıt yapıldığında kod 'Cari.GETOdemeListesi' nesnesine Select gönderiyor; nesne DB1 kataloğunda yok.
Guard var mı?HAYIR
Olasılık / etki / güvenYüksek / S2 / 90
Var mı? V2 / KUYUMCU / BASEHAYIR / BİLİNMİYOR / HAYIR
Kullanıcı belirtisiMsgBox: "Invalid object name 'Cari.GETOdemeListesi'." — ekran boş kalır ya da kayıt yapılamaz (InternalDb ham SQL mesajını gösterir; DAO kalıbında boş Catch → sessiz False).
ÖneriEkran/DAO'nun canlı olup olmadığı iş birimiyle netleştirilmeli; ya nesne şemaya (DBUpdate/ERPSCHEMA) eklenmeli ya da ekran menüden kaldırılmalı. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT OBJECT_ID('Cari.GETOdemeListesi') AS ObjId; -- NULL ise nesne yok
Kanıtbasedb/out/code_refs2.json code_only[Cari.GETOdemeListesi] (2 referans); Sistem.ERPSCHEMA satırı: YOK; TD-45.
İlgili SQL nesneleriSistem.ERPSCHEMA
Wiki bağlantılarıTD-45
SQL SQLR-016 — Invalid object name: Organizasyon.Gorevler S2 · Observed=HAYIR · Guard=HAYIR
Hata sınıfıInvalid object name · SQL Error 208
GözlemlendiHAYIR · Potential=EVET · Silent=KISMEN
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiOrganizasyon.Gorevler
TabloOrganizasyon.Gorevler
EkranFrmGorevEkle (ANA MENÜ), SchedulerView
Kod dosyasıERPPRO/Class/Dao/Organizasyon.Gorev.vb:224; ERPPRO/Class/Dao/Organizasyon.Gorev.vb:297; ERPPRO/Class/Dao/Organizasyon.Gorev.vb:32; ERPPRO/Class/Dao/Organizasyon.Gorev.vb:377; ERPPRO/Class/Dao/Organizasyon.Gorev.vb:391; ERPPRO/Class/Dao/Organizasyon.Gorev.vb:406; ERPPRO/Organizasyon/FrmGorevEkle.vb:138; ERPPRO/Organizasyon/FrmGorevEkle.vb:39
Tetikleme koşuluİlgili ekran açıldığında/kayıt yapıldığında kod 'Organizasyon.Gorevler' nesnesine Select/Insert/Update gönderiyor; nesne DB1 kataloğunda yok.
Guard var mı?HAYIR
Olasılık / etki / güvenOrta / S2 / 90
Var mı? V2 / KUYUMCU / BASEHAYIR / HAYIR (TD-45: iki DB'de de yok) / HAYIR
Kullanıcı belirtisiMsgBox: "Invalid object name 'Organizasyon.Gorevler'." — ekran boş kalır ya da kayıt yapılamaz (InternalDb ham SQL mesajını gösterir; DAO kalıbında boş Catch → sessiz False).
ÖneriEkran/DAO'nun canlı olup olmadığı iş birimiyle netleştirilmeli; ya nesne şemaya (DBUpdate/ERPSCHEMA) eklenmeli ya da ekran menüden kaldırılmalı. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT OBJECT_ID('Organizasyon.Gorevler') AS ObjId; -- NULL ise nesne yok
Kanıtbasedb/out/code_refs2.json code_only[Organizasyon.Gorevler] (8 referans); Sistem.ERPSCHEMA satırı: YOK; TD-45.
İlgili SQL nesneleriSistem.ERPSCHEMA
Wiki bağlantılarıTD-45
SQL SQLR-017 — Invalid object name: Organizasyon.GorevDagitim S3 · Observed=HAYIR · Guard=HAYIR
Hata sınıfıInvalid object name · SQL Error 208
GözlemlendiHAYIR · Potential=EVET · Silent=KISMEN
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiOrganizasyon.GorevDagitim
TabloOrganizasyon.GorevDagitim
EkranFrmGorevEkle.vb:44, SchedulerView.vb:155
Kod dosyasıERPPRO/Class/Dao/Organizasyon.Gorev.vb:363; ERPPRO/Class/Dao/Organizasyon.Gorev.vb:365; ERPPRO/Organizasyon/FrmGorevEkle.vb:44; ERPPRO/Organizasyon/Task/SchedulerView.vb:155; ERPPRO/Organizasyon/Task/SchedulerView.vb:160; ERPPRO/Organizasyon/Task/SchedulerView.vb:165
Tetikleme koşuluİlgili ekran açıldığında/kayıt yapıldığında kod 'Organizasyon.GorevDagitim' nesnesine Select gönderiyor; nesne DB1 kataloğunda yok.
Guard var mı?HAYIR
Olasılık / etki / güvenOrta / S3 / 90
Var mı? V2 / KUYUMCU / BASEHAYIR / BİLİNMİYOR / HAYIR
Kullanıcı belirtisiMsgBox: "Invalid object name 'Organizasyon.GorevDagitim'." — ekran boş kalır ya da kayıt yapılamaz (InternalDb ham SQL mesajını gösterir; DAO kalıbında boş Catch → sessiz False).
ÖneriEkran/DAO'nun canlı olup olmadığı iş birimiyle netleştirilmeli; ya nesne şemaya (DBUpdate/ERPSCHEMA) eklenmeli ya da ekran menüden kaldırılmalı. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT OBJECT_ID('Organizasyon.GorevDagitim') AS ObjId; -- NULL ise nesne yok
Kanıtbasedb/out/code_refs2.json code_only[Organizasyon.GorevDagitim] (6 referans); Sistem.ERPSCHEMA satırı: YOK; TD-45.
İlgili SQL nesneleriSistem.ERPSCHEMA
Wiki bağlantılarıTD-45
SQL SQLR-018 — Invalid object name: Sistem.iException S4 · Observed=HAYIR · Guard=HAYIR
Hata sınıfıInvalid object name · SQL Error 208
GözlemlendiHAYIR · Potential=EVET · Silent=KISMEN
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiSistem.iException
TabloSistem.iException
EkranYalnız DAO (Sistem.iException.vb) — çağıran ekran bulunamadı
Kod dosyasıERPPRO/Class/Dao/Sistem.iException.vb:30; ERPPRO/Class/Dao/Sistem.iException.vb:98
Tetikleme koşuluİlgili ekran açıldığında/kayıt yapıldığında kod 'Sistem.iException' nesnesine Select/Insert/Update gönderiyor; nesne DB1 kataloğunda yok.
Guard var mı?HAYIR
Olasılık / etki / güvenÇok düşük (çağıran ekran bulunamadı — ölü kod) / S4 / 60
Var mı? V2 / KUYUMCU / BASEHAYIR / BİLİNMİYOR / HAYIR
Kullanıcı belirtisiMsgBox: "Invalid object name 'Sistem.iException'." — ekran boş kalır ya da kayıt yapılamaz (InternalDb ham SQL mesajını gösterir; DAO kalıbında boş Catch → sessiz False).
ÖneriEkran/DAO'nun canlı olup olmadığı iş birimiyle netleştirilmeli; ya nesne şemaya (DBUpdate/ERPSCHEMA) eklenmeli ya da ekran menüden kaldırılmalı. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT OBJECT_ID('Sistem.iException') AS ObjId; -- NULL ise nesne yok
Kanıtbasedb/out/code_refs2.json code_only[Sistem.iException] (2 referans); Sistem.ERPSCHEMA satırı: YOK; TD-45.
İlgili SQL nesneleriSistem.ERPSCHEMA
Wiki bağlantılarıTD-45
SQL SQLR-019 — Invalid object name: Siparis.PaketHesaplari S3 · Observed=HAYIR · Guard=HAYIR
Hata sınıfıInvalid object name · SQL Error 208
GözlemlendiHAYIR · Potential=EVET · Silent=HAYIR
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiSiparis.PaketHesaplari
TabloSiparis.PaketHesaplari
EkranFrmAddAccount, FrmPaketEkle (Siparis.PaketEx)
Kod dosyasıERPPRO/Form/Siparis/FrmAddAccount.vb:30; ERPPRO/Form/Siparis/FrmAddAccount.vb:34; ERPPRO/Form/Siparis/FrmPaketEkle.vb:67
Tetikleme koşuluİlgili ekran açıldığında/kayıt yapıldığında kod 'Siparis.PaketHesaplari' nesnesine Select/Insert/Update gönderiyor; nesne DB1 kataloğunda yok.
Guard var mı?HAYIR
Olasılık / etki / güvenDüşük-Orta / S3 / 90
Var mı? V2 / KUYUMCU / BASEHAYIR / BİLİNMİYOR / HAYIR
Kullanıcı belirtisiMsgBox: "Invalid object name 'Siparis.PaketHesaplari'." — ekran boş kalır ya da kayıt yapılamaz (InternalDb ham SQL mesajını gösterir; DAO kalıbında boş Catch → sessiz False).
ÖneriEkran/DAO'nun canlı olup olmadığı iş birimiyle netleştirilmeli; ya nesne şemaya (DBUpdate/ERPSCHEMA) eklenmeli ya da ekran menüden kaldırılmalı. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT OBJECT_ID('Siparis.PaketHesaplari') AS ObjId; -- NULL ise nesne yok
Kanıtbasedb/out/code_refs2.json code_only[Siparis.PaketHesaplari] (3 referans); Sistem.ERPSCHEMA satırı: YOK; TD-45.
İlgili SQL nesneleriSistem.ERPSCHEMA
Wiki bağlantılarıTD-45
SQL SQLR-020 — Invalid object name: Siparis.ModelAyarBlackList S3 · Observed=HAYIR · Guard=HAYIR
Hata sınıfıInvalid object name · SQL Error 208
GözlemlendiHAYIR · Potential=EVET · Silent=HAYIR
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiSiparis.ModelAyarBlackList
TabloSiparis.ModelAyarBlackList
EkranFrmModelKartıEkle.vb:27, FrmSipModelEkle.vb:75
Kod dosyasıERPPRO/Form/Siparis/FrmModelKartıEkle.vb:27; ERPPRO/Form/Siparis/FrmSipModelEkle.vb:75
Tetikleme koşuluİlgili ekran açıldığında/kayıt yapıldığında kod 'Siparis.ModelAyarBlackList' nesnesine Select gönderiyor; nesne DB1 kataloğunda yok.
Guard var mı?HAYIR
Olasılık / etki / güvenDüşük-Orta / S3 / 90
Var mı? V2 / KUYUMCU / BASEHAYIR / BİLİNMİYOR / HAYIR
Kullanıcı belirtisiMsgBox: "Invalid object name 'Siparis.ModelAyarBlackList'." — ekran boş kalır ya da kayıt yapılamaz (InternalDb ham SQL mesajını gösterir; DAO kalıbında boş Catch → sessiz False).
ÖneriEkran/DAO'nun canlı olup olmadığı iş birimiyle netleştirilmeli; ya nesne şemaya (DBUpdate/ERPSCHEMA) eklenmeli ya da ekran menüden kaldırılmalı. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT OBJECT_ID('Siparis.ModelAyarBlackList') AS ObjId; -- NULL ise nesne yok
Kanıtbasedb/out/code_refs2.json code_only[Siparis.ModelAyarBlackList] (2 referans); Sistem.ERPSCHEMA satırı: VAR (5 satır); TD-45. NOT: ana şema (ERPSCHEMA) bu tabloyu 5 satırla tanımlıyor → DBUpdate çalıştırılınca oluşturulabilir.
İlgili SQL nesneleriSistem.ERPSCHEMA
Wiki bağlantılarıTD-45
SQL SQLR-021 — Invalid object name: Siparis.modelayarBlacklist S3 · Observed=HAYIR · Guard=HAYIR
Hata sınıfıInvalid object name · SQL Error 208
GözlemlendiHAYIR · Potential=EVET · Silent=HAYIR
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiSiparis.modelayarBlacklist
TabloSiparis.modelayarBlacklist
EkranFrmModelKartıEkle.vb:168,176
Kod dosyasıERPPRO/Form/Siparis/FrmModelKartıEkle.vb:168; ERPPRO/Form/Siparis/FrmModelKartıEkle.vb:176
Tetikleme koşuluİlgili ekran açıldığında/kayıt yapıldığında kod 'Siparis.modelayarBlacklist' nesnesine Select/Insert/Update gönderiyor; nesne DB1 kataloğunda yok.
Guard var mı?HAYIR
Olasılık / etki / güvenDüşük-Orta / S3 / 90
Var mı? V2 / KUYUMCU / BASEHAYIR / BİLİNMİYOR / HAYIR
Kullanıcı belirtisiMsgBox: "Invalid object name 'Siparis.modelayarBlacklist'." — ekran boş kalır ya da kayıt yapılamaz (InternalDb ham SQL mesajını gösterir; DAO kalıbında boş Catch → sessiz False).
ÖneriEkran/DAO'nun canlı olup olmadığı iş birimiyle netleştirilmeli; ya nesne şemaya (DBUpdate/ERPSCHEMA) eklenmeli ya da ekran menüden kaldırılmalı. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT OBJECT_ID('Siparis.modelayarBlacklist') AS ObjId; -- NULL ise nesne yok
Kanıtbasedb/out/code_refs2.json code_only[Siparis.modelayarBlacklist] (2 referans); Sistem.ERPSCHEMA satırı: VAR (5 satır); TD-45. NOT: ana şema (ERPSCHEMA) bu tabloyu 5 satırla tanımlıyor → DBUpdate çalıştırılınca oluşturulabilir.
İlgili SQL nesneleriSistem.ERPSCHEMA
Wiki bağlantılarıTD-45
SQL SQLR-022 — Invalid object name: Siparis.GetPaketHesapListesi S3 · Observed=HAYIR · Guard=HAYIR
Hata sınıfıInvalid object name · SQL Error 208
GözlemlendiHAYIR · Potential=EVET · Silent=HAYIR
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiSiparis.GetPaketHesapListesi
EkranFrmPaketEkle.vb:53
Kod dosyasıERPPRO/Form/Siparis/FrmPaketEkle.vb:53
Tetikleme koşuluİlgili ekran açıldığında/kayıt yapıldığında kod 'Siparis.GetPaketHesapListesi' nesnesine Select gönderiyor; nesne DB1 kataloğunda yok.
Guard var mı?HAYIR
Olasılık / etki / güvenDüşük-Orta / S3 / 90
Var mı? V2 / KUYUMCU / BASEHAYIR / BİLİNMİYOR / HAYIR
Kullanıcı belirtisiMsgBox: "Invalid object name 'Siparis.GetPaketHesapListesi'." — ekran boş kalır ya da kayıt yapılamaz (InternalDb ham SQL mesajını gösterir; DAO kalıbında boş Catch → sessiz False).
ÖneriEkran/DAO'nun canlı olup olmadığı iş birimiyle netleştirilmeli; ya nesne şemaya (DBUpdate/ERPSCHEMA) eklenmeli ya da ekran menüden kaldırılmalı. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT OBJECT_ID('Siparis.GetPaketHesapListesi') AS ObjId; -- NULL ise nesne yok
Kanıtbasedb/out/code_refs2.json code_only[Siparis.GetPaketHesapListesi] (1 referans); Sistem.ERPSCHEMA satırı: YOK; TD-45.
İlgili SQL nesneleriSistem.ERPSCHEMA
Wiki bağlantılarıTD-45
SQL SQLR-023 — Invalid object name: Siparis.GetUyumluPaketler S3 · Observed=HAYIR · Guard=HAYIR
Hata sınıfıInvalid object name · SQL Error 208
GözlemlendiHAYIR · Potential=EVET · Silent=HAYIR
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiSiparis.GetUyumluPaketler
EkranFrmSipModelEkle.vb:115
Kod dosyasıERPPRO/Form/Siparis/FrmSipModelEkle.vb:115
Tetikleme koşuluİlgili ekran açıldığında/kayıt yapıldığında kod 'Siparis.GetUyumluPaketler' nesnesine Select gönderiyor; nesne DB1 kataloğunda yok.
Guard var mı?HAYIR
Olasılık / etki / güvenDüşük-Orta / S3 / 90
Var mı? V2 / KUYUMCU / BASEHAYIR / BİLİNMİYOR / HAYIR
Kullanıcı belirtisiMsgBox: "Invalid object name 'Siparis.GetUyumluPaketler'." — ekran boş kalır ya da kayıt yapılamaz (InternalDb ham SQL mesajını gösterir; DAO kalıbında boş Catch → sessiz False).
ÖneriEkran/DAO'nun canlı olup olmadığı iş birimiyle netleştirilmeli; ya nesne şemaya (DBUpdate/ERPSCHEMA) eklenmeli ya da ekran menüden kaldırılmalı. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT OBJECT_ID('Siparis.GetUyumluPaketler') AS ObjId; -- NULL ise nesne yok
Kanıtbasedb/out/code_refs2.json code_only[Siparis.GetUyumluPaketler] (1 referans); Sistem.ERPSCHEMA satırı: YOK; TD-45.
İlgili SQL nesneleriSistem.ERPSCHEMA
Wiki bağlantılarıTD-45
SQL SQLR-024 — Invalid object name: Siparis.GetLastPrice S3 · Observed=HAYIR · Guard=HAYIR
Hata sınıfıInvalid object name · SQL Error 208
GözlemlendiHAYIR · Potential=EVET · Silent=HAYIR
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiSiparis.GetLastPrice
EkranFrmSipModelEkle.vb:355
Kod dosyasıERPPRO/Form/Siparis/FrmSipModelEkle.vb:355
Tetikleme koşuluİlgili ekran açıldığında/kayıt yapıldığında kod 'Siparis.GetLastPrice' nesnesine Select gönderiyor; nesne DB1 kataloğunda yok.
Guard var mı?HAYIR
Olasılık / etki / güvenDüşük-Orta / S3 / 90
Var mı? V2 / KUYUMCU / BASEHAYIR / BİLİNMİYOR / HAYIR
Kullanıcı belirtisiMsgBox: "Invalid object name 'Siparis.GetLastPrice'." — ekran boş kalır ya da kayıt yapılamaz (InternalDb ham SQL mesajını gösterir; DAO kalıbında boş Catch → sessiz False).
ÖneriEkran/DAO'nun canlı olup olmadığı iş birimiyle netleştirilmeli; ya nesne şemaya (DBUpdate/ERPSCHEMA) eklenmeli ya da ekran menüden kaldırılmalı. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT OBJECT_ID('Siparis.GetLastPrice') AS ObjId; -- NULL ise nesne yok
Kanıtbasedb/out/code_refs2.json code_only[Siparis.GetLastPrice] (1 referans); Sistem.ERPSCHEMA satırı: YOK; TD-45.
İlgili SQL nesneleriSistem.ERPSCHEMA
Wiki bağlantılarıTD-45
SQL SQLR-025 — Invalid object name: Uretim.GetFormulDetay S3 · Observed=HAYIR · Guard=HAYIR
Hata sınıfıInvalid object name · SQL Error 208
GözlemlendiHAYIR · Potential=EVET · Silent=HAYIR
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiUretim.GetFormulDetay
EkranEditEritme.vb:45, EditFormulEkle.vb:43
Kod dosyasıERPPRO/Uretim/EditEritme.vb:45; ERPPRO/Uretim/EditFormulEkle.vb:43
Tetikleme koşuluİlgili ekran açıldığında/kayıt yapıldığında kod 'Uretim.GetFormulDetay' nesnesine Select gönderiyor; nesne DB1 kataloğunda yok.
Guard var mı?HAYIR
Olasılık / etki / güvenDüşük-Orta / S3 / 90
Var mı? V2 / KUYUMCU / BASEHAYIR / BİLİNMİYOR / HAYIR
Kullanıcı belirtisiMsgBox: "Invalid object name 'Uretim.GetFormulDetay'." — ekran boş kalır ya da kayıt yapılamaz (InternalDb ham SQL mesajını gösterir; DAO kalıbında boş Catch → sessiz False).
ÖneriEkran/DAO'nun canlı olup olmadığı iş birimiyle netleştirilmeli; ya nesne şemaya (DBUpdate/ERPSCHEMA) eklenmeli ya da ekran menüden kaldırılmalı. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT OBJECT_ID('Uretim.GetFormulDetay') AS ObjId; -- NULL ise nesne yok
Kanıtbasedb/out/code_refs2.json code_only[Uretim.GetFormulDetay] (2 referans); Sistem.ERPSCHEMA satırı: YOK; TD-45.
İlgili SQL nesneleriSistem.ERPSCHEMA
Wiki bağlantılarıTD-45
SQL SQLR-026 — Invalid object name: Uretim.GetPartiModelListesi S3 · Observed=HAYIR · Guard=HAYIR
Hata sınıfıInvalid object name · SQL Error 208
GözlemlendiHAYIR · Potential=EVET · Silent=HAYIR
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiUretim.GetPartiModelListesi
EkranFrmPartiEkle.vb:113
Kod dosyasıERPPRO/Uretim/FrmPartiEkle.vb:113
Tetikleme koşuluİlgili ekran açıldığında/kayıt yapıldığında kod 'Uretim.GetPartiModelListesi' nesnesine Select gönderiyor; nesne DB1 kataloğunda yok.
Guard var mı?HAYIR
Olasılık / etki / güvenDüşük-Orta / S3 / 90
Var mı? V2 / KUYUMCU / BASEHAYIR / BİLİNMİYOR / HAYIR
Kullanıcı belirtisiMsgBox: "Invalid object name 'Uretim.GetPartiModelListesi'." — ekran boş kalır ya da kayıt yapılamaz (InternalDb ham SQL mesajını gösterir; DAO kalıbında boş Catch → sessiz False).
ÖneriEkran/DAO'nun canlı olup olmadığı iş birimiyle netleştirilmeli; ya nesne şemaya (DBUpdate/ERPSCHEMA) eklenmeli ya da ekran menüden kaldırılmalı. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT OBJECT_ID('Uretim.GetPartiModelListesi') AS ObjId; -- NULL ise nesne yok
Kanıtbasedb/out/code_refs2.json code_only[Uretim.GetPartiModelListesi] (1 referans); Sistem.ERPSCHEMA satırı: YOK; TD-45.
İlgili SQL nesneleriSistem.ERPSCHEMA
Wiki bağlantılarıTD-45
SQL SQLR-027 — Invalid object name: Cari.GetRiskRaporu S2 · Observed=HAYIR · Guard=HAYIR
Hata sınıfıInvalid object name · SQL Error 208
GözlemlendiHAYIR · Potential=EVET · Silent=HAYIR
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiCari.GetRiskRaporu
EkranFrmRiskRaporu (ANA MENÜ FrmMainForm.vb:365)
Kod dosyasıERPPRO/Form/Tanımlamalar/Cari/FrmRiskRaporu.vb:14
Tetikleme koşuluİlgili ekran açıldığında/kayıt yapıldığında kod 'Cari.GetRiskRaporu' nesnesine Select gönderiyor; nesne DB1 kataloğunda yok.
Guard var mı?HAYIR
Olasılık / etki / güvenOrta — menüden açılabiliyor / S2 / 90
Var mı? V2 / KUYUMCU / BASEHAYIR / BİLİNMİYOR / HAYIR
Kullanıcı belirtisiMsgBox: "Invalid object name 'Cari.GetRiskRaporu'." — ekran boş kalır ya da kayıt yapılamaz (InternalDb ham SQL mesajını gösterir; DAO kalıbında boş Catch → sessiz False).
ÖneriEkran/DAO'nun canlı olup olmadığı iş birimiyle netleştirilmeli; ya nesne şemaya (DBUpdate/ERPSCHEMA) eklenmeli ya da ekran menüden kaldırılmalı. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT OBJECT_ID('Cari.GetRiskRaporu') AS ObjId; -- NULL ise nesne yok
Kanıtbasedb/out/code_refs2.json code_only[Cari.GetRiskRaporu] (1 referans); Sistem.ERPSCHEMA satırı: YOK; TD-45.
İlgili SQL nesneleriSistem.ERPSCHEMA
Wiki bağlantılarıTD-45
SQL SQLR-028 — Invalid object name: Stok.GetTakozIsciligi S3 · Observed=HAYIR · Guard=HAYIR
Hata sınıfıInvalid object name · SQL Error 208
GözlemlendiHAYIR · Potential=EVET · Silent=HAYIR
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiStok.GetTakozIsciligi
EkranDatabase.vb:625 GetTakozIsciligi ← OldFis/Printing.vb (takoz fişi yazdırma)
Kod dosyasıERPPRO/Class/Module/Database.vb:625
Tetikleme koşuluİlgili ekran açıldığında/kayıt yapıldığında kod 'Stok.GetTakozIsciligi' nesnesine Select gönderiyor; nesne DB1 kataloğunda yok.
Guard var mı?HAYIR
Olasılık / etki / güvenOrta / S3 / 90
Var mı? V2 / KUYUMCU / BASEHAYIR / BİLİNMİYOR / HAYIR
Kullanıcı belirtisiMsgBox: "Invalid object name 'Stok.GetTakozIsciligi'." — ekran boş kalır ya da kayıt yapılamaz (InternalDb ham SQL mesajını gösterir; DAO kalıbında boş Catch → sessiz False).
ÖneriEkran/DAO'nun canlı olup olmadığı iş birimiyle netleştirilmeli; ya nesne şemaya (DBUpdate/ERPSCHEMA) eklenmeli ya da ekran menüden kaldırılmalı. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT OBJECT_ID('Stok.GetTakozIsciligi') AS ObjId; -- NULL ise nesne yok
Kanıtbasedb/out/code_refs2.json code_only[Stok.GetTakozIsciligi] (1 referans); Sistem.ERPSCHEMA satırı: YOK; TD-45.
İlgili SQL nesneleriSistem.ERPSCHEMA
Wiki bağlantılarıTD-45
SQL SQLR-029 — Invalid object name: Organizasyon.GelenGorevler S3 · Observed=HAYIR · Guard=HAYIR
Hata sınıfıInvalid object name · SQL Error 208
GözlemlendiHAYIR · Potential=EVET · Silent=HAYIR
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiOrganizasyon.GelenGorevler
TabloOrganizasyon.GelenGorevler
EkranFrmGorevEkle.vb:105-106, SchedulerView.vb:48
Kod dosyasıERPPRO/Organizasyon/FrmGorevEkle.vb:105; ERPPRO/Organizasyon/FrmGorevEkle.vb:106; ERPPRO/Organizasyon/Task/SchedulerView.vb:48
Tetikleme koşuluİlgili ekran açıldığında/kayıt yapıldığında kod 'Organizasyon.GelenGorevler' nesnesine Select gönderiyor; nesne DB1 kataloğunda yok.
Guard var mı?HAYIR
Olasılık / etki / güvenOrta / S3 / 90
Var mı? V2 / KUYUMCU / BASEHAYIR / BİLİNMİYOR / HAYIR
Kullanıcı belirtisiMsgBox: "Invalid object name 'Organizasyon.GelenGorevler'." — ekran boş kalır ya da kayıt yapılamaz (InternalDb ham SQL mesajını gösterir; DAO kalıbında boş Catch → sessiz False).
ÖneriEkran/DAO'nun canlı olup olmadığı iş birimiyle netleştirilmeli; ya nesne şemaya (DBUpdate/ERPSCHEMA) eklenmeli ya da ekran menüden kaldırılmalı. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT OBJECT_ID('Organizasyon.GelenGorevler') AS ObjId; -- NULL ise nesne yok
Kanıtbasedb/out/code_refs2.json code_only[Organizasyon.GelenGorevler] (3 referans); Sistem.ERPSCHEMA satırı: YOK; TD-45.
İlgili SQL nesneleriSistem.ERPSCHEMA
Wiki bağlantılarıTD-45
SQL SQLR-030 — Invalid object name: Organizasyon.GidenGorevler S3 · Observed=HAYIR · Guard=HAYIR
Hata sınıfıInvalid object name · SQL Error 208
GözlemlendiHAYIR · Potential=EVET · Silent=HAYIR
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiOrganizasyon.GidenGorevler
TabloOrganizasyon.GidenGorevler
EkranSchedulerView.vb:50
Kod dosyasıERPPRO/Organizasyon/Task/SchedulerView.vb:50
Tetikleme koşuluİlgili ekran açıldığında/kayıt yapıldığında kod 'Organizasyon.GidenGorevler' nesnesine Select gönderiyor; nesne DB1 kataloğunda yok.
Guard var mı?HAYIR
Olasılık / etki / güvenDüşük / S3 / 90
Var mı? V2 / KUYUMCU / BASEHAYIR / BİLİNMİYOR / HAYIR
Kullanıcı belirtisiMsgBox: "Invalid object name 'Organizasyon.GidenGorevler'." — ekran boş kalır ya da kayıt yapılamaz (InternalDb ham SQL mesajını gösterir; DAO kalıbında boş Catch → sessiz False).
ÖneriEkran/DAO'nun canlı olup olmadığı iş birimiyle netleştirilmeli; ya nesne şemaya (DBUpdate/ERPSCHEMA) eklenmeli ya da ekran menüden kaldırılmalı. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT OBJECT_ID('Organizasyon.GidenGorevler') AS ObjId; -- NULL ise nesne yok
Kanıtbasedb/out/code_refs2.json code_only[Organizasyon.GidenGorevler] (1 referans); Sistem.ERPSCHEMA satırı: YOK; TD-45.
İlgili SQL nesneleriSistem.ERPSCHEMA
Wiki bağlantılarıTD-45
SQL SQLR-031 — Invalid object name: Genel.Dosyalar (VIEW) S1 · Observed=HAYIR (DB1'de canlı test yok) · Guard=HAYIR
Hata sınıfıInvalid object name · SQL Error 208
GözlemlendiHAYIR (DB1'de canlı test yok) · Potential=EVET · Silent=HAYIR
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiGenel.Dosyalar (VIEW)
TabloDOCUMENTS.Genel.Dosyalar
EkranCari.AcceptTransaction (Cari.Islemler INSERT/UPDATE tetikleyicisi) → Cari.GetGerekliEvraklar; Genel.EvrakListesi; Sistem.Reset; DAO Genel.Dosya.vb (AddDokuman, evrak ekranları)
Kod dosyasıdbclean/analysis_db.json crossdb[1449824277]; ERPPRO/Class/Dao/Genel.Dosya.vb:113,186,252; ERPPRO/Class/Ext/Genel.DosyaEx.vb:23,52
Tetikleme koşuluGenel.Dosyalar bir VIEW: 'Select * from DOCUMENTS.Genel.Dosyalar'. DOCUMENTS veritabanı sunucuda yoksa (DB1 sys.databases: master,tempdb,model,msdb,ERPGOLDV2 — DOCUMENTS YOK) view'ı okuyan her sorgu 208/916 ile düşer. AcceptTransaction her Cari.Islemler INSERT/UPDATE'inde Cari.GetGerekliEvraklar(@SubeId,@HesapId,'True') → Genel.Dosyalar'ı okur.
Guard var mı?HAYIR
Olasılık / etki / güvenDB1'de çok yüksek (DOCUMENTS DB yok, tetikleyici etkin); DB2'de düşük (Genel.Dosyalar gerçek tablo) / S1 / 85
Var mı? V2 / KUYUMCU / BASEEVET (view) / DOCUMENTS DB: HAYIR / EVET (tablo, KUY_ONLY) / EVET (BASE-CORE)
Kullanıcı belirtisiİşlem kaydında "Invalid object name 'DOCUMENTS.Genel.Dosyalar'" ya da "Database 'DOCUMENTS' does not exist"; her işlem girişi geri alınır. Doküman ekranlarında aynı hata.
ÖneriBASE'de Genel.Dosyalar'ın tablo mu view mi olacağı kararı; cross-DB bağımlılığın kaldırılması. AcceptTransaction'daki evrak kontrolünün DOCUMENTS'e bağımlı olmaması. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT name FROM sys.databases WHERE name='DOCUMENTS'; SELECT OBJECT_DEFINITION(OBJECT_ID('Genel.Dosyalar')); SELECT TOP 1 * FROM Genel.Dosyalar; -- hata verirse kırık
Kanıtmodules.json Genel.Dosyalar: 'CREATE View Genel.Dosyalar as Select * from DOCUMENTS.Genel.Dosyalar'; deps.json: Cari.GetGerekliEvraklarGenel.Dosyalar; AcceptTransaction satır ~112: 'SELECT COUNT(*) FROM Cari.GetGerekliEvraklar(@SubeId,@HesapId,'True')'; misc.json database listesi.
İlgili SQL nesneleriGenel.Dosyalar, Cari.GetGerekliEvraklar
SQL SQLR-032 — Invalid object name: LiveUpdate.Version / LiveUpdate.SetVersion / LiveUpdate.Lock / LiveUpdate.UnLock S4 · Observed=HAYIR · Guard=EVET (OBJECT_ID kontrolü)
Hata sınıfıInvalid object name · SQL Error 208
GözlemlendiHAYIR · Potential=EVET · Silent=HAYIR
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiLiveUpdate.Version / LiveUpdate.SetVersion / LiveUpdate.Lock / LiveUpdate.UnLock
TabloLiveUpdate.VersionHistory_
EkranConfigurationForm.vb:270 (LiveUpdate sürüm kontrolü)
Kod dosyasıERPPRO/Configuration/ConfigurationForm.vb:270
Tetikleme koşuluProsedürler 'LiveUpdate.VersionHistory_' (kilitli ad) tablosuna başvuruyor; tablo DB1'de yok. Ancak her dal OBJECT_ID('LiveUpdate.VersionHistory') IS NOT NULL kontrolü ile korunuyor (deferred name resolution). Yalnız Lock çağrılmış ve VersionHistory→VersionHistory_ yeniden adlandırılmışken tetiklenir.
Guard var mı?EVET (OBJECT_ID kontrolü)
Olasılık / etki / güvenDüşük / S4 / 80
Var mı? V2 / KUYUMCU / BASEEVET (proc) / VersionHistory_: HAYIR / BİLİNMİYOR / EVET (Version BASE-CORE; Lock/UnLock/SetVersion UNKNOWN)
Kullanıcı belirtisiSürüm kontrolü sırasında 'Invalid object name LiveUpdate.VersionHistory_' — yalnız kilit senaryosunda.
ÖneriLock/UnLock'un sp_rename ile tablo adı değiştirme yaklaşımı yerine bir kilit kolonu; unresolved referansın BASE build'inde bilinçli bırakılması. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT OBJECT_ID('LiveUpdate.VersionHistory'), OBJECT_ID('LiveUpdate.VersionHistory_');
Kanıtanalysis_db.json unresolved[148911602,484912799]='LiveUpdate.VersionHistory_'; analysis.json unresolved_in_base.
İlgili SQL nesneleriLiveUpdate.Version, LiveUpdate.SetVersion, LiveUpdate.Lock, LiveUpdate.UnLock, LiveUpdate.VersionHistory
SQL SQLR-033 — Invalid object name: Sistem.FromERP S2 · Observed=HAYIR · Guard=HAYIR
Hata sınıfıInvalid object name · SQL Error 208 (ya da 213 kolon sayısı)
GözlemlendiHAYIR · Potential=EVET · Silent=HAYIR
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiSistem.FromERP
Tablo<@Database>.dbo.Firmalar, <@Database>.dbo.Birimler_, <@Database>.dbo.BakiyeIslem; hedef Cari.Hesaplar
EkranFrmHesapAktar (ANA MENÜ) → 'Sistem.FromERP <Sirket>,<Sube>,<MasterKart>'
Kod dosyasıERPPRO/Form/Tanımlamalar/Sistem/FrmHesapAktar.vb:22
Tetikleme koşuluProc, kullanıcı combosundan gelen @Database adıyla '<db>.dbo.Firmalar' / 'dbo.Birimler_' tablolarına dinamik SQL (exec(@HesapQuery)) üretir. Kaynak DB/tablo yoksa 208. Ayrıca 'Insert Into Cari.Hesaplar Select …' KOLON LİSTESİZ 41 değer üretiyor; Cari.Hesaplar DB1'de 57 kolon ve ilk kolon Id IDENTITY → 213 'Column name or number of supplied values does not match table definition' (ya da 544).
Guard var mı?HAYIR
Olasılık / etki / güvenYüksek (ekran her çalıştırıldığında 213 kaçınılmaz) / S2 / 85
Var mı? V2 / KUYUMCU / BASEEVET (proc) / BİLİNMİYOR / EVET (BASE-CORE, unresolved: dbo.firmalar, dbo.birimler_)
Kullanıcı belirtisiHesap aktarımı ekranında 'Invalid object name …dbo.Firmalar' ya da 'Column name or number of supplied values does not match table definition'.
ÖneriEski ERP'den aktarım prosedürü BASE kapsamından çıkarılmalı ya da kolon listesiyle yeniden yazılmalı; @Database için QUOTENAME/whitelist. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT COUNT(*) FROM sys.columns WHERE object_id=OBJECT_ID('Cari.Hesaplar'); -- 57; proc metnindeki select listesi 41 değer
Kanıtmodules.json Sistem.FromERP: '@HesapQuery = Insert Into Cari.Hesaplar Select Id as OldFirmaId,… from ' + @DataBase + '.dbo.Firmalar'; columns.json Cari.Hesaplar 57 kolon, Id identity; analysis.json unresolved_in_base['Sistem.FromERP'].
İlgili SQL nesneleriSistem.FromERP, dbo.BakiyeIslem, Cari.Hesaplar
SQL SQLR-034 — Invalid object name: dbo.sp_DevirIslemiYap S3 · Observed=HAYIR · Guard=KISMEN (ERPGLOBAL için IF NOT EXISTS CREATE DATABASE)
Hata sınıfıInvalid object name · SQL Error 208
GözlemlendiHAYIR · Potential=EVET · Silent=HAYIR
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesidbo.sp_DevirIslemiYap
TabloERPGLOBAL.dbo.Company; Cari.Bilancolar; Cari.IslemlerDetalari; Sistem.BakiyeIslem
EkranKoddan çağıran yok (grep 0); yalnız DB içi/manuel
Tetikleme koşuluProc ERPGLOBAL veritabanına (cross-DB) ve çözümlenemeyen 4 nesneye (Cari.bilancolar, Cari.islemlerdetalari [yazım hatası], Sistem.bakiyeislem, dbo.company) başvuruyor; IDENTITY_INSERT Cari.Islemler ON ve tetikleyici disable/enable dinamik SQL içeriyor.
Guard var mı?KISMEN (ERPGLOBAL için IF NOT EXISTS CREATE DATABASE)
Olasılık / etki / güvenDüşük (çağıran yok) / S3 / 80
Var mı? V2 / KUYUMCU / BASEEVET (proc) / BİLİNMİYOR / HAYIR (UNKNOWN/EXCLUDE)
Kullanıcı belirtisiÇalıştırılırsa 'Invalid object name Cari.IslemlerDetalari' vb.; devir yarım kalır (TRUNCATE sonrası).
ÖneriBASE dışı bırakılmalı; devir mantığı tek yerde (Devir.vb vs sp_DevirIslemiYap vs Sistem.Devir çakışıyor). (Uygulanmadı)
Validation SQL (salt okunur)
SELECT referenced_schema_name, referenced_entity_name FROM sys.sql_expression_dependencies WHERE referencing_id=OBJECT_ID('dbo.sp_DevirIslemiYap') AND referenced_id IS NULL;
Kanıtanalysis.json rows['dbo.sp_DevirIslemiYap'].unresolved=['Cari.bilancolar','Cari.islemlerdetalari','Sistem.bakiyeislem','dbo.company']; analysis_db.json crossdb[1583396760]='ERPGLOBAL.Dbo.Company'; modül metninde 'SET IDENTITY_INSERT Cari.Islemler ON'.
İlgili SQL nesneleridbo.sp_DevirIslemiYap, Cari.Islemler
SQL SQLR-035 — Invalid object name: Sistem.MT4OrdersSync / Sistem.MT4TicketsSync / Sistem.Reset S4 · Observed=HAYIR · Guard=HAYIR
Hata sınıfıInvalid object name · SQL Error 208
GözlemlendiHAYIR · Potential=EVET · Silent=HAYIR
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiSistem.MT4OrdersSync / Sistem.MT4TicketsSync / Sistem.Reset
TabloSistem.MT4Orders, Sistem.MT4Tickets
EkranKoddan çağıran yok
Tetikleme koşuluProsedürler Sistem.MT4Orders / Sistem.MT4tickets tablolarına başvuruyor; DB1'de yok (Sistem.ERPSCHEMA kataloğunda 'Sistem.GetMT4Orders' 17 satır, 'Sistem.MT4EXPO' 3 satır var → ana şemada MT4 nesneleri mevcut, V2'de kurulmamış).
Guard var mı?HAYIR
Olasılık / etki / güvenDüşük (çağıran yok; MT4 modülü DB1'de kullanılmıyor) / S4 / 80
Var mı? V2 / KUYUMCU / BASEEVET (proc) / tablolar HAYIR / BİLİNMİYOR / HAYIR (UNKNOWN)
Kullanıcı belirtisiÇalıştırılırsa 'Invalid object name Sistem.MT4Orders'.
ÖneriMT4/FX nesne kümesi BASE dışında ayrı bir eklenti paketi olarak ele alınmalı. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT OBJECT_ID('Sistem.MT4Orders'), OBJECT_ID('Sistem.MT4Tickets');
Kanıtanalysis_db.json unresolved[1145823194]=['Sistem.MT4Orders'], [1161823251]=['Sistem.MT4tickets'], [1193823365]=['Sistem.MT4Tickets']; dbsql.json Sistem.ERPSCHEMA: Sistem.GetMT4Orders×17, Sistem.MT4EXPO×3.
İlgili SQL nesneleriSistem.MT4OrdersSync, Sistem.MT4TicketsSync, Sistem.Reset, Sistem.ERPSCHEMA
SQL SQLR-036 — Invalid object name: AifaDev.Reports #16, #19, #29, #30 (DB içinde saklanan rapor SQL'i) S3 · Observed=HAYIR · Guard=HAYIR
Hata sınıfıInvalid object name · SQL Error 208
GözlemlendiHAYIR · Potential=EVET · Silent=HAYIR
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiAifaDev.Reports #16, #19, #29, #30 (DB içinde saklanan rapor SQL'i)
TabloMüşteriŞemasıD.GetCariBakiyeHaraketleri; MüşteriŞemasıD.GetEnvanter; Reports.IptalIslemRaporu; Cari.HesapExtresiDetails
EkranRapor Yöneticisi (Designer/ReportManager) — 'Bakiye Kontrol Raporu', 'Envanter Raporu', 'SilinmisIslemRaporu', 'Bakiye Extresi (Detay)'
Kod dosyasıdbclean/dbsql.json src=AifaDev.Reports id=16,19,29,30
Tetikleme koşuluKullanıcı bu raporları çalıştırdığında saklanan SQL DB1'de olmayan fonksiyon/view'ları çağırıyor (MüşteriŞemasıD özel nesneleri ya da yeniden adlandırılmış rapor).
Guard var mı?HAYIR
Olasılık / etki / güvenOrta (rapor listesinde görünür) / S3 / 90
Var mı? V2 / KUYUMCU / BASEHAYIR / BİLİNMİYOR / HAYIR
Kullanıcı belirtisiRapor çalıştırılınca "Invalid object name 'MüşteriŞemasıD.GetEnvanter'" vb.
ÖneriAifaDev.Reports satırları katalogla doğrulanıp kırık raporlar pasife alınmalı; BASE seed'ine yalnız çözümlenen raporlar. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT Id,ReportName FROM AifaDev.Reports WHERE Query LIKE '%GetEnvanter%' OR Query LIKE '%GetCariBakiyeHaraketleri%' OR Query LIKE '%IptalIslemRaporu%' OR Query LIKE '%HesapExtresiDetails%';
Kanıtdbsql.json AifaDev.Reports#16 'Select * From MüşteriŞemasıD.GetCariBakiyeHaraketleri(@HesapId,@Tarih,@BirimId)', #19 'MüşteriŞemasıD.GetEnvanter(@Tarih)', #29 'Reports.IptalIslemRaporu(...)', #30 'Cari.HesapExtresiDetails'; objects.json'da bu adlar yok.
İlgili SQL nesneleriAifaDev.Reports
SQL SQLR-037 — Could not find stored procedure: Reports.GetPozisyonDetay S3 · Observed=HAYIR · Guard=HAYIR
Hata sınıfıCould not find stored procedure · SQL Error 313 (An insufficient number of arguments were supplied)
GözlemlendiHAYIR · Potential=EVET · Silent=HAYIR
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiReports.GetPozisyonDetay
EkranFrmPozisyonDurumRaporu (ANA MENÜ FrmMainForm.vb:162); Design.PopupGrid #5
Kod dosyasıERPPRO/Form/RefreshGrid/FrmPozisyonDurum.vb:15; dbclean/dbsql.json Design.PopupGrid id=5
Tetikleme koşuluFonksiyon (@SubeId,@BasTarih,@SonTarih) 3 parametre bekliyor; kod ve PopupGrid 2 argümanla çağırıyor: Reports.GetPozisyonDetay('tarih1','tarih2').
Guard var mı?HAYIR
Olasılık / etki / güvenYüksek (ekran açıldığında her seferinde) / S3 / 95
Var mı? V2 / KUYUMCU / BASEEVET / BİLİNMİYOR (DB2'de imza farklı olabilir) / EVET (BASE-CORE)
Kullanıcı belirtisi"An insufficient number of arguments were supplied for the procedure or function Reports.GetPozisyonDetay." — Pozisyon Durum raporu boş.
ÖneriFonksiyon imzası ile çağrılar eşitlenmeli (DB2'deki imza doğrulanmalı — sürüm kayması işareti). (Uygulanmadı)
Validation SQL (salt okunur)
SELECT p.name FROM sys.parameters p WHERE p.object_id=OBJECT_ID('Reports.GetPozisyonDetay'); -- 3 satır beklenir
Kanıtparameters.json Reports.GetPozisyonDetay: @SubeId,@BasTarih,@SonTarih; FrmPozisyonDurum.vb:15 'Reports.GetPozisyonDetay(''" & DateEdit1… & "'',''" & DateEdit2 …'; PopupGrid#5 'Reports.GetPozisyonDetay(getdate(),Getdate())'.
İlgili SQL nesneleriReports.GetPozisyonDetay, Design.PopupGrid
SQL SQLR-038 — Could not find stored procedure: Reports.ResmiPozisyon S3 · Observed=HAYIR · Guard=HAYIR
Hata sınıfıCould not find stored procedure · SQL Error 313
GözlemlendiHAYIR · Potential=EVET · Silent=HAYIR
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiReports.ResmiPozisyon
EkranRapor Yöneticisi — 'Resmi Pozisyon Raporu' (AifaDev.Reports #38–#66, 29 kopya satır)
Kod dosyasıdbclean/dbsql.json src=AifaDev.Reports id=38..66
Tetikleme koşuluFonksiyon @Tarih parametresi bekliyor; 29 rapor tanımı 'Reports.ResmiPozisyon ()' parametresiz çağırıyor (yalnız #67 doğru).
Guard var mı?HAYIR
Olasılık / etki / güvenYüksek (rapor seçilirse) / S3 / 95
Var mı? V2 / KUYUMCU / BASEEVET / BİLİNMİYOR / EVET (BASE-CORE)
Kullanıcı belirtisi"An insufficient number of arguments were supplied for the procedure or function Reports.ResmiPozisyon."
ÖneriTekrarlı 29 rapor satırının temizlenmesi; seed'e yalnız #67. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT Id FROM AifaDev.Reports WHERE Query LIKE '%ResmiPozisyon ()%';
Kanıtdbsql.json AifaDev.Reports #38–#66 'Select * from Reports.ResmiPozisyon ()'; parameters.json Reports.ResmiPozisyon: @Tarih.
İlgili SQL nesneleriReports.ResmiPozisyon, AifaDev.Reports
SQL SQLR-039 — Invalid object name: AifaDev.ExQueryBuilder (TRIGGER on AifaDev.RepositoryItems) S3 · Observed=HAYIR · Guard=HAYIR
Hata sınıfıInvalid object name · SQL Error 4902 (Cannot find the object … ALTER VIEW)
GözlemlendiHAYIR · Potential=EVET · Silent=HAYIR
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiAifaDev.ExQueryBuilder (TRIGGER on AifaDev.RepositoryItems)
TabloQuery.<Owner> (dinamik view)
EkranDataLayout/Repository.vb:21,45 (DynamicForms / depo alan tanımı ekranı)
Kod dosyasıERPPRO/DataLayout/Repository.vb:21,45
Tetikleme koşuluTetikleyici yeni bir Owner için view oluşturmak istediğinde her iki dalda da 'Alter View Query.<Owner>' üretiyor ('if OBJECT_ID(@ViewName) is null → Alter View' — CREATE yok). View henüz yoksa ALTER VIEW hata verir → tetikleyici hatası RepositoryItems INSERT'ini geri alır. Ayrıca schema Query yoksa exec('Add Schema Query') → 102 syntax error.
Guard var mı?HAYIR
Olasılık / etki / güvenYüksek — ilk kez tanımlanan her Owner için / S3 / 90
Var mı? V2 / KUYUMCU / BASEEVET / BİLİNMİYOR / EVET (BASE-DEPENDENCY)
Kullanıcı belirtisiDinamik form alanı eklerken "Cannot find the object 'Query.XXX' because it does not exist or you do not have permissions."
ÖneriOBJECT_ID kontrolünde CREATE/ALTER ayrımı; 'Add Schema' → 'CREATE SCHEMA'. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT DISTINCT [Owner] FROM AifaDev.RepositoryItems WHERE IsDeleted=0 AND OBJECT_ID('Query.'+[Owner]) IS NULL; -- view'ı olmayan owner'lar
Kanıtmodules.json AifaDev.ExQueryBuilder: "if OBJECT_ID (@ViewName) is null BEGIN SET @Query = 'Alter View ' … END ELSE BEGIN SET @Query = 'Alter View ' …"; "exec ('Add Schema Query')".
İlgili SQL nesneleriAifaDev.ExQueryBuilder, AifaDev.RepositoryItems
SQL SQLR-040 — Invalid column name: Cari.Transferler S2 · Observed=HAYIR · Guard=HAYIR
Hata sınıfıInvalid column name · SQL Error 207
GözlemlendiHAYIR · Potential=EVET · Silent=KISMEN (DAO Insert/Update boş Catch → False döner; InternalDb MsgBox gösterir)
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiCari.Transferler
TabloCari.Transferler
KolonAciklama
EkranFrmTransferEkle → FrmTransfer (ANA MENÜ FrmMainForm; GiseEkrani) — kasa/şube transferi kaydı
Kod dosyasıERPPRO/Class/Dao/Cari.Transferler.vb:172 (Insert), :222 (Update)
Tetikleme koşuluKod Cari.Transferler üzerinde 'Aciklama' kolonunu kullanıyor; kolon DB1 kataloğunda (kb_src/db/columns.json) yok.
Guard var mı?HAYIR
Olasılık / etki / güvenYüksek (her transfer kaydında) / S2 / 95
Var mı? V2 / KUYUMCU / BASEHAYIR (kolon) / BİLİNMİYOR / HAYIR (basedb/out/columns.json'da yok)
Kullanıcı belirtisi"Invalid column name 'Aciklama'." — kayıt/liste başarısız.
ÖneriKolonun ana şemada (ERPSCHEMA/DBUpdate) tanımlı olup olmadığı doğrulanmalı; BASE kolon setine eklenmesi ya da koddan çıkarılması kararı. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT COL_LENGTH('Cari.Transferler','Aciklama'); -- NULL ise kolon yok
Kanıtsql_frags (ERPPRO/Class/Dao/Cari.Transferler.vb:172 (Insert), :222 (Update)); columns.json Cari.Transferler kolon listesinde 'Aciklama' yok. DB2'de Cari.Transferler 32.531 satır — kolon orada olabilir (BİLİNMİYOR).
İlgili SQL nesneleriCari.Transferler
SQL SQLR-041 — Invalid column name: Siparis.Paket S3 · Observed=HAYIR · Guard=HAYIR
Hata sınıfıInvalid column name · SQL Error 207
GözlemlendiHAYIR · Potential=EVET · Silent=KISMEN (DAO Insert/Update boş Catch → False döner; InternalDb MsgBox gösterir)
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiSiparis.Paket
TabloSiparis.Paket
KolonIsPublic
EkranFrmPaketEkle (Siparis.PaketEx)
Kod dosyasıERPPRO/Class/Dao/Siparis.Paket.vb:93 (Insert), :126 (Update)
Tetikleme koşuluKod Siparis.Paket üzerinde 'IsPublic' kolonunu kullanıyor; kolon DB1 kataloğunda (kb_src/db/columns.json) yok.
Guard var mı?HAYIR
Olasılık / etki / güvenOrta / S3 / 95
Var mı? V2 / KUYUMCU / BASEHAYIR (kolon) / BİLİNMİYOR / HAYIR (basedb/out/columns.json'da yok)
Kullanıcı belirtisi"Invalid column name 'IsPublic'." — kayıt/liste başarısız.
ÖneriKolonun ana şemada (ERPSCHEMA/DBUpdate) tanımlı olup olmadığı doğrulanmalı; BASE kolon setine eklenmesi ya da koddan çıkarılması kararı. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT COL_LENGTH('Siparis.Paket','IsPublic'); -- NULL ise kolon yok
Kanıtsql_frags (ERPPRO/Class/Dao/Siparis.Paket.vb:93 (Insert), :126 (Update)); columns.json Siparis.Paket kolon listesinde 'IsPublic' yok.
İlgili SQL nesneleriSiparis.Paket
SQL SQLR-042 — Invalid column name: Siparis.TakimKartlari S3 · Observed=HAYIR · Guard=HAYIR
Hata sınıfıInvalid column name · SQL Error 207
GözlemlendiHAYIR · Potential=EVET · Silent=KISMEN (DAO Insert/Update boş Catch → False döner; InternalDb MsgBox gösterir)
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiSiparis.TakimKartlari
TabloSiparis.TakimKartlari
KolonGrup
EkranTakım kartı ekleme (FrmTakimKarti — çağıran bulunamadı)
Kod dosyasıERPPRO/Class/Dao/Siparis.TakimKarti.vb:112 (Insert), :163 (Update)
Tetikleme koşuluKod Siparis.TakimKartlari üzerinde 'Grup' kolonunu kullanıyor; kolon DB1 kataloğunda (kb_src/db/columns.json) yok.
Guard var mı?HAYIR
Olasılık / etki / güvenDüşük / S3 / 95
Var mı? V2 / KUYUMCU / BASEHAYIR (kolon) / BİLİNMİYOR / HAYIR (basedb/out/columns.json'da yok)
Kullanıcı belirtisi"Invalid column name 'Grup'." — kayıt/liste başarısız.
ÖneriKolonun ana şemada (ERPSCHEMA/DBUpdate) tanımlı olup olmadığı doğrulanmalı; BASE kolon setine eklenmesi ya da koddan çıkarılması kararı. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT COL_LENGTH('Siparis.TakimKartlari','Grup'); -- NULL ise kolon yok
Kanıtsql_frags (ERPPRO/Class/Dao/Siparis.TakimKarti.vb:112 (Insert), :163 (Update)); columns.json Siparis.TakimKartlari kolon listesinde 'Grup' yok. Sistem.ERPSCHEMA'da 'Siparis.TakimKartlari' için 1 satır var → ana şemada V2'de olmayan bir kolon (muhtemelen Grup) = 'Alter … Add' adayı.
İlgili SQL nesneleriSiparis.TakimKartlari
SQL SQLR-043 — Invalid column name: Sistem.CariIslemTipi S4 · Observed=HAYIR · Guard=HAYIR
Hata sınıfıInvalid column name · SQL Error 207
GözlemlendiHAYIR · Potential=EVET · Silent=KISMEN (DAO Insert/Update boş Catch → False döner; InternalDb MsgBox gösterir)
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiSistem.CariIslemTipi
TabloSistem.CariIslemTipi
KolonIsDeleted
EkranFiltreli ctor; TOList() ayrı ve doğru ('Select * from Sistem.CariIslemTipi')
Kod dosyasıERPPRO/Class/Dao/Sistem.CariIslemTipi.vb:11 (Sub New(Filter): Select * … Where IsDeleted='False')
Tetikleme koşuluKod Sistem.CariIslemTipi üzerinde 'IsDeleted' kolonunu kullanıyor; kolon DB1 kataloğunda (kb_src/db/columns.json) yok.
Guard var mı?HAYIR
Olasılık / etki / güvenDüşük / S4 / 95
Var mı? V2 / KUYUMCU / BASEHAYIR (kolon) / BİLİNMİYOR / HAYIR (basedb/out/columns.json'da yok)
Kullanıcı belirtisi"Invalid column name 'IsDeleted'." — kayıt/liste başarısız.
ÖneriKolonun ana şemada (ERPSCHEMA/DBUpdate) tanımlı olup olmadığı doğrulanmalı; BASE kolon setine eklenmesi ya da koddan çıkarılması kararı. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT COL_LENGTH('Sistem.CariIslemTipi','IsDeleted'); -- NULL ise kolon yok
Kanıtsql_frags (ERPPRO/Class/Dao/Sistem.CariIslemTipi.vb:11 (Sub New(Filter): Select * … Where IsDeleted='False')); columns.json Sistem.CariIslemTipi kolon listesinde 'IsDeleted' yok. Tablo kolonları: Id, IslemTipi, Kod.
İlgili SQL nesneleriSistem.CariIslemTipi
SQL SQLR-044 — Invalid column name: Cari.Provizyon S3 · Observed=HAYIR · Guard=HAYIR
Hata sınıfıInvalid column name · SQL Error 207
GözlemlendiHAYIR · Potential=EVET · Silent=KISMEN (DAO Insert/Update boş Catch → False döner; InternalDb MsgBox gösterir)
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiCari.Provizyon
TabloCari.Provizyon
KolonIsDeleted
EkranProvizyon listesi/silme (Ext)
Kod dosyasıERPPRO/Class/Ext/Cari.Provizyon.vb:57 (TOList), :151, :171 (Delete)
Tetikleme koşuluKod Cari.Provizyon üzerinde 'IsDeleted' kolonunu kullanıyor; kolon DB1 kataloğunda (kb_src/db/columns.json) yok.
Guard var mı?HAYIR
Olasılık / etki / güvenOrta / S3 / 95
Var mı? V2 / KUYUMCU / BASEHAYIR (kolon) / BİLİNMİYOR / HAYIR (basedb/out/columns.json'da yok)
Kullanıcı belirtisi"Invalid column name 'IsDeleted'." — kayıt/liste başarısız.
ÖneriKolonun ana şemada (ERPSCHEMA/DBUpdate) tanımlı olup olmadığı doğrulanmalı; BASE kolon setine eklenmesi ya da koddan çıkarılması kararı. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT COL_LENGTH('Cari.Provizyon','IsDeleted'); -- NULL ise kolon yok
Kanıtsql_frags (ERPPRO/Class/Ext/Cari.Provizyon.vb:57 (TOList), :151, :171 (Delete)); columns.json Cari.Provizyon kolon listesinde 'IsDeleted' yok. Tabloda IsDeleted yok (Status/StatusId var).
İlgili SQL nesneleriCari.Provizyon
SQL SQLR-045 — Invalid column name: Sistem.Users S4 · Observed=HAYIR · Guard=HAYIR
Hata sınıfıInvalid column name · SQL Error 207
GözlemlendiHAYIR · Potential=EVET · Silent=KISMEN (DAO Insert/Update boş Catch → False döner; InternalDb MsgBox gösterir)
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiSistem.Users
TabloSistem.Users
KolonSubeId
EkranFrmChangeAccount (çağıran bulunamadı — ölü ekran adayı)
Kod dosyasıERPPRO/Form/Genel/FrmChangeAccount.vb:9
Tetikleme koşuluKod Sistem.Users üzerinde 'SubeId' kolonunu kullanıyor; kolon DB1 kataloğunda (kb_src/db/columns.json) yok.
Guard var mı?HAYIR
Olasılık / etki / güvenDüşük / S4 / 95
Var mı? V2 / KUYUMCU / BASEHAYIR (kolon) / BİLİNMİYOR / HAYIR (basedb/out/columns.json'da yok)
Kullanıcı belirtisi"Invalid column name 'SubeId'." — kayıt/liste başarısız.
ÖneriKolonun ana şemada (ERPSCHEMA/DBUpdate) tanımlı olup olmadığı doğrulanmalı; BASE kolon setine eklenmesi ya da koddan çıkarılması kararı. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT COL_LENGTH('Sistem.Users','SubeId'); -- NULL ise kolon yok
Kanıtsql_frags (ERPPRO/Form/Genel/FrmChangeAccount.vb:9); columns.json Sistem.Users kolon listesinde 'SubeId' yok. Şube bilgisi Sistem.UserDetails.SubeId'de.
İlgili SQL nesneleriSistem.Users, Sistem.UserDetails
SQL SQLR-046 — Invalid column name: Cari.IslemDetaylari / Cari.Islemler (kurulum farkı) S2 · Observed=HAYIR · Guard=HAYIR
Hata sınıfıInvalid column name · SQL Error 207
GözlemlendiHAYIR · Potential=EVET · Silent=KISMEN
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiCari.IslemDetaylari / Cari.Islemler (kurulum farkı)
TabloCari.IslemDetaylari; Cari.Islemler
KolonETTN (+36 döviz mevzuatı kolonu); IsArbitiraj
EkranParakende.vb:13,57 (perakende ekranı: 'Select …,UsdKur,ETTN From Cari.Islemler I Left Join Cari.IslemDetaylari D'); ERPFatura.Save (MERGE 41 kolon); Cari.AcceptTransaction & Cari.UpdateTransaction (D.ETTN)
Kod dosyasıERPPRO/Controls/Islem Ekranı/Parakende/Parakende.vb:13,57; ERPPRO/Class/Dao/Islem/ERPFatura.vb:330; DijitalFatura/Common/ERPFatura.vb:451
Tetikleme koşuluDB2 (KUYUMCU) kurulumunda Cari.IslemDetaylari 12 kolon (ETTN yok), DB1'de 49 kolon; Cari.Islemler.IsArbitiraj yalnız DB1'de. Aynı exe DB2'ye bağlanınca bu kolonları kullanan sorgular 207 verir; DB1 tetikleyicileri (D.ETTN) DB2'ye taşınırsa tetikleyici derlenmez/çalışmaz.
Guard var mı?HAYIR
Olasılık / etki / güvenDB2'de yüksek (perakende ekranı açılırsa) / S2 / 85
Var mı? V2 / KUYUMCU / BASEEVET / HAYIR (kitap/b8_kuyumcu §: ETTN kuyumcuda yok; 12 kolon) / EVET (V2 kolon seti)
Kullanıcı belirtisiDB2'de perakende/işlem listesinde "Invalid column name 'ETTN'"; e-belge akışı kuyumcuda tanımsız.
ÖneriKurulum profiline göre kolon seti (BASE + DÖVİZ eklentisi) ayrımı; kodda ETTN/IsArbitiraj kullanan sorguların profil bayrağıyla korunması. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT COL_LENGTH('Cari.IslemDetaylari','ETTN') AS ETTN, COL_LENGTH('Cari.Islemler','IsArbitiraj') AS IsArbitiraj;
Kanıtkitap/b8_kuyumcu.md 'Cari.IslemDetaylari: döviz 49 / kuyumcu 12 kolon; ETTN kuyumcuda yoktur; IsArbitiraj yalnız döviz'; Parakende.vb:13 sorgu metni; AcceptTransaction cursor listesi 'D.ETTN'.
İlgili SQL nesneleriCari.IslemDetaylari, Cari.Islemler
SQL SQLR-047 — Invalid column name: Sistem.ERPSCHEMA 'Alter … Add' satırları S3 · Observed=HAYIR · Guard=KISMEN (DBUpdate çalıştırılırsa kolonlar eklenir)
Hata sınıfıInvalid column name · SQL Error 207 (kurulum bazlı)
GözlemlendiHAYIR · Potential=EVET · Silent=HAYIR
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiSistem.ERPSCHEMA 'Alter … Add' satırları
TabloCari.Hesaplar (1), Cari.Islemler (1), Cari.IslemListesi (6), Cari.HesapListesi (1), Cari.GetHesapListesi (1), Siparis.TakimKartlari (1), Muhasebe.BTRANSDoviz (1), Muhasebe.MerkezBankasiRaporu (5), Query.Hesaplar (3), Pozisyon.GetAllPozisyon (1), Siparis.GetParcaKartlari (1), Siparis.GetTakimDetay (1), Cari.GetFiyatListesi (1)
Kolon(kolon adları dbsql.json'a alınmamış — ColumnName kolonu boş)
EkranDBUpdate ekranı (Class/SCHEMA/DBUpdate.vb) bu satırları 'Alter Table … Add' olarak uygular
Kod dosyasıERPPRO/Class/SCHEMA/DBUpdate.vb:13-22; dbclean/dbsql.json src=Sistem.ERPSCHEMA (238 satır, 30 nesne)
Tetikleme koşuluERPSCHEMA = ftp schema.csv (ana şema, 2022-12-16) − sys.columns farkı. Nesnesi V2'de VAR olan 13 nesnenin toplam 24 satırı 'Alter … Add' kolonu demektir: ana şemada olup DB1'de olmayan kolonlar. Bu kolonları kullanan kod (ör. Siparis.TakimKartlari.Grup) DB1'de 207 verir; DBUpdate çalıştırılmamış kurulumlarda aynı risk.
Guard var mı?KISMEN (DBUpdate çalıştırılırsa kolonlar eklenir)
Olasılık / etki / güvenOrta / S3 / 60
Var mı? V2 / KUYUMCU / BASEHAYIR (kolonlar) / BİLİNMİYOR / HAYIR
Kullanıcı belirtisiDBUpdate uygulanmamış kurulumda ilgili ekranlarda 'Invalid column name …'.
ÖneriERPSCHEMA ColumnName/DataType içeriği okunup (bu turda alınmadı — GAP) BASE kolon seti ile eşleştirilmeli. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT TableName, ColumnName, DataType, Method FROM Sistem.ERPSCHEMA WHERE OBJECT_ID(TableName) IS NOT NULL ORDER BY TableName;
Kanıtdbsql.json Sistem.ERPSCHEMA satır sayıları (Cari.Hesaplar 1, Cari.Islemler 1, Cari.IslemListesi 6, Siparis.TakimKartlari 1 …); DBUpdate.vb Method computed: object_id(TableName) null→'Create' else 'Alter'.
İlgili SQL nesneleriSistem.ERPSCHEMA, Cari.Hesaplar, Cari.Islemler, Cari.IslemListesi, Cari.HesapListesi, Cari.GetHesapListesi, Siparis.TakimKartlari, Muhasebe.BTRANSDoviz, Muhasebe.MerkezBankasiRaporu, Query.Hesaplar, Pozisyon.GetAllPozisyon, Siparis.GetParcaKartlari, Siparis.GetTakimDetay, Cari.GetFiyatListesi
SQL SQLR-048 — Invalid column name: (kod) ERPFatura.Save → Cari.IslemDetaylari S2 · Observed=HAYIR · Guard=HAYIR
Hata sınıfıInvalid column name · SQL Error 102 (Incorrect syntax near 'MERGE')
GözlemlendiHAYIR · Potential=EVET · Silent=EVET (boş Catch, RecId=0 → False)
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesi(kod) ERPFatura.Save → Cari.IslemDetaylari
TabloCari.IslemDetaylari
EkranOldFis/Printing.Fatura.vb:182 (detay.Save), FrmSeriFaturaBas.vb:98, FrmDovFaturaEkranı.vb:203 — fatura/işlem detayı kaydı
Kod dosyasıERPPRO/Class/Dao/Islem/ERPFatura.vb:330
Tetikleme koşuluSQL metni "Insert Into Cari.IslemDetaylari(MERGE Cari.IslemDetaylari WITH (SERIALIZABLE) AS T USING (VALUES(…)) … output inserted.IslemId" — 'Insert Into …(' öneki artık; MERGE parantez içinde → derlenmez. Catch boş → Save() sessizce False.
Guard var mı?HAYIR
Olasılık / etki / güvenYüksek (bu yol her çağrıldığında) / S2 / 90
Var mı? V2 / KUYUMCU / BASEEVET (tablo) / EVET (12 kolonlu; MERGE kolonlarının çoğu yok → ek 207) / EVET
Kullanıcı belirtisiFatura/belge detayı kaydedilmez; kullanıcıya hata gösterilmez (ekran 'kaydedilemedi' ya da hiçbir şey).
ÖneriBu DAO'nun canlı yol olup olmadığı (Cari.IFatura/SQLBase MERGE üretimi ana yol) netleştirilip artık önek kaldırılmalı; boş Catch loglanmalı. (Uygulanmadı)
KanıtQA-SQL-QUERY-MAP.md satır 354; ERPFatura.vb:330 metni; :486 'Catch ex As Exception' boş.
İlgili SQL nesneleriCari.IslemDetaylari
SQL SQLR-049 — Divide by zero: FN.Bol S2 · Observed=HAYIR · Guard=EVET (ama sessiz 0)
Hata sınıfıDivide by zero · SQL Error 8134 (sessizleştirilmiş → 0)
GözlemlendiHAYIR · Potential=EVET · Silent=EVET
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiFN.Bol
Ekran224 çağrı / 103 modül: Cari.AcceptTransaction (işçilik/altına çevir), Stok.GetMadenMaliyeti, Stok.GetOrtMilyem, FN.GetPariteAVG, Pozisyon.*, Bilanco.*, Report(s).*, Cari.GetNetBakiye, Takoz.*; kod: DataStokList.vb:93, BilancoSimpleView.vb:166, Siparis.ParcaEx.vb:85
Kod dosyasımodules.json (fn.bol regex: 224 eşleşme); ERPPRO/Controls/Grid/DataStokList.vb:93; ERPPRO/Designer/ReportManager/BilancoSimpleView.vb:166
Tetikleme koşuluFN.Bol(@a,@b): 'IF (@Number1<>0 and @Number2<>0) SET @Number=@Number1/@Number2' — payda 0 ya da NULL ise 0 döner; hata yok. Ortalama fiyat, kur çevrimi, milyem, işçilik hesapları paydası 0 (kur girilmemiş, miktar 0) olduğunda 0 üretir ve bakiye/maliyet satırına yazılır.
Guard var mı?EVET (ama sessiz 0)
Olasılık / etki / güvenYüksek (kur/miktar 0 durumları sık) / S2 / 95
Var mı? V2 / KUYUMCU / BASEEVET / BİLİNMİYOR (muhtemelen EVET) / EVET (BASE-CORE)
Kullanıcı belirtisiHata yok; bakiye/işçilik/ortalama maliyet 0 ya da eksik görünür; raporlarda 0 fiyat.
ÖneriFN.Bol'un 0 yerine NULL döndürmesi ya da çağıran yerlerde NULLIF ile açık koruma; 0 dönen durumların loglanması. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT COUNT(*) FROM Cari.Islemler WHERE IsDeleted=0 AND (ISNULL(HasKur,0)=0 OR ISNULL(IscilikBirimKur,0)=0) AND IslemKodu=0; -- takoz işlemlerinde kur 0
Kanıtmodules.json FN.Bol tanımı; AcceptTransaction: '@Iscilik = Fn.Bol((@HasIscilik * @HasIscBirimKur),@IscKur) + …', '@HasBakiye += Fn.Bol(((@Miktar*@AgMilyem)*@GumKur),@HasKur)'; FN.Bol çağıran 103 modül listesi (div.py).
İlgili SQL nesneleriFN.Bol, Cari.Islemler
SQL SQLR-050 — Divide by zero: Bilanco.GetIKar; Bilanco.GetIBilanco S3 · Observed=HAYIR · Guard=HAYIR
Hata sınıfıDivide by zero · SQL Error 8134
GözlemlendiHAYIR · Potential=EVET · Silent=KISMEN (NULL durumunda)
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiBilanco.GetIKar; Bilanco.GetIBilanco
TabloCari.BakiyeIslem; Stok.StokHaraketleri
KolonKur1.Alis (Sistem.GetKurListesi BirimId=1 = HAS kuru)
EkranKoddan/raporlardan çağıran bulunamadı (deps: yok)
Tetikleme koşulu9 ayrı 'Sum(… )/Kur1.Alis' ifadesi; Kur1 = Sistem.GetKurListesi(@Tarih) BirimId=1 satırı. HAS kuru o gün 0 girilmişse 8134; kur hiç yoksa (fallback yoksa) NULL → sonuç NULL (sessiz).
Guard var mı?HAYIR
Olasılık / etki / güvenDüşük (çağıran yok; HAS kuru 0 olağan dışı) / S3 / 85
Var mı? V2 / KUYUMCU / BASEEVET / BİLİNMİYOR / HAYIR (UNKNOWN)
Kullanıcı belirtisiBilanço kâr raporunda 'Divide by zero error encountered.'
ÖneriNULLIF(Kur1.Alis,0) ve kur yokluğu için açık uyarı. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT Tarih FROM Sistem.Kurlar WHERE BirimId=1 AND ISNULL(Alis,0)=0;
Kanıtdiv.py çıktısı: Bilanco.GetIKar 5×, Bilanco.GetIBilanco 4× '/Kur1.Alis' NULLIF yok.
İlgili SQL nesneleriBilanco.GetIKar, Bilanco.GetIBilanco, Cari.BakiyeIslem, Stok.StokHaraketleri, Sistem.Kurlar
SQL SQLR-051 — Divide by zero: MüşteriŞemasıA.IslemFiyatlar tetikleyicisi (DB2 Cari.Islemler 5. tetikleyici) S2 · Observed=HAYIR · Guard=HAYIR
Hata sınıfıDivide by zero · SQL Error 8134
GözlemlendiHAYIR · Potential=EVET · Silent=KISMEN
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiMüşteriŞemasıA.IslemFiyatlar tetikleyicisi (DB2 Cari.Islemler 5. tetikleyici)
TabloCari.Islemler → MüşteriŞemasıA.IslemFiyatlar
KolonUsdKur, HasKur
EkranDB2'de her Cari.Islemler INSERT/UPDATE
Tetikleme koşulu'I.Maliyet/I.UsdKur' ve 'I.Maliyet/I.HasKur' korumasız; kur 0 gelirse tetikleyici hata verir ve kullanıcının işlemi geri alınır. Ayrıca 'Select @x=… From Inserted' tek satır varsayımı (çok satırlı INSERT'te veri kaybı — sessiz) ve sabit kimlikler (Kodu='995', BirimId IN (84,85,86)).
Guard var mı?HAYIR
Olasılık / etki / güvenOrta (DB2) / S2 / 70
Var mı? V2 / KUYUMCU / BASEHAYIR / EVET (3.738 krk; TD-41) / HAYIR (müşteri özel)
Kullanıcı belirtisiDB2'de işlem kaydında 'Divide by zero error encountered' → işlem kaydedilemez.
ÖneriMüşteri özel tetikleyicinin eklenti noktasına alınması; NULLIF; set-tabanlı yazım. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT COUNT(*) FROM Cari.Islemler WHERE IsDeleted=0 AND (ISNULL(UsdKur,0)=0 OR ISNULL(HasKur,0)=0) AND Tarih>=DATEADD(month,-3,GETDATE());
KanıtTD-41; kitap/b8_kuyumcu.md 'Sıfıra bölme riski: I.Maliyet/I.UsdKur, I.Maliyet/I.HasKur korumasız'. Tetikleyici metni bu turda elde yok (DB2 modülleri GAP-BASE-DB2-MODULES).
İlgili SQL nesneleriCari.Islemler
Wiki bağlantılarıTD-41
SQL SQLR-052 — Divide by zero: POS.FisKaydet; POS.BSMVHesapla; POS.EvrakKapisiDurum S4 · Observed=HAYIR · Guard=EVET
Hata sınıfıDivide by zero · SQL Error 8134
GözlemlendiHAYIR · Potential=HAYIR · Silent=HAYIR
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiPOS.FisKaydet; POS.BSMVHesapla; POS.EvrakKapisiDurum
Tablo#S (geçici), POS.Sabitler
KolonSistemKur, MK.Kur, (1+@Oran), K.CariHesap
EkranPOS (ERPPOSV2 vezne) — DB1 dev kurulum, ürün özelliği değil (GENERATED_PROPOSAL)
Tetikleme koşuluFisKaydet: 'ABS(Fiyat-SistemKur)/SistemKur' WHERE 'ISNULL(SistemKur,0)>0' ile korunuyor; '/ MK.Kur' CASE WHEN ISNULL(MK.Kur,0)=0 ile korunuyor; 'Tutar / NULLIF(Miktar,0)'. BSMVHesapla '(1+@Oran)' — @Oran=-1 teorik. EvrakKapisiDurum CASE WHEN K.CariHesap=0 korumalı.
Guard var mı?EVET
Olasılık / etki / güvenÇok düşük / S4 / 90
Var mı? V2 / KUYUMCU / BASEEVET / HAYIR / HAYIR (POS ayrı paket)
Kullanıcı belirtisi
ÖneriKoruma yeterli; kayıt için. (Uygulanmadı)
Kanıtdiv.py: POS.FisKaydet NULLIF/CASE; POS.EvrakKapisiDurum CASE.
İlgili SQL nesneleriPOS.FisKaydet, POS.BSMVHesapla, POS.EvrakKapisiDurum, POS.Sabitler
SQL SQLR-053 — Divide by zero: Hesaplanan kolonlar: Cari.Islemler.USDTutar; Stok.Takoz.ScalaMiktar; Cari.ProformaDetay/FaturaDetay Kdv,Otv,Toplam (/100) S4 · Observed=HAYIR · Guard=EVET
Hata sınıfıDivide by zero · SQL Error 8134 (korumalı)
GözlemlendiHAYIR · Potential=HAYIR · Silent=HAYIR
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiHesaplanan kolonlar: Cari.Islemler.USDTutar; Stok.Takoz.ScalaMiktar; Cari.ProformaDetay/FaturaDetay Kdv,Otv,Toplam (/100)
TabloCari.Islemler; Stok.Takoz; Cari.FaturaDetay; Cari.ProformaDetay
KolonUsdKur; SuMiktar
EkranTablo düzeyinde
Kod dosyasıdbclean/computed.json
Tetikleme koşuluUSDTutar: 'case when isnull(UsdKur,0)<>0 … then Tutar*BirimKur/isnull(UsdKur,USDkur)' korumalı; ScalaMiktar 'isnull(SuMiktar,0)<>0' korumalı; /100 sabit.
Guard var mı?EVET
Olasılık / etki / güvenÇok düşük / S4 / 95
Var mı? V2 / KUYUMCU / BASEEVET / BİLİNMİYOR / EVET
Kullanıcı belirtisi
ÖneriKayıt için; koruma var. (Uygulanmadı)
Kanıtcomputed.json satırları.
İlgili SQL nesneleriCari.Islemler, Stok.Takoz, Cari.ProformaDetay, Cari.FaturaDetay
SQL SQLR-054 — Conversion failed: (kod) Cari.Odeme.vb:136 → Cari.Islemler S3 · Observed=HAYIR · Guard=HAYIR
Hata sınıfıConversion failed · SQL Error 245
GözlemlendiHAYIR · Potential=EVET · Silent=HAYIR
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesi(kod) Cari.Odeme.vb:136 → Cari.Islemler
TabloCari.Islemler
KolonTag (nvarchar(max))
EkranÖdeme ekranı (FrmOdemeListesi/FrmOdemeYap) — 'Convert(int,Tag) = <Id>'
Kod dosyasıERPPRO/Class/Dao/Cari.Odeme.vb:136
Tetikleme koşulu'Where … StokId=… And Convert(int,Tag)=…' — Tag serbest metin (nvarchar(MAX)); filtre sırası garanti değil, sayısal olmayan Tag satırı taranırsa 245 'Conversion failed when converting the nvarchar value … to data type int'.
Guard var mı?HAYIR
Olasılık / etki / güvenOrta (Tag başka amaçla dolduysa) / S3 / 80
Var mı? V2 / KUYUMCU / BASEEVET (kolon) / BİLİNMİYOR / EVET
Kullanıcı belirtisiÖdeme listesinde 'Conversion failed when converting the nvarchar value 'xyz' to data type int.'
ÖneriTRY_CONVERT ya da Tag yerine tipli bir referans kolonu. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT COUNT(*) FROM Cari.Islemler WHERE Tag IS NOT NULL AND TRY_CONVERT(int,Tag) IS NULL;
KanıtCari.Odeme.vb:136 'select Sum(Miktar) … And Convert(int,Tag) =''" & Id & "''' (Cari.Odemeler ekranı zaten 208 ile düşer).
İlgili SQL nesneleriCari.Islemler
SQL SQLR-055 — Conversion failed: Query.GENELSTOKLAR (VIEW); AifaDev.ExQueryBuilder üretimi Query.* view'ları S4 · Observed=HAYIR · Guard=KISMEN (Date için Year()>1900 kontrolü var ama Convert önce çalışır)
Hata sınıfıConversion failed · SQL Error 245 / 8114
GözlemlendiHAYIR · Potential=EVET · Silent=HAYIR
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiQuery.GENELSTOKLAR (VIEW); AifaDev.ExQueryBuilder üretimi Query.* view'ları
TabloAifaDev.RepositoryData
KolonValue (nvarchar) → Convert(int/decimal/date,…)
EkranDynamicForms / Query.* view'larını kullanan raporlar
Tetikleme koşuluPivot edilen serbest metin Value kolonu 'Convert(int, F.Kimden)', 'Convert(Decimal(18,5), F.[x])', 'Convert(Date, F.[x],104)' ile tiplendiriliyor; kullanıcı sayısal olmayan değer girdiyse view okunurken 245/8114/241.
Guard var mı?KISMEN (Date için Year()>1900 kontrolü var ama Convert önce çalışır)
Olasılık / etki / güvenOrta / S4 / 75
Var mı? V2 / KUYUMCU / BASEEVET / BİLİNMİYOR / HAYIR (Query.* UNKNOWN)
Kullanıcı belirtisiDinamik form listesi/raporunda 'Conversion failed …' ya da 'Error converting data type nvarchar to numeric'.
ÖneriTRY_CONVERT; giriş doğrulaması. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT D.* FROM AifaDev.RepositoryData D JOIN AifaDev.RepositoryItems I ON I.Id=D.ItemId WHERE I.DataType IN (2,4,5) AND TRY_CONVERT(decimal(18,5),D.Value) IS NULL AND D.Value IS NOT NULL;
Kanıtmodules.json Query.GENELSTOKLAR 'Convert(int, F.Kimden)'; ExQueryBuilder DataType→Convert eşlemesi.
İlgili SQL nesneleriQuery.GENELSTOKLAR, AifaDev.ExQueryBuilder, AifaDev.RepositoryData, AifaDev.RepositoryItems
SQL SQLR-056 — Conversion failed: (kod) tırnaklı birleştirme ile tipsiz literal karşılaştırması S3 · Observed=HAYIR · Guard=HAYIR
Hata sınıfıConversion failed · SQL Error 245 / 8114 / 241
GözlemlendiHAYIR · Potential=EVET · Silent=KISMEN (''→0 eşleşmesi sessiz)
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesi(kod) tırnaklı birleştirme ile tipsiz literal karşılaştırması
TabloCari.Islemler, Cari.Hesaplar, Stok.*, Siparis.* …
KolonId, HesapId, StokId, Tarih, Miktar…
Ekran553 SQL cümlesi: "Where Id='" & x & "'" kalıbı (SQLBase.vb:138-161 jenerik; Dao/*.vb)
Kod dosyasıERPPRO/Class/Dao/_SQLBase/SQLBase.vb:138,140,161; dyn_out.json concat_quoted (553)
Tetikleme koşuluint/decimal/date kolonlar tırnaklı string literal ile karşılaştırılıyor → örtük dönüşüm. Değişken boş ('') → int için 0 (sessiz yanlış eşleşme), decimal/date için 8114/241; ondalık ayıracı virgül olan kültürde (1,5) 8114 'Error converting data type varchar to numeric'; Nothing → 'Id=' syntax error 102.
Guard var mı?HAYIR
Olasılık / etki / güvenOrta / S3 / 85
Var mı? V2 / KUYUMCU / BASEEVET / EVET / —
Kullanıcı belirtisi'Error converting data type varchar to numeric' / 'Conversion failed when converting date and/or time' / 'Incorrect syntax near ='.
ÖneriParametreli sorgu (SqlParameter) — TD-09/TD-37 ile birlikte. (Uygulanmadı)
Kanıtdyn.py istatistiği: 1294 cümle; 914 '&' ile birleştirme; 553 tırnaklı ('" & x & "'); 252 parametreli; 133 sabit. TD-37 (ondalık ToString).
İlgili SQL nesneleriCari.Islemler, Cari.Hesaplar
Wiki bağlantılarıTD-37 · TD-09
SQL SQLR-057 — Arithmetic overflow: Cari.AcceptTransaction; Cari.History (Fiyat decimal(18,5) ← Islemler.Fiyat decimal(18,8)); Stok.StokHaraketleri.NetBakiye decimal(37,10) S4 · Observed=HAYIR · Guard=HAYIR
Hata sınıfıArithmetic overflow · SQL Error 8115
GözlemlendiHAYIR · Potential=EVET · Silent=EVET (yuvarlama)
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiCari.AcceptTransaction; Cari.History (Fiyat decimal(18,5) ← Islemler.Fiyat decimal(18,8)); Stok.StokHaraketleri.NetBakiye decimal(37,10)
TabloCari.Islemler; Cari.History; Cari.BakiyeIslem; Stok.StokHaraketleri
KolonTutar(18,5)*Kur(18,5)→Convert(Decimal(18,2)); Fiyat
Ekranİşlem kaydı tetikleyicisi
Tetikleme koşuludecimal(18,5)*decimal(18,5) çarpımı (37,10) → decimal(18,2)'ye dönüşümde |değer| ≥ 10^16 olursa 8115. Pratikte Tutar×Kur bu eşiğe ulaşmaz; Islemler.Fiyat(18,8)→History.Fiyat(18,5) yalnız yuvarlama (sessiz hassasiyet kaybı). Cari.IslemINS çıplak decimal parametreleri (18,0) → yuvarlama (TD-31, çağıran yok).
Guard var mı?HAYIR
Olasılık / etki / güvenÇok düşük (overflow) / Kesin (History.Fiyat yuvarlama) / S4 / 70
Var mı? V2 / KUYUMCU / BASEEVET / BİLİNMİYOR / EVET
Kullanıcı belirtisiOverflow: 'Arithmetic overflow error converting numeric to data type numeric' (nadir). Yuvarlama: History'de Fiyat 5 hane.
ÖneriHistory ve Islemler kolon tiplerinin eşitlenmesi; ara hesaplarda decimal(28,10). (Uygulanmadı)
Validation SQL (salt okunur)
SELECT MAX(ABS(Tutar*ISNULL(HasKur,0))) FROM Cari.Islemler;
Kanıtcolumns.json: Islemler.Fiyat decimal(18,8) vs History.Fiyat decimal(18,5); AcceptTransaction 'Convert(Decimal(18,2), @StokIsc * @StokIscKur)'.
İlgili SQL nesneleriCari.AcceptTransaction, Cari.History, Stok.StokHaraketleri, Cari.Islemler, Cari.BakiyeIslem
SQL SQLR-058 — Conversion failed: (kod) TCMB.Currency.Save → MERGE Sistem.TCMBDovizKurlari S3 · Observed=HAYIR · Guard=HAYIR
Hata sınıfıConversion failed · SQL Error 4406 (View or function is not updatable)
GözlemlendiHAYIR · Potential=EVET · Silent=EVET
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesi(kod) TCMB.Currency.Save → MERGE Sistem.TCMBDovizKurlari
TabloSistem.TCMBDovizKurlari (DB1'de VIEW: Select … from Sistem.GetKurListesi(getdate()))
EkranProgram.vb:225 açılışta arka plan TCMB kur çekme; Cari.Islem.vb:552 GetUSDCurrency
Kod dosyasıERPPRO/Class/Module/TCMB.vb:67,127; ERPPRO/Class/Module/Program.vb:225
Tetikleme koşuluCheckTable() OBJECT_ID null değilse tablo oluşturmaz; DB1'de ad bir VIEW (tablo NonUsed_TCMBDovizKurlari'na taşınmış). MERGE bir TVF-tabanlı view'a yazamaz → 4406/4405; boş Catch → sessiz. GetUSDCurrency(tarih) view'dan yalnız bugünün kurunu görür → geçmiş tarih için Nothing → Cari.Islem.vb:552 '.Alis' NullReference (uygulama tarafı).
Guard var mı?HAYIR
Olasılık / etki / güvenYüksek (DB1'de her açılışta) / S3 / 85
Var mı? V2 / KUYUMCU / BASEEVET (view) / tablo: Sistem.NonUsed_TCMBDovizKurlari (25.212 satır) / EVET (tablo, 34.644 satır) / EVET (view BASE-CORE); NonUsed_ V2_ONLY
Kullanıcı belirtisiTCMB kur arşivi güncellenmez (sessiz); döviz seri fatura ekranında geçmiş tarih kur boş ya da NullReference.
ÖneriTCMBDovizKurlari'nın tablo mu view mi olacağı kurulum genelinde tek karar; CheckTable'ın view'ı tablo sanmaması. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT type_desc FROM sys.objects WHERE object_id=OBJECT_ID('Sistem.TCMBDovizKurlari'); SELECT COUNT(*) FROM Sistem.NonUsed_TCMBDovizKurlari;
Kanıtmodules.json 'Create View Sistem.TCMBDovizKurlari as Select Tarih,Birim as Kodu,Alis,Satis from Sistem.GetKurListesi(getdate())'; TCMB.vb:67 CheckTable; :127 MERGE; phase6 KUY_ONLY 'Sistem.TCMBDovizKurlari' tablo.
İlgili SQL nesneleriSistem.TCMBDovizKurlari, Sistem.NonUsed_TCMBDovizKurlari, Sistem.GetKurListesi
SQL SQLR-059 — String or binary data would be truncated: (kod DAO Insert/Update) kısa nvarchar kolonlar S3 · Observed=HAYIR · Guard=HAYIR (UI MaxLength bilinmiyor)
Hata sınıfıString or binary data would be truncated · SQL Error 8152 / 2628
GözlemlendiHAYIR · Potential=EVET · Silent=KISMEN (DAO boş Catch → False)
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesi(kod DAO Insert/Update) kısa nvarchar kolonlar
TabloSistem.Kasalar.Kodu nvarchar(10); Sistem.Sirketler.Kodu(10)/Aciklama(50); Sistem.Birimler.Kodu(15); Sistem.Mizan.Kodu(15); Sistem.TakozScala.Kodu nvarchar(1); Cari.Faturalar.FaturaSeri(10); Personel.Personeller.KimlikNo(10); Dov.Fatura.Aciklama(50); Finans.BankaAltinOperasyonlari.Aciklama(50); Siparis.Paket/Receteler/ParcaKartlari/Stok.Model/Stok.Emtia.Aciklama(50); Cari.Hesaplar Email/Telefon1/Telefon2/Gsm/VergiDairesi(50)
Kolon(yukarıda)
EkranKasa/Şirket/Birim/Mizan tanım ekranları; Döviz fatura; Banka altın operasyonu; Sipariş model/reçete/parça; Cari hesap kartı (Email 50)
Kod dosyasıERPPRO/Class/Dao/Sistem.Kasa.vb:115; Sistem.Sirket.vb:100; Sistem.Birim.vb:155; Sistem.Mizan.vb:118; Sistem.TakozScala.vb:150; Dov.Fatura.vb:200; Finans.BankaAltinOperasyonu.vb:158; Stok.Model.vb:325; Cari.Hesap.vb:329
Tetikleme koşuluAddWithValue ile UI'dan gelen metin kolon uzunluğunu aşınca 8152 (SQL2019+ 2628, kolon adı verir). Kod tarafında MaxLength kontrolü DAO'da yok (IsValidate yalnız 4 tipte — TD-18). 300 kısa (≤50) kolon INSERT listelerinde; 'Aciklama' adlı 50 karakterlik 7 kolon en riskli.
Guard var mı?HAYIR (UI MaxLength bilinmiyor)
Olasılık / etki / güvenOrta / S3 / 75
Var mı? V2 / KUYUMCU / BASEEVET / BİLİNMİYOR / EVET
Kullanıcı belirtisi'String or binary data would be truncated.' ya da kayıt sessizce yapılmaz.
ÖneriUI MaxLength = kolon uzunluğu eşlemesi; Aciklama kolonlarının uzunluk standardı (TD standardizasyon). (Uygulanmadı)
Validation SQL (salt okunur)
SELECT s.name,t.name,c.name,c.max_length/2 AS chars FROM sys.columns c JOIN sys.tables t ON t.object_id=c.object_id JOIN sys.schemas s ON s.schema_id=t.schema_id WHERE c.system_type_id=231 AND c.max_length BETWEEN 1 AND 100 AND c.name IN ('Aciklama','Kodu','Email') ORDER BY chars;
KanıtTruncation taraması (300 kolon ≤50 karakter, kod INSERT listelerinde); columns.json uz değerleri (nvarchar byte/2).
İlgili SQL nesneleriSistem.Kasalar, Sistem.Sirketler, Sistem.Birimler, Sistem.Mizan, Sistem.TakozScala, Cari.Faturalar, Personel.Personeller, Dov.Fatura, Finans.BankaAltinOperasyonlari, Siparis.Paket, Stok.Model, Stok.Emtia, Cari.Hesaplar
SQL SQLR-060 — String or binary data would be truncated: Cari.AcceptTransaction — @RefNo Nvarchar(36), @RaporNo Nvarchar(50); Sistem.CreateKasa; Cari.FaturaYaz (Kodu = FaturaSeri+FaturaNo) S4 · Observed=HAYIR · Guard=—
Hata sınıfıString or binary data would be truncated · SQL Error 8152 / 2628
GözlemlendiHAYIR · Potential=HAYIR · Silent=EVET (değişken kesmesi)
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiCari.AcceptTransaction — @RefNo Nvarchar(36), @RaporNo Nvarchar(50); Sistem.CreateKasa; Cari.FaturaYaz (Kodu = FaturaSeri+FaturaNo)
TabloCari.Islemler; Sistem.Kasalar; Cari.History
KolonRefNo(36) OwnerRefNo(36) RaporNo(MAX) Kodu(50)
Ekranİşlem kaydı tetikleyicisi; şube oluşturma; fatura→işlem
Tetikleme koşuluRefNo nvarchar(36): UPPER(NEWID()) 36 karakter → tam sığar (OK). AcceptTransaction '@RaporNo Nvarchar(50)' ← Islemler.RaporNo nvarchar(MAX): 50'den uzun rapor no değişkene atanırken SESSİZCE kesilir (değişken ataması hata vermez) — @RaporNo kullanılmadığı için etkisiz. CreateKasa: Kasalar.Kodu(10)='ANAKASA' OK; Aciklama(150) = Subeler.Kodu(30)+' SUBESI ANA KASASI' OK. FaturaYaz Kodu(50)= FaturaSeri(10)+FaturaNo OK.
Guard var mı?
Olasılık / etki / güvenÇok düşük / S4 / 90
Var mı? V2 / KUYUMCU / BASEEVET / BİLİNMİYOR / EVET
Kullanıcı belirtisi
ÖneriKayıt için; risk bulunmadı. (Uygulanmadı)
Kanıtcolumns.json uzunlukları; AcceptTransaction Declare listesi; CreateKasa metni.
İlgili SQL nesneleriCari.AcceptTransaction, Sistem.CreateKasa, Cari.FaturaYaz, Cari.Islemler, Sistem.Kasalar, Cari.History
SQL SQLR-061 — Cannot insert NULL: Cari.Islemler.FiyatTipi (tfiyattipi NOT NULL, default yok); Cari.History.FiyatTipi; Cari.BakiyeIslem.HesapType (NOT NULL) S3 · Observed=HAYIR · Guard=KISMEN
Hata sınıfıCannot insert NULL · SQL Error 515
GözlemlendiHAYIR · Potential=EVET · Silent=HAYIR
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiCari.Islemler.FiyatTipi (tfiyattipi NOT NULL, default yok); Cari.History.FiyatTipi; Cari.BakiyeIslem.HesapType (NOT NULL)
TabloCari.Islemler; Cari.History; Cari.BakiyeIslem
KolonFiyatTipi; HesapType
EkranCari.Islem.vb:568 Insert (FiyatTipi parametrede var); Sistem.FromERP; POS.FisKaydet; MT4/FX sync; sp_DevirIslemiYap
Kod dosyasıERPPRO/Class/Dao/Islem/Cari.Islem.vb:568
Tetikleme koşuluCari.Islemler'de NOT NULL & default'suz tek kolon FiyatTipi. Kod INSERT'i @FiyatTipi gönderiyor; ancak nesne özelliği Nothing ise AddWithValue null → 515. Modül INSERT'leri (FromERP, FaturaYaz, RSAktar, FisKaydet) FiyatTipi'ni açıkça veriyor. BakiyeIslem.HesapType NOT NULL: AcceptTransaction @HesapType ← Inserted.HesapType (nullable int) → NULL gelirse 515 ve işlem geri alınır.
Guard var mı?KISMEN
Olasılık / etki / güvenDüşük-Orta / S3 / 75
Var mı? V2 / KUYUMCU / BASEEVET / BİLİNMİYOR / EVET
Kullanıcı belirtisi"Cannot insert the value NULL into column 'FiyatTipi'/'HesapType'" — işlem kaydedilemez.
ÖneriKolonlara DEFAULT; DAO'da null koruması. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT COUNT(*) FROM Cari.Islemler WHERE HesapType IS NULL;
Kanıtcolumns.json Islemler NOT NULL no-default: [FiyatTipi tfiyattipi]; BakiyeIslem.HesapType null=False; frags.py NOT NULL taraması (kod INSERT'lerinde yalnız ERPFatura MERGE (IslemId) ve Sistem.Clients (dinamik kolon listesi) eksik).
İlgili SQL nesneleriCari.Islemler, Cari.History, Cari.BakiyeIslem, Sistem.Clients
SQL SQLR-062 — Cannot insert NULL: (kod) Sistem.Clients dinamik INSERT S4 · Observed=HAYIR · Guard=HAYIR
Hata sınıfıCannot insert NULL · SQL Error 515
GözlemlendiHAYIR · Potential=EVET · Silent=KISMEN
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesi(kod) Sistem.Clients dinamik INSERT
TabloSistem.Clients
KolonClientName (NOT NULL)
EkranSistem.Clients.vb:161 — kolon listesi çalışma zamanında üretiliyor (InsertQuery/ValuesQuery)
Kod dosyasıERPPRO/Class/Dao/Sistem.Clients.vb:161
Tetikleme koşuluKolon listesi dolu özelliklerden derleniyor; ClientName boşsa listeye girmez → 515.
Guard var mı?HAYIR
Olasılık / etki / güvenDüşük / S4 / 60
Var mı? V2 / KUYUMCU / BASEEVET / BİLİNMİYOR / EVET
Kullanıcı belirtisiİstemci kaydı yapılamaz (Cannot insert the value NULL into column 'ClientName').
ÖneriZorunlu alan kontrolü. (Uygulanmadı)
Kanıtfrags.py: Sistem.Clients INSERT listesinde clientname yok (dinamik).
İlgili SQL nesneleriSistem.Clients
SQL SQLR-063 — Duplicate key: Sistem.Kurlar (BirimId,Tarih); Sistem.Birimler.Kodu; Cari.Hesaplar (VergiNo,SubeId); Cari.Islemler.FisNo; Cari.BakiyeKodlari.Kodu S2 · Observed=HAYIR · Guard=HAYIR
Hata sınıfıDuplicate key · SQL Error 2627 / 2601 (yok — benzersiz indeks yok → sessiz mükerrer)
GözlemlendiHAYIR · Potential=EVET · Silent=EVET
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiSistem.Kurlar (BirimId,Tarih); Sistem.Birimler.Kodu; Cari.Hesaplar (VergiNo,SubeId); Cari.Islemler.FisNo; Cari.BakiyeKodlari.Kodu
TabloSistem.Kurlar; Sistem.Birimler; Cari.Hesaplar; Cari.Islemler
EkranKur giriş (FrmKurGirisEkrani, Sistem.KurKopyala); Birim tanımı; hesap kartı; fiş numarası (Max+1, TD-02)
Kod dosyasıERPPRO/Class/Ext/Cari.IslemEx.vb:256-267; ERPPRO/Form/Genel/FrmKurGirisEkrani.vb:110
Tetikleme koşuluDB1'de PK dışı benzersiz indeks yalnız 4 (sysdiagrams, KYC.BelgeTurleri.Kod, POS.Esikler, POS.VergiOranlari). İş anahtarları (Kurlar BirimId+Tarih, Birimler.Kodu, FisNo, RefNo) benzersiz değil → çakışma hata vermez, mükerrer satır oluşur. Sonuç: Sistem.GetKurListesi aynı birim için 2 satır → FN.GetKur TOP 1 (ORDER BY yok) rastgele kur; Bilanco/Pozisyon join'lerinde tutar iki kat; AcceptTransaction '(Select Id From Sistem.Birimler Where Kodu=HasSymbol)' → 512.
Guard var mı?HAYIR
Olasılık / etki / güvenOrta (çok kullanıcılı Max+1 fiş no: yüksek) / S2 / 85
Var mı? V2 / KUYUMCU / BASEEVET / BİLİNMİYOR / EVET
Kullanıcı belirtisiHata yok; aynı fiş numarası iki işlem, kur listesinde çift satır, bilanço tutarı iki kat.
Öneriİş anahtarlarına benzersiz indeks (Kurlar(BirimId,Tarih), Birimler(Kodu) filtered IsDeleted=0, Hesaplar(SubeId,VergiNo)); fiş no için SEQUENCE. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT BirimId,Tarih,COUNT(*) FROM Sistem.Kurlar GROUP BY BirimId,Tarih HAVING COUNT(*)>1; SELECT Kodu,COUNT(*) FROM Sistem.Birimler WHERE IsDeleted=0 GROUP BY Kodu HAVING COUNT(*)>1; SELECT FisNo,COUNT(DISTINCT RefNo) FROM Cari.Islemler WHERE IsDeleted=0 GROUP BY FisNo HAVING COUNT(DISTINCT RefNo)>1;
Kanıtindexes.json is_unique & not PK: 4 satır; Sistem.Kurlar indeksleri PK_Kurlar(Id), IX_KUR_SORT_TARIH(Tarih)…; FN.GetKur 'Select top 1 Alis … Where BirimId=@BirimId' ORDER BY yok; TD-02.
İlgili SQL nesneleriSistem.Kurlar, Sistem.Birimler, Cari.Hesaplar, Cari.Islemler, Cari.BakiyeKodlari, FN.GetKur
Wiki bağlantılarıTD-02
SQL SQLR-064 — Duplicate key: Cari.AcceptTransaction → MERGE INTO Sistem.Activity S1 · Observed=HAYIR · Guard=HAYIR
Hata sınıfıDuplicate key · SQL Error 8672 (MERGE aynı satırı birden fazla kez güncelliyor)
GözlemlendiHAYIR · Potential=EVET · Silent=HAYIR
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiCari.AcceptTransaction → MERGE INTO Sistem.Activity
TabloSistem.Activity (PK yok, 4 satır)
KolonActivitySubeId
EkranHer Cari.Islemler INSERT/UPDATE
Tetikleme koşuluMERGE … ON Target.ActivitySubeId=Source.ActivitySubeId; HOLDLOCK yok, tabloda PK/unique yok. İki eşzamanlı işlem aynı şube için NOT MATCHED dalına girip iki satır ekleyebilir; sonraki her MERGE 8672 'The MERGE statement attempted to UPDATE or DELETE the same row more than once' → o şubede TÜM işlem kayıtları başarısız olur.
Guard var mı?HAYIR
Olasılık / etki / güvenDüşük-Orta (yarış koşulu bir kez oluşunca kalıcı) / S1 / 80
Var mı? V2 / KUYUMCU / BASEEVET / BİLİNMİYOR (DB2 tetikleyicisi farklı sürüm) / EVET
Kullanıcı belirtisiİşlem kaydında 'The MERGE statement attempted to UPDATE or DELETE the same row more than once…' — o şubede hiç işlem yapılamaz.
ÖneriSistem.Activity'ye PK/unique(ActivitySubeId) ve MERGE'e HOLDLOCK; ya da UPDATE/INSERT ayrımı. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT ActivitySubeId,COUNT(*) FROM Sistem.Activity GROUP BY ActivitySubeId HAVING COUNT(*)>1;
KanıtAcceptTransaction: 'MERGE INTO Sistem.Activity AS Target USING (SELECT @subeId …) ON Target.ActivitySubeId=Source.ActivitySubeId …'; tables.json/indexes.json: Sistem.Activity indeks yok (PK'sız 36 tablo listesinde).
İlgili SQL nesneleriCari.AcceptTransaction, Sistem.Activity
SQL SQLR-065 — Identity: dbo.sp_DevirIslemiYap (IDENTITY_INSERT Cari.Islemler ON); Devir.vb TRUNCATE + yeniden INSERT; Sistem.Devir S2 · Observed=EVET (TD-42: DB2'de %66,1 / %54,6 öksüz satır) · Guard=HAYIR
Hata sınıfıIdentity · SQL Error 544 / 8101 / (sessiz çakışma)
GözlemlendiEVET (TD-42: DB2'de %66,1 / %54,6 öksüz satır) · Potential=EVET · Silent=EVET
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesidbo.sp_DevirIslemiYap (IDENTITY_INSERT Cari.Islemler ON); Devir.vb TRUNCATE + yeniden INSERT; Sistem.Devir
TabloCari.Islemler; Cari.IslemDetaylari; Sistem.SilAciklama; Cari.Transferler; Sistem.SilOnay; Genel.IptalOnay; Cari.RSReferans; Cari.Provizyon; Cari.IslemEmtiaDetayi; MüşteriŞemasıA.IslemFiyatlar
KolonId / IslemId
EkranDevir ekranı (Class/Module/Devir.vb:76-87)
Kod dosyasıERPPRO/Class/Module/Devir.vb:76-87
Tetikleme koşuluTRUNCATE Cari.Islemler kimliği tohuma sıfırlar; yeniden eklenen/yeni işlemler 1'den başlar. Boşaltılmayan IslemId taşıyan tablolar (SilAciklama 93k, Transferler, SilOnay, IptalOnay, Provizyon, RSReferans, MüşteriŞemasıA.IslemFiyatlar %66 öksüz — TD-42) eski Id'lerle yeni işlemlere bağlanır (sessiz yanlış join). sp_DevirIslemiYap IDENTITY_INSERT ile çakışan Id gönderirse 2627.
Guard var mı?HAYIR
Olasılık / etki / güvenKesin (her devirde) / S2 / 85
Var mı? V2 / KUYUMCU / BASEEVET / EVET / Sistem.Devir/ sp_DevirIslemiYap UNKNOWN
Kullanıcı belirtisiDevir sonrası silme gerekçeleri/transfer/provizyon kayıtları yanlış işlemle ilişkilenir; raporlar tutarsız.
ÖneriDevirde IDENT_CURRENT korunması (DBCC CHECKIDENT RESEED eski değere) ya da tüm IslemId taşıyan tabloların birlikte ele alınması. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT COUNT(*) FROM Sistem.SilAciklama S WHERE NOT EXISTS (SELECT 1 FROM Cari.Islemler I WHERE I.Id=S.TransID); SELECT IDENT_CURRENT('Cari.Islemler');
KanıtDevir.vb:76-80 'Truncate Table Cari.IslemlerCari.IslemDetaylari'; sp_DevirIslemiYap satır 214 'SET IDENTITY_INSERT Cari.Islemler ON'; TD-29, TD-42.
İlgili SQL nesneleridbo.sp_DevirIslemiYap, Cari.Islemler, Sistem.Devir, Cari.IslemDetaylari, Sistem.SilAciklama, Cari.Transferler, Sistem.SilOnay, Cari.RSReferans, Cari.Provizyon, Cari.IslemEmtiaDetayi
Wiki bağlantılarıTD-29 · TD-42
SQL SQLR-066 — Identity: Sistem.SirketOlustur; Sistem.Users Id=1 varsayımı S3 · Observed=HAYIR · Guard=HAYIR
Hata sınıfıIdentity · SQL Error (sessiz)
GözlemlendiHAYIR · Potential=EVET · Silent=EVET
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiSistem.SirketOlustur; Sistem.Users Id=1 varsayımı
TabloSistem.Users; Sistem.UserDetails
KolonId / UserId
EkranFrmMainForm.vb:706 (User.Id=1 gizli kısayol); SirketOlustur 'INSERT INTO Sistem.UserDetails(UserId…) Values(1,1,1,1,0)'
Kod dosyasıERPPRO/Form/Genel/FrmMainForm.vb:706
Tetikleme koşuluSirketOlustur tüm tabloları TRUNCATE edip ADMIN kullanıcısını ekler ve UserDetails'e UserId=1 yazar; Users kimliği TRUNCATE ile sıfırlandığı için 1 olur — ancak Users tablosu Design/AifaDev dışı olduğu için truncate kapsamında; tohum değiştirilmişse (DBCC CHECKIDENT) ADMIN Id≠1 → UserDetails öksüz, giriş yapılamaz. Kodda Id=1 admin varsayımı.
Guard var mı?HAYIR
Olasılık / etki / güvenDüşük / S3 / 70
Var mı? V2 / KUYUMCU / BASEEVET / BİLİNMİYOR / SirketOlustur UNKNOWN
Kullanıcı belirtisiYeni şirket kurulumunda ADMIN ile giriş yapılamaz / şube-kasa ataması yok.
ÖneriSCOPE_IDENTITY ile UserDetails eklenmesi; Id=1 varsayımının role dayalı yetkiyle değiştirilmesi. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT Id,UserName FROM Sistem.Users WHERE Id=1; SELECT * FROM Sistem.UserDetails WHERE UserId NOT IN (SELECT Id FROM Sistem.Users);
Kanıtmodules.json Sistem.SirketOlustur; FrmMainForm.vb:706 'If LoginInformation.User.Id = 1 AndAlso e.Shift…'.
İlgili SQL nesneleriSistem.SirketOlustur, Sistem.Users, Sistem.UserDetails
SQL SQLR-067 — Subquery returned more than 1 value: Cari.AcceptTransaction; Uretim.TrBakiyeHesapla; Repair.BalanceRepair S1 · Observed=HAYIR · Guard=HAYIR
Hata sınıfıSubquery returned more than 1 value · SQL Error 512
GözlemlendiHAYIR · Potential=EVET · Silent=HAYIR
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiCari.AcceptTransaction; Uretim.TrBakiyeHesapla; Repair.BalanceRepair
TabloSistem.Settings (PK yok, 1 satır); Sistem.Birimler (Kodu benzersiz değil)
KolonHasSymbol/GumSymbol/PltSymbol/PldSymbol; Birimler.Kodu
EkranHer Cari.Islemler ve Uretim.UretimIslemleri INSERT/UPDATE
Tetikleme koşulu'Declare @HasBirimId int = (Select Id From Sistem.Birimler Where IsDeleted='False' And Kodu = (Select HasSymbol From Sistem.Settings))' — Settings'e ikinci satır girilirse ya da aynı Kodu ile iki aktif birim varsa 512; tetikleyici içinde → işlem geri alınır. TOP 1/agg yok.
Guard var mı?HAYIR
Olasılık / etki / güvenDüşük-Orta (Birimler.Kodu mükerrer girişi engellenmiyor) / S1 / 90
Var mı? V2 / KUYUMCU / BASEEVET / BİLİNMİYOR / EVET
Kullanıcı belirtisi"Subquery returned more than 1 value…" — hiçbir işlem kaydedilemez.
ÖneriSettings'e tek satır kısıtı; Birimler(Kodu) filtered unique; TOP 1. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT COUNT(*) FROM Sistem.Settings; SELECT Kodu,COUNT(*) FROM Sistem.Birimler WHERE IsDeleted=0 GROUP BY Kodu HAVING COUNT(*)>1;
Kanıtsubq.py: AcceptTransaction/TrBakiyeHesapla/BalanceRepair 8'er skaler alt sorgu; tables.json Sistem.Settings rows=1, indeks yok; Birimler yalnız PK_Birimler(Id).
İlgili SQL nesneleriCari.AcceptTransaction, Uretim.TrBakiyeHesapla, Repair.BalanceRepair, Sistem.Settings, Sistem.Birimler
SQL SQLR-068 — Subquery returned more than 1 value: Cari.HesapInsert; Cari.HesapUpdate (Cari.Hesaplar tetikleyicileri) S3 · Observed=HAYIR · Guard=HAYIR
Hata sınıfıSubquery returned more than 1 value · SQL Error 512
GözlemlendiHAYIR · Potential=EVET · Silent=HAYIR
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiCari.HesapInsert; Cari.HesapUpdate (Cari.Hesaplar tetikleyicileri)
TabloCari.Hesaplar
KolonSubeId, Id, UserId
EkranÇok satırlı INSERT/UPDATE: Sistem.FromERP (toplu hesap aktarımı), dbo.sp_DevirIslemiYap, toplu UPDATE'ler
Tetikleme koşulu'SubeId = (select SubeId from inserted)', 'Id <> (select Id from deleted)', 'SET @UserID=(select UserId from inserted)' — birden fazla satır etkilendiğinde 512. Ek: HesapUpdate 'GroupId not in (4,6)' değilse her Hesaplar UPDATE'inde RAISERROR 'Yetkiniz yoktur!' + ROLLBACK (IF NOT Update(LastDate)). HesapInsert 'HAVING COUNT(*)>1' aynı VergiNo/TCNo'ya sahip ≥2 aktif hesap varsa (grup şirketleri) yeni hesap eklenemez.
Guard var mı?HAYIR
Olasılık / etki / güvenOrta / S3 / 90
Var mı? V2 / KUYUMCU / BASEEVET / BİLİNMİYOR / EVET (BASE-DEPENDENCY)
Kullanıcı belirtisiToplu hesap aktarımında 'Subquery returned more than 1 value'; bazı kullanıcı gruplarında (4,6) hesap düzenlemede 'Yetkiniz yoktur!'; 'Aynı Vergi No ya sahip başka bir hesap mevcuttur!'.
ÖneriSet-tabanlı tetikleyici (inserted JOIN); yetki kuralının uygulama katmanına taşınması. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT VergiNo,SubeId,COUNT(*) FROM Cari.Hesaplar WHERE IsDeleted=0 AND VergiNo IS NOT NULL GROUP BY VergiNo,SubeId HAVING COUNT(*)>1;
Kanıtmodules.json Cari.HesapInsert / Cari.HesapUpdate metinleri.
İlgili SQL nesneleriCari.HesapInsert, Cari.HesapUpdate, Cari.Hesaplar
SQL SQLR-069 — Subquery returned more than 1 value: Sistem.GetIslemKodu; FN.GetKur; Cari.IslemDetayiEkle; POS.Sabit S3 · Observed=HAYIR · Guard=KISMEN
Hata sınıfıSubquery returned more than 1 value · SQL Error 512 / (sessiz TOP 1)
GözlemlendiHAYIR · Potential=EVET · Silent=KISMEN
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiSistem.GetIslemKodu; FN.GetKur; Cari.IslemDetayiEkle; POS.Sabit
TabloSistem.CariIslemKodu/Turu/Tipi (PK Id); Sistem.GetKurListesi; Cari.RSReferans (PK yok); POS.Sabitler
Ekranİşlem listeleri (GetIslemKodu her satırda); AcceptTransaction pırlanta maliyeti (FN.GetKur); FrmSeriFaturaBas (IslemDetayiEkle)
Tetikleme koşuluGetIslemKodu: 'Where I.Id=@tpIslemId' PK ile tek satır → güvenli (Left Join tu on tu.Id=@tpTurId PK). FN.GetKur: 'Select top 1 Alis … Where BirimId=@BirimId' ORDER BY yok → mükerrer kurda rastgele (sessiz). IslemDetayiEkle: '(Select TargetID from Cari.RSReferans Where SenderID=@IslemId)' PK yok → 512 mümkün.
Guard var mı?KISMEN
Olasılık / etki / güvenDüşük / S3 / 85
Var mı? V2 / KUYUMCU / BASEEVET / BİLİNMİYOR / EVET (GetIslemKodu, GetKur); IslemDetayiEkle LEGACY
Kullanıcı belirtisiNadir 'Subquery returned more than 1 value' (RSReferans); kur değeri beklenenden farklı (sessiz).
ÖneriGetKur'a ORDER BY Id DESC; RSReferans'a PK. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT SenderID,COUNT(*) FROM Cari.RSReferans GROUP BY SenderID HAVING COUNT(*)>1;
Kanıtmodules.json FN.GetKur, Sistem.GetIslemKodu, Cari.IslemDetayiEkle; indexes.json PK listesi.
İlgili SQL nesneleriSistem.GetIslemKodu, FN.GetKur, Cari.IslemDetayiEkle, POS.Sabit, Sistem.CariIslemKodu, Sistem.GetKurListesi, Cari.RSReferans, POS.Sabitler
SQL SQLR-070 — Subquery returned more than 1 value: Cari.UpdateTransaction; Siparis.Kontrol; MüşteriŞemasıA tetikleyicisi S3 · Observed=HAYIR · Guard=HAYIR
Hata sınıfıSubquery returned more than 1 value · SQL Error (sessiz — tek satır varsayımı)
GözlemlendiHAYIR · Potential=EVET · Silent=EVET
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiCari.UpdateTransaction; Siparis.Kontrol; MüşteriŞemasıA tetikleyicisi
TabloCari.IslemlerCari.IslemDetaylari; Siparis.Siparisler
KolonIsDeleted, ETTN, IslemId
EkranFiş iptali: iScreen.vb:723 'Update Cari.Islemler Set IsDeleted=''True'' Where FisNo=… and KasaId=…' (çok satır); Cari.Islem.vb:1058 'Where RefNo=… And IslemKodu=…'
Kod dosyasıERPPRO/Controls/Islem Ekranı/Base Control/iScreen.vb:723; ERPPRO/Class/Dao/Islem/Cari.Islem.vb:1058
Tetikleme koşuluUpdateTransaction 'Select @IsDeleted=I.IsDeleted, @IslemId=D.IslemId, @Ettn=D.ETTN from inserted I Left Join Cari.IslemDetaylari D' → çok satırlı iptalde yalnız SON satırın IslemDetaylari'ı silinir/EIPTAL yapılır; diğer satırların belge detayı kalır (sessiz). Siparis.Kontrol aynı kalıp.
Guard var mı?HAYIR
Olasılık / etki / güvenYüksek (fiş iptali çok satırlı) / S3 / 85
Var mı? V2 / KUYUMCU / BASEEVET / BİLİNMİYOR / EVET
Kullanıcı belirtisiHata yok; iptal edilen fişin bazı satırlarının belge detayı (fatura no/ETTN) silinmez, raporlarda görünür.
ÖneriSet-tabanlı DELETE/UPDATE (inserted JOIN). (Uygulanmadı)
Validation SQL (salt okunur)
SELECT COUNT(*) FROM Cari.IslemDetaylari D JOIN Cari.Islemler I ON I.Id=D.IslemId WHERE I.IsDeleted=1 AND ISNULL(D.ETTN,'')='' ;
Kanıtmodules.json Cari.UpdateTransaction metni; sql_frags çok satırlı UPDATE'ler.
İlgili SQL nesneleriCari.UpdateTransaction, Siparis.Kontrol, Cari.Islemler, Cari.IslemDetaylari, Siparis.Siparisler
SQL SQLR-071 — Dynamic SQL / injection: (kod) string-birleştirmeli SQL S1 · Observed=HAYIR · Guard=HAYIR
Hata sınıfıDynamic SQL / injection · SQL Error 102 (tek tırnak) / injection
GözlemlendiHAYIR · Potential=EVET · Silent=HAYIR
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesi(kod) string-birleştirmeli SQL
Tablo
Kolon
Ekran1.294 SQL cümlesinin 914'ü (%70,6) '&' ile birleştiriliyor; 553'ü tırnaklı literal ('" & x & "'); 252 parametreli; 133 sabit. Serbest metin girenler: FrmFaturaBas.vb:168→:140 Cari.FindTaxInfo('"&TxtFilter.Text&"'); FindTaxInfo.vb:25; FrmOdemeListesi.vb:9,11 (ComboBoxEdit1.Text); FrmZiynetIscilikleri.vb:9 (DbCombo1.Text); iScreen.vb:1136 (UserName); Sistem.Clients.vb:28 (Computer/UserName); Stok.Model/Pirlanta/Siparis.Recete Kodu kontrolleri; iScreen.vb:975 '& Filter & OrderString'; SQLBase.vb:138-161 jenerik.
Kod dosyasıdyn_out.json (concat_quoted 553; txt 168); dyn_sites 35; ERPPRO/Class/Dao/_SQLBase/SQLBase.vb:138,140,161
Tetikleme koşuluKullanıcı metninde tek tırnak (') → 102 'Incorrect syntax' ya da 105 'Unclosed quotation mark'; bilinçli girdi → SQL injection (sa hesabı ile bağlanıldığı için (TD-05) sunucu düzeyinde etki). Aciklama alanı genelde parametreli (@Aciklama) — tırnak riski daha çok arama/filtre metinlerinde.
Guard var mı?HAYIR
Olasılık / etki / güvenYüksek (tırnaklı isim: O'NEIL, D'ARC…) / S1 / 95
Var mı? V2 / KUYUMCU / BASEEVET / EVET / —
Kullanıcı belirtisi'Unclosed quotation mark after the character string' / 'Incorrect syntax near …'; arama sonuç vermez.
ÖneriParametreli sorguya geçiş (TD-09); en azından serbest metin girişlerinde Replace("'","''"). (Uygulanmadı)
Kanıtdyn.py istatistiği (sql_frags kaynak satırları okunarak); TD-09, TD-10, TD-37.
Wiki bağlantılarıTD-09 · TD-10 · TD-37
SQL SQLR-072 — Dynamic SQL / injection: Agent.RunAgent; AifaDev.ExQueryBuilder; Cari.GetHesapExtresi; Sistem.FromERP; Sistem.SirketOlustur; dbo.sp_DevirIslemiYap (6 modül) S2 · Observed=HAYIR · Guard=HAYIR
Hata sınıfıDynamic SQL / injection · SQL Error 102 / injection
GözlemlendiHAYIR · Potential=EVET · Silent=HAYIR
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiAgent.RunAgent; AifaDev.ExQueryBuilder; Cari.GetHesapExtresi; Sistem.FromERP; Sistem.SirketOlustur; dbo.sp_DevirIslemiYap (6 modül)
TabloAgent.Agent.ConditionQuery; AifaDev.RepositoryItems.FieldName/Owner; Cari.BakiyeKodlari.Kodu; @Database; sys.tables
EkranRunAgent: koddan çağıran yok; ExQueryBuilder: DynamicForms; GetHesapExtresi: koddan çağıran yok; FromERP: FrmHesapAktar; SirketOlustur/sp_DevirIslemiYap: manuel
Kod dosyasıdbclean/analysis_db.json dyn_mods
Tetikleme koşuluTablo içeriği doğrudan SQL metnine ekleniyor: Agent.Agent.ConditionQuery (serbest SQL, sp_executesql); FieldName/Owner köşeli parantezle ama ']' kaçışsız; BakiyeKodlari.Kodu pivot kolon adı ('[' + Kodu + ']' — Kodu ']' içerirse 102); FromERP @Database QUOTENAME'siz; SirketOlustur sys.tables üzerinden 'truncate table' + DBCC SHRINKDATABASE (tüm veriyi siler!). GetHesapExtresi CROSS APPLY running-sum: BakiyeIslem (1,46M) üzerinde O(n²) → timeout.
Guard var mı?HAYIR
Olasılık / etki / güvenDüşük (çoğunun çağıranı yok) / SirketOlustur: yıkıcı / S2 / 90
Var mı? V2 / KUYUMCU / BASEEVET / BİLİNMİYOR / FromERP BASE-CORE; ExQueryBuilder BASE-DEPENDENCY; diğerleri UNKNOWN
Kullanıcı belirtisiHesap ekstresi: 'Incorrect syntax near ]' ya da zaman aşımı; SirketOlustur yanlışlıkla çalıştırılırsa tüm veriler silinir.
ÖneriQUOTENAME; SirketOlustur ve sp_DevirIslemiYap'ın BASE'den çıkarılıp yönetici betiğine alınması. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT Kodu FROM Cari.BakiyeKodlari WHERE Kodu LIKE '%[]]%' OR Kodu LIKE '%[[]%';
Kanıtanalysis_db.json dyn_mods (6 nesne); modules.json metinleri (GetHesapExtresi pivot, FromERP exec(@HesapQuery)).
İlgili SQL nesneleriAgent.RunAgent, AifaDev.ExQueryBuilder, Cari.GetHesapExtresi, Sistem.FromERP, Sistem.SirketOlustur, dbo.sp_DevirIslemiYap, Agent.Agent, AifaDev.RepositoryItems, Cari.BakiyeKodlari
SQL SQLR-073 — Transaction count mismatch: Cari.AcceptTransaction S2 · Observed=HAYIR · Guard=KISMEN (@IsError bayrağı yalnız bakiye yazımını atlar)
Hata sınıfıTransaction count mismatch · SQL Error 3609 (The transaction ended in the trigger. The batch has been aborted.) / 266
GözlemlendiHAYIR · Potential=EVET · Silent=KISMEN (Activity/Takoz güncellemeleri sessizce kalır)
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiCari.AcceptTransaction
TabloCari.Islemler
EkranHer işlem kaydı (Cari.Islem.Save → INSERT; iptal → UPDATE)
Kod dosyasıERPPRO/Class/Dao/Islem/Cari.Islem.vb:568,859
Tetikleme koşulu13 ROLLBACK, 5 RETURN. Eksik evrak (satır ~119), Şube/Kasa/Hesap=0 (~182), takoz kontrolleri (~229,~243) dallarında ROLLBACK sonrası RETURN yok → cursor döngüsü devam eder; @@TRANCOUNT=0 iken MERGE Sistem.Activity, 'Update Stok.Takoz Set IsDeleted' vb. AUTOCOMMIT ile kalıcı olur. Kullanıcı RAISERROR mesajını + 3609'u görür; ADO.NET SqlException ilk mesajı verir. Çok satırlı INSERT'te ilk satırda ROLLBACK, sonraki satırlar için 'CLOSE/FETCH' cursor hataları (16917/16924) olası.
Guard var mı?KISMEN (@IsError bayrağı yalnız bakiye yazımını atlar)
Olasılık / etki / güvenOrta (her iş kuralı ihlalinde) / S2 / 90
Var mı? V2 / KUYUMCU / BASEEVET / EVET (31.152 krk farklı sürüm — TD-48) / EVET
Kullanıcı belirtisi'BU HESABIN ZORUNLU EVRAKLARI EKSIKTIR…' + 'The transaction ended in the trigger. The batch has been aborted.'; nadiren 'A cursor with the name IslemCursor already exists' (16915) sonraki denemede (TD-03 cursor sızıntısı).
ÖneriHer ROLLBACK'ten sonra RETURN; THROW; cursor'un TRY/CATCH ile deallocate edilmesi. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT LEN(OBJECT_DEFINITION(OBJECT_ID('Cari.AcceptTransaction'))); -- 29.862 (DB1) vs 31.152 (DB2)
Kanıtmodules.json AcceptTransaction: ROLLBACK 13 / RETURN 5 (TD-04); DECLARE IslemCursor … CLOSE/DEALLOCATE yalnız normal akışta (TD-03).
İlgili SQL nesneleriCari.AcceptTransaction, Cari.Islemler
Wiki bağlantılarıTD-04 · TD-03
SQL SQLR-074 — Deadlock / timeout: Cari.AcceptTransaction + InsertTransaction + UpdateTransaction (Cari.Islemler); Cari.GetHesapExtresi; Stok.GetOrtMilyem (cursor'lı skaler fonksiyon) S2 · Observed=HAYIR (canlı ölçüm yok) · Guard=HAYIR
Hata sınıfıDeadlock / timeout · SQL Error 1205 / -2 (Timeout expired)
GözlemlendiHAYIR (canlı ölçüm yok) · Potential=EVET · Silent=HAYIR
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiCari.AcceptTransaction + InsertTransaction + UpdateTransaction (Cari.Islemler); Cari.GetHesapExtresi; Stok.GetOrtMilyem (cursor'lı skaler fonksiyon)
TabloCari.Islemler (1,58M satır, 26 indeks); Cari.BakiyeIslem (1,46M, 12 indeks, PK yok); Stok.StokHaraketleri (1,62M, 9 indeks); Cari.History (1,64M)
Ekranİşlem kaydı; işlem listesi; hesap ekstresi; maden stok listesi (GetOrtMilyem satır başına cursor)
Kod dosyasıERPPRO/Class/Module/InternalDb.vb:11 (ConnStr 'TimeOut=30' = bağlantı zaman aşımı; CommandTimeout varsayılan 30 sn)
Tetikleme koşuluTek INSERT için: 4 AFTER trigger, satır başına cursor, 2× Cari.GetGerekliEvraklar (3 tablo + cross-DB view), Stok.GetTakozAdet (StokHaraketleri tarama: IslemId indeksi yok — IX_StokId(SubeId,StokTipi,StokId) kısmi), DELETE BakiyeIslem/StokHaraketleri, 5–8 INSERT, History INSERT (73 kolon). Cari.Islemler'de 26 non-clustered indeks (IX_MuhIslemler/02/03/IX_MuhasebeIslemler01 aynı anahtar: IsDeleted,IslemKodu ×4) → yazma maliyeti. Raporlar (GetKurListesi TOP 10000 + fallback join) ile eş zamanlı kilit → 1205; 30 sn üstü → Timeout.
Guard var mı?HAYIR
Olasılık / etki / güvenOrta (yoğun saatlerde) / S2 / 70
Var mı? V2 / KUYUMCU / BASEEVET / EVET (Cari.Islemler 677k, BakiyeIslem 976k, History 736k) / EVET
Kullanıcı belirtisi'Transaction (Process ID …) was deadlocked … has been chosen as the deadlock victim' ya da 'Timeout expired'; işlem kaydedildi mi belirsiz (InternalDb Nothing döner).
ÖneriMükerrer indekslerin (IsDeleted,IslemKodu ×4; StokHaraketleri IX_1/IX_Pozisyon01, IX_2/IX_3, IX_4/IX_5 çiftleri) sadeleştirilmesi; StokHaraketleri(IslemId) indeksi; tetikleyicinin set-tabanlı yazımı. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT i.name,i.type_desc,STRING_AGG(c.name,',') WITHIN GROUP (ORDER BY ic.key_ordinal) FROM sys.indexes i JOIN sys.index_columns ic ON ic.object_id=i.object_id AND ic.index_id=i.index_id JOIN sys.columns c ON c.object_id=ic.object_id AND c.column_id=ic.column_id WHERE i.object_id=OBJECT_ID('Cari.Islemler') AND ic.is_included_column=0 GROUP BY i.name,i.type_desc;
Kanıtindexes.json (Cari.Islemler 26 indeks; StokHaraketleri 9, çiftler); tables.json satır sayıları; trg.json 4 tetikleyici Cari.Islemler; AcceptTransaction cursor.
İlgili SQL nesneleriCari.AcceptTransaction, Cari.Islemler, Cari.GetHesapExtresi, Stok.GetOrtMilyem, Cari.BakiyeIslem, Stok.StokHaraketleri, Cari.History
SQL SQLR-075 — Recursive trigger: Cari.AcceptTransaction → Cari.Hesaplar UPDATE → Cari.HesapUpdate; Cari.Transferler UPDATE → TransferUpdateSTatus → Stok.StokHaraketleri; Sistem.Subeler INSERT → CreateKasa → Sistem.Kasalar (tetikleyici yok); Uretim.UretimIslemleri → TrBakiyeHesapla S2 · Observed=HAYIR · Guard=KISMEN
Hata sınıfıRecursive trigger · SQL Error 217 (nesting 32) — düşük; iç içe tetikleme
GözlemlendiHAYIR · Potential=EVET · Silent=HAYIR
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiCari.AcceptTransactionCari.Hesaplar UPDATE → Cari.HesapUpdate; Cari.Transferler UPDATE → TransferUpdateSTatus → Stok.StokHaraketleri; Sistem.Subeler INSERT → CreateKasa → Sistem.Kasalar (tetikleyici yok); Uretim.UretimIslemleri → TrBakiyeHesapla
TabloCari.Hesaplar; Stok.StokHaraketleri; Sistem.Kasalar
EkranHer işlem kaydı
Tetikleme koşuluAcceptTransaction 'Update Cari.Hesaplar Set LastDate=Getdate()' → HesapUpdate tetiklenir (nesting 2): VergiNo mükerrerlik kontrolü çalışır (IF NOT Update(LastDate) yetki kontrolünü atlar). Aynı VergiNo'ya sahip ≥2 başka aktif hesap varsa (grup şirketleri, '' yerine gerçek numara) RAISERROR+ROLLBACK → İŞLEM KAYDI başarısız ('Aynı Vergi No ya sahip başka bir hesap mevcuttur!!'). Gerçek özyineleme (aynı tabloya) yok; RECURSIVE_TRIGGERS DB seçeneği bilinmiyor.
Guard var mı?KISMEN
Olasılık / etki / güvenDüşük-Orta / S2 / 80
Var mı? V2 / KUYUMCU / BASEEVET / BİLİNMİYOR / EVET
Kullanıcı belirtisiİşlem girerken beklenmedik 'Aynı Vergi No ya sahip başka bir hesap mevcuttur!!' hatası.
ÖneriHesapUpdate'in yalnız VergiNo/TCNo değiştiğinde (IF UPDATE(VergiNo)) çalışması. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT is_recursive_triggers_on FROM sys.databases WHERE name=DB_NAME(); SELECT VergiNo,SubeId,COUNT(*) FROM Cari.Hesaplar WHERE IsDeleted=0 AND ISNULL(VergiNo,'')<>'' GROUP BY VergiNo,SubeId HAVING COUNT(*)>2;
KanıtAcceptTransaction 'Update Cari.Hesaplar Set LastDate=Getdate() Where Id=@HesapId'; HesapUpdate metni; trg.json trigger→tablo eşlemesi.
İlgili SQL nesneleriCari.AcceptTransaction, Cari.Hesaplar, Cari.HesapUpdate, Cari.Transferler, Stok.StokHaraketleri, Sistem.Subeler, Sistem.Kasalar, Uretim.UretimIslemleri
SQL SQLR-076 — Disabled trigger: 12 tetikleyici (trg.json) S1 · Observed=HAYIR · Guard=—
Hata sınıfıDisabled trigger
GözlemlendiHAYIR · Potential=EVET · Silent=EVET (kapalıysa)
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesi12 tetikleyici (trg.json)
TabloCari.Islemler(4), Cari.Hesaplar(2), Cari.Transferler, Sistem.SilOnay, Sistem.Subeler, Siparis.Siparisler, Uretim.UretimIslemleri, AifaDev.RepositoryItems
Ekran
Kod dosyasıdbclean/trg.json
Tetikleme koşuluDB1 kataloğunda 12 tetikleyicinin tamamı is_disabled=False. TD-32 'demo kopyasında 4 Islemler tetikleyicisi DISABLED' iddiası bu katalogla ÇELİŞİYOR → iddia doğrulanamadı. Risk: tetikleyiciler kapalı bir kurulumda bakiye/stok/History üretilmez (sessiz), açıkken bu dosyadaki tüm tetikleyici riskleri geçerli.
Guard var mı?
Olasılık / etki / güvenBilinmiyor / S1 / 85
Var mı? V2 / KUYUMCU / BASEEVET (hepsi etkin) / EVET (5 tetikleyici, farklı sürüm) / EVET (BASE-DEPENDENCY 12)
Kullanıcı belirtisiKapalıysa: işlem kaydedilir ama bakiye/stok değişmez, History boş.
ÖneriKurulum doğrulama kontrol listesine sys.triggers is_disabled sorgusu. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT OBJECT_SCHEMA_NAME(parent_id)+'.'+OBJECT_NAME(parent_id) AS Tablo, name, is_disabled FROM sys.triggers ORDER BY 1;
Kanıttrg.json 12 satır is_disabled=False; TD-32 metni (AS-DOCUMENTED).
İlgili SQL nesneleriCari.Transferler, Sistem.SilOnay, Sistem.Subeler, Siparis.Siparisler, Uretim.UretimIslemleri, AifaDev.RepositoryItems, Cari.Islemler, Cari.Hesaplar
Wiki bağlantılarıTD-32
SQL SQLR-077 — Broken dependency: Cari.AcceptTransaction'ın çağırdığı fonksiyonlar: FN.GetKur, FN.Bol, Stok.GetTakozAdet, Cari.GetGerekliEvraklar(→Genel.Dosyalar→DOCUMENTS); Cari.GetKurListesi zinciri; hesaplanan kolon UDF'leri (Sistem.Pariteler.Parite → Sistem.GetIdToBirim; dbo.SyncTickets → FN.Bol [ERPSCHEMA]) S2 · Observed=HAYIR · Guard=HAYIR
Hata sınıfıBroken dependency · SQL Error 208 / 4413
GözlemlendiHAYIR · Potential=EVET · Silent=HAYIR
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiCari.AcceptTransaction'ın çağırdığı fonksiyonlar: FN.GetKur, FN.Bol, Stok.GetTakozAdet, Cari.GetGerekliEvraklar(→Genel.Dosyalar→DOCUMENTS); Cari.GetKurListesi zinciri; hesaplanan kolon UDF'leri (Sistem.Pariteler.Parite → Sistem.GetIdToBirim; dbo.SyncTickets → FN.Bol [ERPSCHEMA])
TabloSistem.Pariteler; Cari.Islemler
KolonParite (computed, UDF)
Ekranİşlem kaydı; parite tanımı
Tetikleme koşuluTetikleyici içinde çağrılan UDF/view zincirinden biri drop/rename edilirse (BASE temizliğinde 'EXCLUDE' adayları) tetikleyici her INSERT'te 208 ile düşer. Sistem.Pariteler.Parite hesaplanan kolonu Sistem.GetIdToBirim'e bağlı: fonksiyon kaldırılamaz (3729) ve fonksiyon Sistem.Birimler'i okur (CTR-BASE-COMPUTED-UDF: UDF'li hesaplanan kolon tablo taramalarında satır başına çağrı, paralel plan yok). deps.json'da is_ambiguous/is_caller_dependent satırları temizlik sırasında yanlış 'kullanılmıyor' kararına yol açabilir.
Guard var mı?HAYIR
Olasılık / etki / güvenDüşük (temizlik yapılırsa orta) / S2 / 80
Var mı? V2 / KUYUMCU / BASEEVET / BİLİNMİYOR / EVET
Kullanıcı belirtisiTemizlik sonrası işlem kaydında 'Invalid object name FN.GetKur' vb.; 'Cannot DROP FUNCTION … because it is being referenced by object Pariteler'.
Öneribuild_order.json zincirinin BASE build'inde korunması; drop öncesi sys.sql_expression_dependencies kontrolü. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT referenced_schema_name+'.'+referenced_entity_name FROM sys.sql_expression_dependencies WHERE referencing_id=OBJECT_ID('Cari.AcceptTransaction') AND referenced_id IS NULL;
Kanıtdeps.json (2026 satır); computed.json Sistem.Pariteler.Parite 'Sistem.GetIdToBirim]([AnaBirimId])'; ERPSCHEMA dbo.SyncTickets computed 'FN.Bol'.
İlgili SQL nesneleriCari.AcceptTransaction, FN.GetKur, FN.Bol, Stok.GetTakozAdet, Genel.Dosyalar, Sistem.Pariteler, Sistem.GetIdToBirim, Cari.Islemler, Cari.GetGerekliEvraklar
SQL SQLR-078 — Collation conflict: Pozisyon.Write (COLLATE Turkish_CI_AS); Genel.Dosyalar (cross-DB DOCUMENTS); Sistem.FromERP (<@Database>.dbo.*); ERPGLOBAL.dbo.Company S3 · Observed=HAYIR · Guard=KISMEN (Pozisyon.Write)
Hata sınıfıCollation conflict · SQL Error 468
GözlemlendiHAYIR · Potential=EVET · Silent=HAYIR
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiPozisyon.Write (COLLATE Turkish_CI_AS); Genel.Dosyalar (cross-DB DOCUMENTS); Sistem.FromERP (<@Database>.dbo.*); ERPGLOBAL.dbo.Company
EkranPozisyon yazımı; evrak kontrolü; hesap aktarımı
Tetikleme koşuluTek açık COLLATE kullanan modül Pozisyon.Write. Cross-DB join'lerde (DOCUMENTS, eski ERP DB, ERPGLOBAL, tempdb #tablolar) karşı DB'nin harmanlaması farklıysa 468 'Cannot resolve the collation conflict'. DB1 harmanlaması bu turda alınmadı (GAP).
Guard var mı?KISMEN (Pozisyon.Write)
Olasılık / etki / güvenDüşük / S3 / 60
Var mı? V2 / KUYUMCU / BASEEVET / BİLİNMİYOR / Pozisyon.Write UNKNOWN
Kullanıcı belirtisi'Cannot resolve the collation conflict between … in the equal to operation.'
ÖneriBASE kurulumunda DB harmanlamasının sabitlenmesi (Turkish_CI_AS) ve tempdb/cross-DB için COLLATE DATABASE_DEFAULT. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT DATABASEPROPERTYEX(DB_NAME(),'Collation'), SERVERPROPERTY('Collation');
Kanıtmodules.json COLLATE taraması: yalnız Pozisyon.Write.
İlgili SQL nesneleriPozisyon.Write, Genel.Dosyalar, Sistem.FromERP
SQL SQLR-079 — Collation conflict: nvarchar(1) kolonlar; text/image legacy tipler; bit'e 'True'/'False' string S4 · Observed=HAYIR · Guard=—
Hata sınıfıCollation conflict · SQL Error (veri tipi) 8152/245
GözlemlendiHAYIR · Potential=EVET · Silent=HAYIR
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesinvarchar(1) kolonlar; text/image legacy tipler; bit'e 'True'/'False' string
TabloSistem.CariIslemTipi.Kod, Sistem.CariIslemTuru.Kod/Yon, Sistem.TakozScala.Kodu (nvarchar(1)); Cari.Islemler.Yon/History.Yon varchar(1); AifaDev.Forms FormCode/ClassCode/DesignerCode (text); Design.Forms.FormLayout (text); 19 image kolonu
EkranSistem tanımları; tasarımcı (CodeDesigner)
Tetikleme koşulunvarchar(1) kod kolonlarına 2+ karakter → 8152. text/image tipleri: sys.sql_modules/STRING fonksiyonları ile kullanılamaz (LEN/REPLACE → 8116 'Argument data type text is invalid'), uyumluluk seviyesi 100 (TD-33) ile korunuyor ama ileri sürümde kaldırılacak. Where IsDeleted='False' (string→bit) geçerli; performans etkisi yok. Yon nvarchar(1): '+'/'-'.
Guard var mı?
Olasılık / etki / güvenDüşük / S4 / 90
Var mı? V2 / KUYUMCU / BASEEVET / BİLİNMİYOR / EVET
Kullanıcı belirtisiTanım ekranında 'String or binary data would be truncated'; tasarımcıda text tipi hataları.
Öneritext/image → nvarchar(max)/varbinary(max); nvarchar(1) kodların standardı. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT OBJECT_NAME(object_id),name FROM sys.columns WHERE system_type_id IN (35,34,99);
Kanıtcolumns.json taraması: nvarchar(1) 4, varchar(1) 2, text 4, image 19.
İlgili SQL nesneleriSistem.CariIslemTipi, Sistem.CariIslemTuru, Sistem.TakozScala, Cari.Islemler, AifaDev.Forms, Design.Forms
SQL SQLR-080 — Legacy: Pozisyon.GetOldPozisyon; Sistem.NonUsed_TCMBDovizKurlari; Genel.Dosyalar_; Genel.Experler_; Sistem.AyarEvi_ (DB2); LiveUpdate.VersionHistory_; dbo.Temp; dbo.test; Muhasebe.TEst; FN.GetCariLimitOld; FN.GetKurOldKur; FX.StartSyncOld; Report.BakiyeArtisRaporuOld S3 · Observed=HAYIR · Guard=—
Hata sınıfıLegacy
GözlemlendiHAYIR · Potential=EVET · Silent=EVET
Runtime durumuDOĞRULANMADI — statik analiz (Gözlemlendi: HAYIR)
SQL nesnesiPozisyon.GetOldPozisyon; Sistem.NonUsed_TCMBDovizKurlari; Genel.Dosyalar_; Genel.Experler_; Sistem.AyarEvi_ (DB2); LiveUpdate.VersionHistory_; dbo.Temp; dbo.test; Muhasebe.TEst; FN.GetCariLimitOld; FN.GetKurOldKur; FX.StartSyncOld; Report.BakiyeArtisRaporuOld
EkranFrmPozisyon.vb:8 (ANA MENÜ) → Pozisyon.GetOldPozisyon; AifaDev.Reports #18 'Pozisyon Raporu' → GetOldPozisyon; Pozisyon.GetHacimRaporu → GetOldPozisyon
Kod dosyasıERPPRO/Form/RefreshGrid/FrmPozisyon.vb:8
Tetikleme koşulu'Old' adlı fonksiyon canlı ekran ve rapor tarafından kullanılıyor (BASE-CORE olarak işaretli) — ad yanıltıcı, temizlikte silinirse 208. NonUsed_TCMBDovizKurlari (25.212 satır) hiçbir modül/kod tarafından okunmuyor (TCMB.vb view'ı hedefliyor). Dosyalar_/Experler_ tabloları 0 satır, view'lar tarafından değil kod tarafından da referans edilmiyor. dbo.Temp/test/Muhasebe.TEst referans yok.
Guard var mı?
Olasılık / etki / güvenDüşük / S3 / 85
Var mı? V2 / KUYUMCU / BASEEVET / Sistem.AyarEvi_/TCMBDovizKurlari tablo (KUY_ONLY); NonUsed_ HAYIR / GetOldPozisyon EVET (BASE-CORE); diğerleri HAYIR (LEGACY 25)
Kullanıcı belirtisiTemizlik sonrası Pozisyon ekranı/raporunda 'Invalid object name Pozisyon.GetOldPozisyon'.
ÖneriGetOldPozisyon'un LEGACY listesine alınmaması (kullanımda); NonUsed_/_ son ekli nesnelerin EXCLUDE_LEGACY olarak kalması. (Uygulanmadı)
Validation SQL (salt okunur)
SELECT OBJECT_ID('Pozisyon.GetOldPozisyon'); SELECT COUNT(*) FROM Sistem.NonUsed_TCMBDovizKurlari;
KanıtLegacy referans taraması: code FrmPozisyon.vb:8, dbsql AifaDev.Reports#18, modül Pozisyon.GetHacimRaporu; analysis.json LEGACY 25 nesne.
İlgili SQL nesneleriPozisyon.GetOldPozisyon, Sistem.NonUsed_TCMBDovizKurlari, Genel.Dosyalar_, Genel.Experler_, dbo.Temp, dbo.test, Muhasebe.TEst, FN.GetCariLimitOld, FN.GetKurOldKur, FX.StartSyncOld, Report.BakiyeArtisRaporuOld, AifaDev.Reports, Pozisyon.GetHacimRaporu