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

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

8 Kasım 2012 Perşembe

Soap Zarfının Header'ına Bilgi Eklemek

En temel haliyle bir web servisi:
using System.Web.Services;

namespace soapWebService
{
    [WebService(Namespace = "http://sanirimbuyok.blogspot.com/WebServisSoapHeader")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    public class Service1 : WebService
    {
        [WebMethod]
        public string HelloWorld()
        {
            return "Hello World";
        }
    }
}

Web Servisinin Temel Halinden Ne Nedir?

[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
If web service code aren't compliant to WS-I, it still don't generate compilation error, but it will generate error while client add or update web reference.


[WebService(Namespace = "http://tempuri.org/")]
In .NET programming, namespaces are used to prevent name collisions:

namespace A {public class C {}}

namespace B {public class C {}}


Even though the two classes are named "C", they really have different names. One is "A.C" and the other is "B.C". The use of namespaces has prevented a collision between the names.

XML namespaces like the one you're talking about have the same purpose, but for XML. It helps prevent name collisions.

You could start with a simple namespace like http://www.abc.com/, but the problem is that you may experience collisions even within your company. Instead, you may want to get more specific and use something like http://www.abc.com/services/serviceName. You're unlikely to have two names in your one service that collide with each other.

Buna Göre Oluşan İlk Reference.cs (Proxy Sınıfımız)


7 Kasım 2012 Çarşamba

Protokol Numarası Oluşturma Kuralları

SağlıkNet Jira

1-Üretme algoritmasına uygun olarak üretilmelidir.
2- Kurum türü SKRS kurumlar tablosunda olmalıdır.
3- Protokol No alanı içindeki ?Kurum Türü? kurum için ?A? semt polikliniği için ?S? olmalıdır.
4- Protokol No alanı içindeki ?Kurum Kodu? bölümü SKRS yayınlanan KURUMLAR tablosunda olmalıdır.
5- Protokol No alanı içindeki ?Klinik Kodu? bölümü SKRS yayınlanan KLİNİKLER tablosunda olmalıdır.
6- Protokol No alanı içindeki ?Klinik Alt Bölüm Numarası? her hastanenin klinik (ya da alt klinik) altında oluşturduğu alt birimleri kapsar, üç haneden oluşmalıdır.
7- Aile hekimleri klinik alt bölüm numarası olarak tek bir birim oldukları için ?001? kullanmalıdır.
8- Muayene türü bilgisi yapılan muayeneye göre eklenmelidir.
a- ) ilk muayene = A
b-) kontrol muayenesi = B
c-) Adli Muayene = C
d-) Trafik kazası sonrası muayene = D
e-) Acil Muayene = E
f-) Konsültasyon = F
şeklinde belirtilmelidir.
9- Protoko lNo alanı içindeki ?GünAyYıl? protokol numarasının üretildiği gün, ay, yıl bilgisidir. 9- Tarih bilgisi altı haneli olmalıdır. Gün iki hane, ay iki hane, yıl iki hane olmalıdır.
10- Protokol No alanı içindeki ?Sıradan Verilmiş Numara? her sene ?1? den başlamak üzere artan sırada üretilmiş olan numaradır ve sekiz haneli olmalıdır.
11- Tetkik sonucu MSVS dış bir laboratuvardan gönderiliyorsa, Laboratuvarın Protokol numarası olmalı,
12- Tetkik sonucu MSVS dış bir laboratuvardan gönderiliyorsa, talep eden kurumun Protokol numarası olmamalı,
13- Tetkik sonucu MSVS kurum içinden bir laboratuvardan gönderiliyorsa, Kurumun protokol numarası olmalı,

+İleri Tarih kontrolü eklenmeli