FabyaVisionKullanım Kılavuzu
/

Veritabanı erişimi (ODBC ve SQL)

4 dk okumaDış sistemler

Live'ın veritabanlarıyla çalışma yolları: arşivi SQL Server'a yansıtma ve betiklerden ODBC ile sorgu / yazma; izinler, bağlantı dizesi, sınırlar ve güvenlik.

FabyaVision'da veritabanına iki ayrı yoldan erişilir ve ikisi birbirinden bağımsızdır:

Arşiv SQL yansıtmaBetiklerden ODBC
Ne içinVeri arşivinin kayıtlarını SQL Server tablosuna yazar.Betik, herhangi bir ODBC veri kaynağından okur ya da ona yazar (parti kaydı, reçete arama …).
VeritabanıYalnızca Microsoft SQL Server.ODBC sürücüsü olan her veritabanı.
YönYalnız yazma (yansıtma).Okuma ve yazma (kodunuz karar verir).
Nerede ayarlanırGeçmiş Veri › Depolama (Veri arşivleri).Betik kodu + Live Ayarları › Betik İzinleri.
İzinGerekmez.Veritabanına bağlanma izni açık olmalı.

Arşiv yansıtma ayrıntıları Veri arşivleri konusundadır; bu konu betiklerden ODBC erişimini anlatır.

Betiklerden ODBC

Ön koşullar

  1. ODBC veri kaynağını tanımlayın

    Live bilgisayarında bir DSN (veri kaynağı adı) oluşturun ya da Driver={...} bağlantı dizesi kullanın. Live 32 bit (x86) bir programdır: 64 bit Windows'ta DSN'i 32 bit ODBC yöneticisinde (C:\Windows\SysWOW64\odbcad32.exe) tanımlayın ve 32 bit sürücü kullanın.

  2. İzni açın

    Live Ayarları›Genel›Betik İzinleri›Veritabanına bağlanma anahtarını açın. İzin kapalıyken betik çalışırken hata verir; Studio, kullanımı önceden Sorunlar listesinde uyarır. Üç izin vardır (veritabanı, program çalıştırma, dosya erişimi) ve varsayılan olarak hepsi kapalıdır.

  3. Betiği yazın

    VBS'te ADODB.Connection, ADODB.Command, ADODB.Recordset; Python'da scada.db.connect ya da pyodbc.connect kullanılır. Hazır örnekler Betikler bölümündeki Örnek kodlar… penceresinde bulunur (Veritabanı sorgusu (parametreli), Veritabanına kayıt ekleme (INSERT) ve Python karşılıkları).

  4. Betiği bağlayın

    Betiği bir düğme olayına ya da zamanlanmış göreve bağlayın (örnek: parti bitiş tag'i değişince kayıt ekleme).

Live Ayarları › Genel › Betik İzinleri: veritabanı, program ve dosya izinleri (varsayılan: kapalı).
Live Ayarları › Genel › Betik İzinleri: veritabanı, program ve dosya izinleri (varsayılan: kapalı).

Bağlantı dizesi

  • DSN=Uretim_VT;UID=;PWD=; biçimi ya da yalnızca veri kaynağı adı (Uretim_VT, DSN sayılır) ya da Driver={...};Server=...; biçimi kullanılır.
  • ADO'ya özgü Provider=MSDASQL anahtarı kabul edilir ve atılır; başka bir sağlayıcı (SQLOLEDB, Microsoft.ACE.OLEDB …) reddedilir: “Yalnızca ODBC bağlantıları desteklenir”.
  • Kullanıcı adı ve şifre dizede ya da conn.Open dize, kullanici, sifre parametrelerinde verilir. Bağlantı dizesindeki şifre betik kodunda düz metindir (proje dosyasında okunabilir); mümkünse Windows kimlik doğrulamasını (Trusted_Connection=Yes) tercih edin.

Örnek: parametreli sorgu (VBS)

Sub Veritabani_Sorgu()
    Dim conn, cmd, rs
    Set conn = CreateObject("ADODB.Connection")
    Set cmd = CreateObject("ADODB.Command")
    On Error Resume Next
    conn.Open "DSN=Uretim_VT;UID=;PWD=;"
    Set cmd.ActiveConnection = conn
    cmd.CommandText = "SELECT RECETE_ADI, MIKTAR FROM RECETELER WHERE RECETE_KODU = ?"
    cmd.Parameters.Append cmd.CreateParameter("kod", 200, 1, 50, SmartTags("Recete_Kodu"))
    Set rs = cmd.Execute
    If Err.Number <> 0 Then
        HMIRuntime.Trace "Sorgu hatası: " & Err.Description & vbCrLf
        Exit Sub
    End If
    On Error GoTo 0
    If rs.EOF Then
        SmartTags("Recete_Adi") = "(bulunamadı)"
    Else
        SmartTags("Recete_Adi") = rs.Fields("RECETE_ADI").Value
        SmartTags("Hedef_Miktar") = rs.Fields("MIKTAR").Value
    End If
    rs.Close
    conn.Close
End Sub

Uretim_VT yerine kendi veri kaynağınızın adını, tag adlarını ve tablo / kolon adlarını yazın. Değeri SQL metnine eklemek yerine ? parametresiyle verin: bu hem biçim sorunlarını hem de SQL enjeksiyonunu önler.

Örnek: kayıt ekleme (Python)

import pyodbc

def Py_Veritabani_Kayit_Ekle():
    con = pyodbc.connect("DSN=Uretim_VT;UID=;PWD=;")
    imlec = con.cursor()
    imlec.execute("INSERT INTO PARTI_KAYIT (PARTI_NO, RECETE, MIKTAR, ZAMAN) VALUES (?, ?, ?, ?)",
                  scada.read("Parti_No"), scada.read("Recete_Adi"), scada.read("Toplam_Miktar"), scada.now())
    con.commit()
    con.close()
    scada.write("Kayit_Tamam", True)

Çalışma kuralları ve sınırlar

KonuDavranış
Süre sınırıBağlantı açma ve komut çalıştırma için 15 saniye.
Satır sınırıBir sorgu en çok 5000 satır döndürür; fazlası kesilir (sonuçta “kesildi” işareti vardır).
Bağlantı durumsuzdurHer komut kendi (havuzdan gelen) bağlantısını açıp kapatır. Geçici #tablo, SET ayarları ve işlem (transaction) komutlar arasında korunmaz; çok adımlı işlemi tek SQL komutunda (saklı yordam ya da toplu betik) yapın.
Bayat bağlantıSunucu yeniden başlamışsa havuzdaki bayat bağlantı ilk komutta hata verir; Live havuzu boşaltıp komutu bir kez yeniden dener.
Hata iletisi“Veritabanı hatası (SQLSTATE): sürücü iletisi” biçimindedir (sürücü önekleri atılır).
Parametreler? yer tutucuları sırayla doldurulur; sayı, metin, bool, tarih / saat ve ikili (bytes) değerler desteklenir.
Arayüz bloklanmazVeritabanı işleri arka planda yürür; ekran donmaz. Betik, sonuç gelene kadar bekler.

Arşiv SQL bağlantısını sınama

Arşive SQL Server yansıtma tanımladıysanız Veri Arşivleri tablosundaki Bağlantıyı sına düğmesi bağlantıyı Studio bilgisayarında dener: sunucuya bağlanır, sunucu ve veritabanı adını okur, tablonun varlığına ve yazma / oluşturma iznine bakar; hiçbir şey yazmaz. Bu sınama Live bilgisayarındaki ağ erişimini ve kimlik bilgilerini denemez; Studio ve Live farklı bilgisayarlardaysa bağlantıyı Live bilgisayarında da doğrulayın. Arşiv yansıtma hataları (bağlantı kopması, yazılamayan satır) Live'ın olay günlüğüne düşer (Veri arşivleri).

Sınırlar ve dikkat edilecekler

  • Veritabanı şifreleri betik kodunda ya da arşiv bağlantı dizesinde proje dosyasında düz metin durur; dosyayı yetkisiz kişilerden koruyun.
  • Betik içinden uzun süren sorgular betiği bekletir; tag değişimiyle tetiklenen bir betik önceki çağrısı sürerken yeniden tetiklenirse o çağrı atlanır (Zamanlanmış görevler).
  • ODBC erişimi geliştirme denetiminde yalnızca sahte köprüyle sınanmıştır; gerçek veritabanıyla ilk denemeyi yedek bir tabloda yapın.

İlgili konular

FabyaVision 0.1.0 Kullanım Kılavuzu · 18 Ekim 2026© Fabyatek Yazılım Bilişim Teknolojileri Ltd. Şti.