MSsql de Trigger İle Log Tutma
#1
access-sql-17 
Arkadaşlar Mssql de loglama yapmak istiyorum table ları nasıl oluşturmalıyım ve triggerları nasıl kodlamalıyım yardıma ihtiyacım var şimdiden hepinize teşekkür ediyorum.



  Alıntı
Bu mesajı beğenenler:
#2
Sayın Ozan, profesyonel değilim ama dilim döndüğünce anlatayım. Umarım işinize yarar. Kolay gelsin.

1 - Mysql veritabanında günlük tabloları oluşturmak için;
SQL
  1. CREATE TABLE `slow_log` (
  2. `start_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
  3. ON UPDATE CURRENT_TIMESTAMP,
  4. `user_host` mediumtext NOT NULL,
  5. `query_time` TIME NOT NULL,
  6. `lock_time` TIME NOT NULL,
  7. `rows_sent` INT(11) NOT NULL,
  8. `rows_examined` INT(11) NOT NULL,
  9. `db` VARCHAR(512) NOT NULL,
  10. `last_insert_id` INT(11) NOT NULL,
  11. `insert_id` INT(11) NOT NULL,
  12. `server_id` INT(10) UNSIGNED NOT NULL,
  13. `sql_text` mediumtext NOT NULL,
  14. `thread_id` BIGINT(21) UNSIGNED NOT NULL
  15. ) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='Slow log'
  16.  
  17. CREATE TABLE `general_log` (
  18. `event_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
  19. ON UPDATE CURRENT_TIMESTAMP,
  20. `user_host` mediumtext NOT NULL,
  21. `thread_id` BIGINT(21) UNSIGNED NOT NULL,
  22. `server_id` INT(10) UNSIGNED NOT NULL,
  23. `command_type` VARCHAR(64) NOT NULL,
  24. `argument` mediumtext NOT NULL
  25. ) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='General log'


2 - Veritabanındaki sorgu günlüğünü etkinleştirmek için;
SQL
  1. SET global general_log = 1;
  2. SET global log_output = 'table';


3 - Günlüğü görüntülemek için;
SQL
  1. SELECT * FROM mysql.general_log ORDER BY (event_time) DESC


4 - Günlüğü devre dışı bırakmak için;
SQL
  1. SET global general_log = 0;





  Alıntı
Bu mesajı beğenenler:
#3
çok teşekkür ederim ilgilendiğiniz için. lakin istediğim bu değil. Mysql bilmiyorum ama burda triggerda kullanmamışsınız sanırım. Bana trigger ile yapılacak log işlemi ve tabloları lazım



  Alıntı
Bu mesajı beğenenler:
#4
Sayın Ozan söylediğim gibi amatörce ilgileniyorum. Aradığınız aşağıdaki işlem olabilir mi? Umarım işinize yarar.

CREATE TABLE logger
( logger_id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY
, logger_event VARCHAR(50)
, logger_table VARCHAR(50)
, logger_instring VARCHAR(100)
, logger_outstring VARCHAR(100)
, created_by INT UNSIGNED
, creation_date DATE
, last_updated_by INT UNSIGNED
, last_update_date DATE) ENGINE=MyISAM;

Insert işlemi için

CREATE TRIGGER contact_insert
BEFORE INSERT ON contact
FOR EACH ROW
BEGIN

IF new.last_name REGEXP '^.* .*$' THEN

INSERT INTO logger
VALUES ( null
,'insert'
,'contact'
, new.last_name
, REPLACE(new.last_name,' ','-')
, new.created_by
, new.creation_date
, new.last_updated_by
, new.last_update_date );

SET new.last_name := REPLACE(new.last_name,' ','-');
END IF;
END;

Update işlemi için

CREATE TRIGGER contact_update
BEFORE UPDATE ON contact
FOR EACH ROW
BEGIN

IF new.last_name REGEXP '^.* .*$' THEN

INSERT INTO logger
VALUES ( null
,'update'
,'contact'
, new.last_name
, null
, old.created_by
, old.creation_date
, new.last_updated_by
, new.last_update_date );

SIGNAL SQLSTATE '42000';
END IF;
END;

Test edebilirsin

INSERT INTO contact VALUES
( null, 1001, 1003,'Dogus', null,'Dogus Ozan', 1001, UTC_DATE(), 1001, UTC_DATE());

UPDATE contact
SET last_name = 'Dogus Ozan'
, last_updated_by = 1003
, last_update_date = UTC_DATE()
WHERE last_name = 'Dogus Ozan';



  Alıntı
Bu mesajı beğenenler:
#5
evet bu tarz bişi sanırım bunu istediğim şekilde düzenleyebilirim çok teşekkür ederim tekrardan



  Alıntı
Bu mesajı beğenenler:


Benzer Konular...
Konu: Yazar Cevaplar: Gösterim: Son Mesaj
  Kullanıcı tanımlı fonksiyon & Trigger çalışması Zeki Gürsoy 10 8.354 31-01-2017, 10:53
Son Mesaj: DogusOzan
  mssql sütün birleştirme hedefkaya 3 2.116 05-07-2016, 21:06
Son Mesaj: dsezgin
  Firebird (.FDB) Dosyasının MsSQL Server'e Aktarılması turakine 1 2.828 18-04-2016, 11:57
Son Mesaj: devilspath
  MsSql ODCB Bağlantı Sorunu kifkif 1 1.679 27-02-2016, 15:54
Son Mesaj: kifkif
  MsSql Access Bağlantısında Tarih Formatı Sorunu kifkif 6 4.475 31-12-2015, 16:56
Son Mesaj: dsezgin
access-sql-18 Trigger ile Gönderilen Sorguyu Yakalama atabass 1 2.012 22-07-2014, 14:51
Son Mesaj: deliyurek1905
  mssql veritabanı nasıl eklenir hedefkaya 6 3.824 13-03-2014, 14:38
Son Mesaj: Enigmatic
access-sql-9 bu trigger da nasıl omalı angelbir 7 4.272 05-05-2011, 09:03
Son Mesaj: angelbir

Foruma Git:


Bu konuyu görüntüleyen kullanıcı(lar): 1 Ziyaretçi