Aklımda Kalası Kelimeler

* давайте работать вместе
* Zarf ve Mazruf, Zerafet(xHoyratlık) ile aynı kökten(za-ra-fe) gelir
* Bedesten
* Suç subuta ermiştir - Suç sabit olmuştur
Database etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Database etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

20 Kasım 2012 Salı

Database içindeki tüm tablolar için LOG tablosuna değişimleri kaydetmek için Veritabanı seviyesinde(TRIGGER temelli) LOGLAMA

Log Tablosu
USE [ZapaZupaVeritabani]
GO

/****** Object:  Table [dbo].[Loglar]    Script Date: 11/20/2012 21:22:07 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

SET ANSI_PADDING ON
GO

CREATE TABLE [dbo].[Loglar](
 [log_id] [int] IDENTITY(1,1) NOT NULL,
 [logTarih] [datetime] NULL,
 [logIslem] [tinyint] NULL,
 [trgKullanici_id] [varchar](50) NULL,
 [tabloAdi] [varchar](250) NULL,
 [logXml] [xml] NULL,
 CONSTRAINT [PK_Logla] PRIMARY KEY CLUSTERED 
(
 [log_id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

SET ANSI_PADDING OFF
GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'1: INSERT, 2: UPDATE, 3: DELETE' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Loglar', @level2type=N'COLUMN',@level2name=N'logIslem'
GO

ALTER TABLE [dbo].[Loglar] ADD  CONSTRAINT [DF_Logla_tarih]  DEFAULT (getdate()) FOR [logTarih]
GO

ALTER TABLE [dbo].[Loglar] ADD  CONSTRAINT [DF_Loglar_logIslem]  DEFAULT ((1)) FOR [logIslem]
GO

Her tablo için INSERT, UPDATE, DELETE tetikleyicisini otomatik oluşturma
USE medula_V3
DECLARE @sInsert AS NVARCHAR(MAX)
DECLARE @sUpdate AS NVARCHAR(MAX)
DECLARE @sDelete AS NVARCHAR(MAX)
DECLARE @trigName AS NVARCHAR(200)
DECLARE @tableName AS NVARCHAR(200)

DECLARE crTabloAdlari CURSOR FOR
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES 
OPEN crTabloAdlari
FETCH NEXT FROM crTabloAdlari INTO @tableName
 
WHILE @@Fetch_Status = 0
BEGIN
print @tableName + ' -  '+CAST(CHARINDEX('Log',@tableName) AS VARCHAR(20))

 IF CHARINDEX('Log',@tableName)= 0 AND CHARINDEX('sys',@tableName)= 0 
 BEGIN

  SET @sInsert = 'CREATE TRIGGER [dbo].[Insert'+@tableName+']   ON  dbo.'+@tableName+'   AFTER INSERT AS BEGIN DECLARE @logIslem TINYINT SET @logIslem = 1 SET NOCOUNT ON DECLARE @tableName VARCHAR(200) SELECT @tableName = OBJECT_SCHEMA_NAME( parent_id ) + ''.'' + OBJECT_NAME( parent_id ) FROM sys.triggers WHERE object_id = @@PROCID DECLARE @after AS XML  SET @after = ''<''+@tableName+''>''+ (select * from inserted for xml AUTO,ELEMENTS XSINIL)+''''   INSERT INTO [dbo].[Loglar]           ([logIslem]  ,[trgKullanici_id]  ,[tabloAdi]  ,[logXml])     VALUES           (@logIslem  ,SUSER_NAME()  ,@tableName  ,@after) END'
  SET @sUpdate = 'CREATE TRIGGER [dbo].[Update'+@tableName+']   ON  dbo.'+@tableName+'   AFTER UPDATE AS BEGIN DECLARE @logIslem TINYINT SET @logIslem = 2 SET NOCOUNT ON DECLARE @tableName VARCHAR(200) SELECT @tableName = OBJECT_SCHEMA_NAME( parent_id ) + ''.'' + OBJECT_NAME( parent_id ) FROM sys.triggers WHERE object_id = @@PROCID  DECLARE @allXml AS XML SET @allXml = ''<''+@tableName+''>''+ (select * from deleted for xml AUTO, ELEMENTS XSINIL)  + (select * from inserted for xml AUTO,ELEMENTS XSINIL) +''''  INSERT INTO [dbo].[Loglar]           ([logIslem]  ,[trgKullanici_id]  ,[tabloAdi]  ,[logXml]) VALUES (@logIslem  ,SUSER_NAME()  ,@tableName  ,@allXml) END'
  SET @sDelete = 'CREATE TRIGGER [dbo].[Deleted'+@tableName+']   ON  dbo.'+@tableName+'   AFTER DELETE AS BEGIN DECLARE @logIslem TINYINT SET @logIslem = 3 SET NOCOUNT ON DECLARE @tableName VARCHAR(200) SELECT @tableName = OBJECT_SCHEMA_NAME( parent_id ) + ''.'' + OBJECT_NAME( parent_id ) FROM sys.triggers WHERE object_id = @@PROCID  DECLARE @allXml AS XML SET @allXml = ''<''+@tableName+''>''+ (select * from deleted for xml AUTO, ELEMENTS XSINIL)  +''''  INSERT INTO [dbo].[Loglar]           ([logIslem]  ,[trgKullanici_id]  ,[tabloAdi]  ,[logXml])     VALUES           (@logIslem  ,SUSER_NAME()  ,@tableName  ,@allXml)END'

  print @sInsert
  exec  sp_executesql @sInsert
  print @sUpdate
  exec  sp_executesql @sUpdate
  print @sDelete
  exec  sp_executesql @sDelete
 END
FETCH NEXT FROM crTabloAdlari INTO @tableName
END
 
CLOSE crTabloAdlari
DEALLOCATE crTabloAdlari
GO

Database içindeki tüm TRIGGER ları silmek

DECLARE @dbName AS NVARCHAR(MAX)
SET @dbName = 'AdventureZapaZupa'
DECLARE @sqlUse AS NVARCHAR(MAX)
SET @sqlUse = N'use '+@dbName
EXEC sp_executesql @sqlUse

DECLARE @sDelete AS NVARCHAR(MAX)
DECLARE @trigName AS NVARCHAR(200)
DECLARE @tableName AS NVARCHAR(200)
DECLARE @sql AS NVARCHAR(MAX)
  
DECLARE crTrigs CURSOR FOR
  SELECT name FROM sys.triggers order by name 
  
 OPEN crTrigs
  FETCH NEXT FROM crTrigs INTO @trigName
  
  WHILE @@FETCH_STATUS = 0
 BEGIN   
  SET @sql = N'use '+@dbName+' DROP TRIGGER [dbo].[' + @trigName + ']'
  EXEC sp_executesql @sql
    FETCH NEXT FROM crTrigs INTO @trigName
  END
   
 CLOSE crTrigs
DEALLOCATE crTrigs

31 Mart 2011 Perşembe

Normalize olmuş bir yapının resmi

21 Kasım 2009 Cumartesi

Java da Veritabanı, Tablo, Kayıt, Connection Pool ve Resource Oluşturulması.

Yapmak istediğimiz şey:
JavaDB içinde
  1. bir veritabanı oluşturmak
  2. ve içine bir tablo
  3. ve bir kaç kayıt ekleyip,
  4. Glass Fish application server ında Connection Pool oluşturup
  5. Resource a bağlamak.
Önce JavaDb servisini başlatalım.

Başladı :)

Bir veritabanı oluşturalım :


VT nin bilgilerini girelim:


Oluştu ama ben yukarıdaki username ve password ile oluşturmadım. Bakın "admin on ADMIN" yazıyor. Kullanıcı adı admin, şifresini de adminadmin olarak oluşturdum. Şimdi bu DB ye bağlanalım.




Bağlandık. İçine bir tablo ekleyelim:



Ekledik:




Bir kaç kayıt ekledik. Insert Into ile. View Data ile içeriğini görelim:

VT mizin özelliklerini görüyoruz:



Glass fish application server ımıza bağlanıyoruz ve yeni bir connection pool oluşturuyoruz :


Adını, kaynağın tipini ve VT yi seçip devam ediyoruz:

Kendi Datasource Classname i gösterdi. Detaylı değişiklikler yapılabilir ama biz yapmıyoruz. Sadece attribute lerini düzenliyoruzki hangi DB yi hangi kullanıcı adı ve şifresi ile hangi URL üzerinden erişebilecek girelim:


İşte o değişiklikler:


Artık Connection Pool eklendi.


Şimd bu poolu gösterecek bir Resource oluşturacağız.



O işte tamamdır. Artık JNDI adını bir test edelim. Ping ile erişebilecek miyiz? A işte oldu :)

İşte bu kadar.