29 Eylül 2013 Pazar

SQL UPDATE YAPMA


 
UPDATE [tablo adı] SET [yeniveri] 
Örnek:

UPDATE TBLSTSABIT  SET BARKOD1 ='NULL'

Açıklama:
Ben yukardaki update kodu ile netsisde tblstsabit(stok kartları) tablosundakı tum stokların barkod değerlerini null olarak
değiştirdim

Where İle kısıt Verme:

örnek:

UPDATE tblstsabit SET SATIS_FIAT1='30' WHERE SATIS_FIAT1='15'

Açıklama:
Yukardaki sql cümlesinde dedimki tblstsabit(stok kartları) tablosunda satış fiyatı 15 olan tüm stok kartlarının fiyatını 30 lira yap.

bu cümle çalışması sonucu fiyatı 15 lıra olan bütün ürünler güncellenmiş olur.


And İle Çoklu Güncelleme:


UPDATE TBLSTSABIT SET SATIS_FIAT1=25 AND SATIS_FIAT2='20' WHERE KDV_ORANI=18

Açıklama:
Bu Komut İle tblstsabit(stok kartları) tablosunda k.d.v si 18 olan tüm stok kartlarının hem 1. satış fıyatı hemde
2. satış fiyatı tablolarını güncellemiş olduk.


Matematikse Verilerle Update:

UPDATE TBLSTSABIT SET SATIS_FIAT1=SATIS_FIAT1+10 WHERE KDV_ORANI=18


Açıklama:

Yukardaki Cümlede tblstsabit(stok kartları) tablosunda kdv oranı 18 olan tüm stok kartlarının hepsıne satış fiyatını + 10 lıra daha eklemiş olduk
burda dilerseniz çarpma çıkarma bölme gibi işlemlerlede yapabilirsiniz.

24 Eylül 2013 Salı

Instant File Initialization (HIZLI RESTORE)

Eğer Database Boyutu Yüksek ise ve siz çok üzün süre bekliyorsannız Instant File Initialization özelliğini kullanmıyorsunuzdur. Instant File Initialization = Anında Dosya Oluşturma Özelliği Denilir.
Instant File Initialization özelliğinin kullanılabilmesi için SQL Server service hesabının Local Group Policy’de Perform Volume Maintenance Tasks’a eklenmesi gerekmektedir. Bu ekrana Start>>All Programs>>Administrative Tools yolundan ulaşabilirsiniz. Servis hesabı eklendikten sonra servisin kapatılıp açılması gerekir.

Bu uygulama ne kadar hızlı diye şuan içinden kendi kendine soran arkadaşları duyar gibiyim.
ben size söyleyim en az 100 kat daha hızlı
bir müşterimizin 160 gb lık datasını Instant File Initialization olmadan 1 saat gibi bir sürede işlem yaparken
Instant File Initialization açık olduğunda 25 dk civarında surdu : )

21 Eylül 2013 Cumartesi

MSSQL DATABASE SUSPECT KURTARMA İŞLEMİ

Database Suspect genelde sunucularınızda olağan dışı durumlarda meydana gelen durumlarda kaynaklanır.
sunucunuzun arka arkaya yeniden başlamalar yada databasede olan tutarsız bir davranış gibi.

Not: Database suspect'e girmişse kesinlikle ama kesinlikle detach etmeyin yoksa bir daha o database'i kullanamazsınız.

Çoğu Blog ve forumdaki arkadaşlar uzattıkça uzatmışlar ama hepsini tek bir harekette yapabiliriz.

Kodumuz:

EXEC SP_RESETSTATUS 'BC2013'
GO
ALTER DATABASE BC2013 SET SINGLE_USER
GO
ALTER DATABASE BC2013 SET EMERGENCY
GO
DBCC CheckDB ('BC2013',REPAIR_ALLOW_DATA_LOSS)
GO
ALTER DATABASE BC2013 SET MULTI_USER

İşlem Bu kadar.



Netsis Log Silme

Bazen Log dosyası şişer ve ihtiyac duymazsınız log dosyasına o zmn sqlden silmek için yeni bir sorgu açın ve
delete from tblnetsislog komutunu çalıştırın tüm logları siler.


Netsis Dovizli bakiye wiev

Netsisde Dovizli çalışan firmalar için özel hazırlanmış bir wiewdır.
doviz bakiyeleri görmek için kullanılır.

CREATE VIEW DOVIZBAK
(
CARI_KOD,   --1
CARI_TIP,   --2
CARI_ISIM,  --3
GRUP_KODU,  --4
GRUP_ISIM,  --5
RAPOR_KODU1,--6
RAPOR_KODU2,--7
CARI_ADRES, --8
CARI_IL,    --9
CARI_ILCE,  --10
M_KOD,      --12
TARIH,      --13
BELGE_NO,   --14
HAREKET_TURU, --15
HKA,          --16
ACIKLAMA,     --17
VADE_TARIHI,  --18
BORC,         --19
ALACAK,       --20
BAKIYE,       --21
DOVIZ_TURU,   --22
DOVIZBORC,    --23
DOVIZALACAK,  --24
MIKTAR,       --25
OZELBFARK,    --26
OZELAFARK,    --27
KULL1N,       --28
KULL2N,       --29
KULL3N,       --30
KULL4N,       --31
KULL5N,       --32
KULL6N,       --33
KULL7N,       --34
KULL8N,       --35
KULL1S,       --36
KULL2S,       --37
KULL3S,       --38
KULL4S,       --39
KULL5S,       --40
KULL6S,       --41
KULL7S,       --42
KULL8S,       --43
KAPATILMIS_TUTAR,  --36
ODEME_GUNU,        --37
FIRMA_DOVIZ_TIPI,  --38
FIRMA_DOVIZ_TUTARI,--39
PLASIYER_KODU,     --40
RAPOR_KODU,        --41
DUZELTMETARIHI,    --42 MASTER ISTEK 25/05/1999
SABIT_DOVIZ_TIPI,   --43 ERICSSON ISTEK 02/07/1999
KOD1_ACIKLAMA,      --44 VARTA ISTEK
KOD2_ACIKLAMA,      --45 VARTA ISTEK
PROJE_KODU,
PROJE_ACIKLAMA,
PUAN,
SUBE_KODU
)
AS
SELECT
TBLCAHAR.CARI_KOD,
TBLCASABIT.CARI_TIP,
TBLCASABIT.CARI_ISIM,
TBLCASABIT.GRUP_KODU,
CAGRUP.GRUP_ISIM,
TBLCASABIT.RAPOR_KODU1,
TBLCASABIT.RAPOR_KODU2,
TBLCASABIT.CARI_ADRES,
TBLCASABIT.CARI_IL,
TBLCASABIT.CARI_ILCE,
TBLCASABIT.M_KOD,
TBLCAHAR.TARIH,
TBLCAHAR.BELGE_NO,
TBLCAHAR.HAREKET_TURU,
TBLCAHAR.HKA,
TBLCAHAR.ACIKLAMA,
TBLCAHAR.VADE_TARIHI,
TBLCAHAR.BORC,
TBLCAHAR.ALACAK,
(TBLCAHAR.BORC - TBLCAHAR.ALACAK),
TBLCAHAR.DOVIZ_TURU,
(CASE WHEN TBLCAHAR.BORC>0 THEN TBLCAHAR.DOVIZ_TUTAR ELSE 0 END),
(CASE WHEN TBLCAHAR.ALACAK>0 THEN TBLCAHAR.DOVIZ_TUTAR ELSE 0 END),
TBLCAHAR.MIKTAR,
(CASE WHEN TBLCAHAR.BORC>0 THEN
    (CASE WHEN TBLCASABIT.DOVIZLIMI<>'E' THEN (TBLCAHAR.BORC - TBLCAHAR.KAPATILMIS_TUTAR)
    ELSE (CASE WHEN TBLCAHAR.DOVIZ_TUTAR>0 THEN (TBLCAHAR.DOVIZ_TUTAR-TBLCAHAR.KAPATILMIS_TUTAR )
          ELSE (TBLCAHAR.BORC - TBLCAHAR.KAPATILMIS_TUTAR)END)END)
  ELSE 0 END),
(CASE WHEN TBLCAHAR.ALACAK>0 THEN
  (CASE WHEN TBLCASABIT.DOVIZLIMI<>'E' THEN (TBLCAHAR.ALACAK - TBLCAHAR.KAPATILMIS_TUTAR)
  ELSE (CASE WHEN TBLCAHAR.DOVIZ_TUTAR>0 THEN (TBLCAHAR.DOVIZ_TUTAR-TBLCAHAR.KAPATILMIS_TUTAR )
        ELSE (TBLCAHAR.ALACAK - TBLCAHAR.KAPATILMIS_TUTAR)END)END)
  ELSE 0 END),
TBLCASABITEK.KULL1N,
TBLCASABITEK.KULL2N,
TBLCASABITEK.KULL3N,
TBLCASABITEK.KULL4N,
TBLCASABITEK.KULL5N,
TBLCASABITEK.KULL6N,
TBLCASABITEK.KULL7N,
TBLCASABITEK.KULL8N,
TBLCASABITEK.KULL1S,
TBLCASABITEK.KULL2S,
TBLCASABITEK.KULL3S,
TBLCASABITEK.KULL4S,
TBLCASABITEK.KULL5S,
TBLCASABITEK.KULL6S,
TBLCASABITEK.KULL7S,
TBLCASABITEK.KULL8S,
TBLCAHAR.KAPATILMIS_TUTAR,
TBLCAHAR.ODEME_GUNU,
TBLCAHAR.FIRMA_DOVIZ_TIPI,
TBLCAHAR.FIRMA_DOVIZ_TUTARI,
TBLCAHAR.PLASIYER_KODU,
TBLCAHAR.RAPOR_KODU,
TBLCAHAR.DUZELTMETARIHI,
TBLCASABIT.DOVIZ_TIPI,
TBLCARIKOD1.GRUP_ISIM,
TBLCARIKOD2.GRUP_ISIM,
TBLCAHAR.PROJE_KODU,
PROJE.PROJE_ACIKLAMA,
TBLCAHAR.F_YEDEK1,
TBLCAHAR.SUBE_KODU
FROM
TBLCAHAR INNER JOIN TBLCASABIT TBLCASABIT ON (TBLCAHAR.CARI_KOD = TBLCASABIT.CARI_KOD)
LEFT OUTER JOIN CAGRUP CAGRUP ON (TBLCASABIT.GRUP_KODU=CAGRUP.GRUP_KOD)
LEFT OUTER JOIN TBLCARIKOD1 ON (TBLCASABIT.RAPOR_KODU1 = TBLCARIKOD1.GRUP_KOD)
LEFT OUTER JOIN TBLCARIKOD2 ON (TBLCASABIT.RAPOR_KODU2 = TBLCARIKOD2.GRUP_KOD)
INNER JOIN TBLCASABITEK ON (TBLCAHAR.CARI_KOD = TBLCASABITEK.CARI_KOD)
LEFT OUTER JOIN PROJE PROJE ON (TBLCAHAR.PROJE_KODU = PROJE.PROJE_KODU)

BİR ŞİRKETTEN DİĞER ŞİRKETE MUHASEBE PUANLARI KOPYALAMA. (NETSIS)

Netsisde yeni bir şirket oluşturdunuz ve eski şirketinizdeki muhasebe planlarının hepsini burayada atmanız gerekiyor mssql den bu işlemi 2 komut ile yapabilirsiniz
muhasebe planları netsisde 2 tane table'da tutulur 1.sı tblmuplan 2.si tblmuplanek
1-) MUPLAN Table
INSERT INTO BC2013.. TBLMUPLAN
(SUBE_KODU, ISLETME_KODU, HESAP_KODU, AGM, HS_ADI, HS_YD_ADI,
HS_GRKOD, OLCU_BIRIM, HS_BLKZ, CALIS_TIP, CALIS_BAG, DOVIZLIMI,
DOVIZ_TIPI, HESAPLAMATURU, DOVIZKONTROL, UPDATE_KODU, REFKODLU_CALIS, YEDEK1,
YEDEK2, YEDEK3, YEDEK4, YEDEK5, YEDEK6, YEDEK7, YEDEK8, YEDEK9, KAYITYAPANKUL,
KAYITTARIHI, DUZELTMEYAPANKUL, DUZELTMETARIHI, ONAYTIPI, ONAYNUM, ENF_FARK_HESKOD)


SELECT SUBE_KODU, ISLETME_KODU, HESAP_KODU, AGM, HS_ADI, HS_YD_ADI, HS_GRKOD,
OLCU_BIRIM, HS_BLKZ, CALIS_TIP, CALIS_BAG, DOVIZLIMI, DOVIZ_TIPI, HESAPLAMATURU,
DOVIZKONTROL, UPDATE_KODU, REFKODLU_CALIS, YEDEK1, YEDEK2, YEDEK3, YEDEK4,
YEDEK5, YEDEK6, YEDEK7, YEDEK8, YEDEK9, KAYITYAPANKUL, KAYITTARIHI,
DUZELTMEYAPANKUL, DUZELTMETARIHI, ONAYTIPI, ONAYNUM, ENF_FARK_HESKOD
 FROM BC2013..TBLMUPLAN
WHERE HESAP_KODU NOT IN (SELECT HESAP_KODU FROM KARLIM07..TBLMUPLAN)
AND HESAP_KODU BETWEEN '720' AND '771'

2-) MUPLANEK
INSERT INTO BC2013.. TBLMUPLANEK
(KOD, KAYITTARIHI, KAYITYAPANKUL, DUZELTMETARIHI, DUZELTMEYAPANKUL, KULL1N,
KULL2N, KULL3N, KULL4N, KULL5N, KULL6N, KULL7N, KULL8N, KULL1S, KULL2S, KULL3S,
KULL4S, KULL5S, KULL6S, KULL7S, KULL8S, YEDEK1, YEDEK2, YEDEK3, YEDEK4, YEDEK5,
YEDEK6, YEDEK7, YEDEK8, YEDEK9)
SELECT
KOD, KAYITTARIHI, KAYITYAPANKUL, DUZELTMETARIHI, DUZELTMEYAPANKUL,
KULL1N, KULL2N, KULL3N, KULL4N, KULL5N, KULL6N, KULL7N, KULL8N, KULL1S,
KULL2S, KULL3S, KULL4S, KULL5S, KULL6S, KULL7S, KULL8S, YEDEK1, YEDEK2, YEDEK3,
YEDEK4, YEDEK5, YEDEK6, YEDEK7, YEDEK8, YEDEK9
 FROM BC2013..TBLMUPLANEK
WHERE KOD NOT IN (SELECT KOD FROM KARLIM07..TBLMUPLANEK)
AND KOD BETWEEN '720' AND '771'

15 Eylül 2013 Pazar

SQL Server Network Üzerinden başka Bilgisayara Yedek alma


Öncelikle Bilgisayarınızda bi klasor açınben BRKYEDEK dıye ben bi klasor açtım ve ona SQL Server ile otomatik Backup Aldırtma görevi atadım sonra paylaşımda olan network ünüzdeki klasörü ağ sürücüsü ile bağlayın ve 
aşşağıdaki kodu .bat dosyası ile kaydedip çalıştırın

xcopy C:\BRKYEDEK\*.* Z:\YEDEKLER\%DATE%\ /E /Y

Bu komut sayesinde BRKYEDEK  Klasöründekileri ağ sürücüsü ile bağladığımız klasöre atıyor 

%DATE% Komutu sayesindede her yedek alırken o günün tarihli klasör ismi oluşturur
/E /Y Komutları  ise eger daha önce aynı isimde klasör açılmışsa üstüne yaz demektir.
bu bat dosyasınıda zamanlanmıs gorevlerden her gun yaptığınız zaman kullanıcı bir işlem yapmadan otomatık yedek alıyor.


Netsis Kur Tablosunu silip yeniden oluşturma

Netsis Kullanan ve dövizli çalışan firmalarda bazen doviz çekmez ve bu tablodan dolayı olabilir bu gibi durumlarda tabi önce database yedek alıyorsunuz yedeksiz bir şey yapmayın :)
yedek işlemi aldıktan sonra

drop komutu ile kur tabel ını kaldırıyoruz
DROP TABLE KUR

ve sonra tekrar 

CREATE TABLE KUR
(
 SIRA                                      INT IDENTITY(1,1) NOT FOR REPLICATION
                         CONSTRAINT KURPKEY PRIMARY KEY,
 BIRIM  INT default 0,
 ISIM   VARCHAR(30)
)

ile yeniden doviz table ını oluşturuyoruz.

SQL Server Backup Alma (QUERY)

Aşağıdaki kodda Netsis Yazan Kısım Database ismi d:\netsis_full.bak database yedeklenilecek yer ve yedek ismidir.

backup database Netsis to disk='D:\Netsis_Full.bak'

Table ve Constraint Create etmek için DDL Script Generate Etme

ilk SQL yazımda sizin için Bir sitede rastladığım 2 SP yi size göstermek istiyorum
ilk göstereceğim Script ile Netsis DB de bulunan table'lar için create scriptleri ve constraint create scriptleri generate edebiliyoruz
bu scriptleri drop ettikten sonra kullanarak tekrar create edebiliriz.
sonraki göstereceğim script ise yine table ve bu tableların constraintlerini  drop etme scriptlerini generate edebiliyorsunuz.


Sp Create Scripti

Kodumuz:
*********************************************************************************************
CREATE PROCEDURE [dbo].[usp_Create_Table_DDLs]
    (
        @sTable_Name        SYSNAME,
        @Create_Table_Ind    BIT = 1,
        @PK_Ind                BIT = 1,
        @FK_Ind                BIT = 1,
        @Check_Ind            BIT = 1,
        @Default_Ind        BIT = 1
    )
AS
BEGIN
    SET NOCOUNT ON

    DECLARE @Schema_Name        SYSNAME,
            @UniqueConstraints    BIT = 1,
            @sStr                VARCHAR(MAX)

    SELECT    @Schema_Name = SCHEMA_NAME(schema_id)
    FROM    sys.objects
    WHERE    name = @sTable_Name

    IF EXISTS (SELECT 1 FROM tempdb..sysobjects WHERE ID = OBJECT_ID('tempdb..#PKObjectID'))    DROP TABLE #PKObjectID
    IF EXISTS (SELECT 1 FROM tempdb..sysobjects WHERE ID = OBJECT_ID('tempdb..#Uniques'))        DROP TABLE #Uniques
    IF EXISTS (SELECT 1 FROM tempdb..sysobjects WHERE ID = OBJECT_ID('tempdb..#Constraints'))    DROP TABLE #Constraints
    IF EXISTS (SELECT 1 FROM tempdb..sysobjects WHERE ID = OBJECT_ID('tempdb..#ShowFields'))    DROP TABLE #ShowFields

    CREATE TABLE #Constraints (ID INT IDENTITY, Constraint_Type VARCHAR(100), SQL VARCHAR(8000), Column_Name SYSNAME DEFAULT '')

    ---------------------------------------------------------------------------
    ---------------------------------------------------------------------------

    -- Create table
    IF @Create_Table_Ind = 1
    BEGIN
        SELECT    FieldID                    = IDENTITY(INT,1,1),
                DatabaseName            = DB_NAME(),
                TableOwner                = TABLE_SCHEMA,
                TableName                = TABLE_NAME,
                FieldName                = COLUMN_NAME,
                ColumnPosition            = CAST(ORDINAL_POSITION AS INT),
                ColumnDefaultValue        = COLUMN_DEFAULT,
                ColumnDefaultName        = dobj.name,
                IsNullable                = CASE WHEN c.IS_NULLABLE = 'YES' THEN 1 ELSE 0 END,
                DataType                = DATA_TYPE,
                MaxLength                = CAST(CHARACTER_MAXIMUM_LENGTH AS INT),
                NumericPrecision        = CAST(NUMERIC_PRECISION AS INT),
                NumericScale            = CAST(NUMERIC_SCALE AS INT),
                DomainName                = DOMAIN_NAME,
                FieldListingName        = COLUMN_NAME + ',',
                FieldDefinition            = '',
                IdentityColumn            = CASE WHEN ic.object_id IS NULL THEN 0 ELSE 1 END,
                IdentitySeed            = CAST(ISNULL(ic.seed_value,0) AS INT),
                IdentityIncrement        = CAST(ISNULL(ic.increment_value,0) AS INT),
                IsCharColumn            = CASE WHEN DATA_TYPE NOT IN ('TEXT') AND st.collation_name IS NOT NULL THEN 1 ELSE 0 END
        INTO    #ShowFields
        FROM    INFORMATION_SCHEMA.COLUMNS            c
                JOIN sys.columns                    sc ON c.TABLE_NAME = OBJECT_NAME(sc.object_id) AND c.COLUMN_NAME = sc.Name
                LEFT JOIN sys.identity_columns        ic ON c.TABLE_NAME = OBJECT_NAME(ic.object_id) AND c.COLUMN_NAME = ic.Name
                JOIN sys.types                        st ON COALESCE(c.DOMAIN_NAME,c.DATA_TYPE) = st.name
                LEFT OUTER JOIN sys.objects            dobj ON dobj.object_id = sc.default_object_id AND dobj.type = 'D'
        WHERE    c.TABLE_NAME = @sTable_Name
        ORDER    BY c.TABLE_NAME, c.ORDINAL_POSITION

        
        SELECT    @sStr = 'CREATE TABLE ' + QUOTENAME(@Schema_Name) + '.' + QUOTENAME(@sTable_Name) + '('

        SELECT    @sStr = @sStr + 
                CHAR(10) + CHAR(9) + QUOTENAME(FieldName) + ' ' +
                    CASE
                        WHEN DomainName IS NOT NULL THEN DomainName + CASE WHEN IsNullable = 1 THEN ' NULL ' ELSE ' NOT NULL ' END
                        ELSE UPPER(DataType) 
                                + CASE WHEN IsCharColumn = 1 OR DataType IN ('Varbinary') THEN '(' + CASE WHEN MaxLength = -1 THEN 'MAX' ELSE CAST(MaxLength AS VARCHAR(10)) END + ')' ELSE '' END 
                                + CASE WHEN IdentityColumn = 1 THEN ' IDENTITY(' + CAST(IdentitySeed AS VARCHAR(5))+ ',' + CAST(IdentityIncrement AS VARCHAR(5)) + ')' ELSE '' END 
                                + CASE WHEN IsNullable = 1 THEN ' NULL ' ELSE ' NOT NULL ' END 
                                --+ CASE WHEN ColumnDefaultName IS NOT NULL AND @IncludeConstraints = 1 THEN 'CONSTRAINT [' + ColumnDefaultName + '] DEFAULT' + UPPER(ColumnDefaultValue) ELSE '' END
                    END + 
                    CASE WHEN FieldID = (SELECT MAX(FieldID) FROM #ShowFields) THEN '' ELSE ',' END
        FROM #ShowFields
        
        SELECT    @sStr = @sStr + ')'
                
        INSERT    INTO #Constraints (Constraint_Type, SQL)
        VALUES    ('CREATE_TABLE', @sStr)            
    END
    
    ---------------------------------------------------------------------------
    ---------------------------------------------------------------------------
    
    IF @PK_Ind = 1
    BEGIN
        PRINT 'Creating SQL for PK and Unique Constraints ...'

        -- Get Object ID of the PK
        SELECT    DISTINCT ObjectID = cco.object_id
        INTO    #PKObjectID
        FROM    sys.key_constraints            cco
                JOIN sys.index_columns        cc ON cco.parent_object_id = cc.object_id AND cco.unique_index_id = cc.index_id
                JOIN sys.indexes            i ON cc.object_id = i.object_id AND cc.index_id = i.index_id
        WHERE    OBJECT_NAME(parent_object_id) = @sTable_Name 
        AND        i.type = 1 
        AND        is_primary_key = 1

        ---------------------------------------------------------------------------

        -- Get Object ID of the Uniques
        SELECT    DISTINCT ObjectID = cco.object_id
        INTO    #Uniques
        FROM    sys.key_constraints            cco
                JOIN sys.index_columns        cc ON cco.parent_object_id = cc.object_id AND cco.unique_index_id = cc.index_id
                JOIN sys.indexes            i ON cc.object_id = i.object_id AND cc.index_id = i.index_id
        WHERE    OBJECT_NAME(parent_object_id) = @sTable_Name 
        AND        i.type = 2 
        AND        is_primary_key = 0 
        AND        is_unique_constraint = 1 

        ---------------------------------------------------------------------------

        INSERT    INTO #Constraints (Constraint_Type, SQL)
        SELECT    'PK_UNIQUE_CONSTRAINT',
                [PK_UNIQUE_CONSTRAINTS] = ISNULL('ALTER TABLE ' + QUOTENAME(s.name) + '.' + QUOTENAME(@sTable_Name) + ' ADD CONSTRAINT ' 
                    + QUOTENAME(cco.name )
                    + CASE    type WHEN 'PK' THEN ' PRIMARY KEY ' + CASE WHEN pk.ObjectID IS NULL THEN 'NONCLUSTERED ' ELSE 'CLUSTERED ' END
                                 WHEN 'UQ' THEN ' UNIQUE ' 
                     END 
                    + CASE    WHEN u.ObjectID IS NOT NULL THEN ' NONCLUSTERED ' ELSE '' END 
                    + '(' + REVERSE(SUBSTRING(REVERSE((
                                                        SELECT    c.name + + CASE WHEN cc.is_descending_key = 1 THEN ' DESC' ELSE ' ASC' END + ','
                                                        FROM    sys.key_constraints            ccok
                                                                LEFT JOIN sys.index_columns cc ON ccok.parent_object_id = cc.object_id AND cco.unique_index_id = cc.index_id
                                                                LEFT JOIN sys.columns        c ON cc.object_id = c.object_id AND cc.column_id = c.column_id
                                                                LEFT JOIN sys.indexes        i ON cc.object_id = i.object_id AND cc.index_id = i.index_id
                                                        WHERE    i.object_id = ccok.parent_object_id 
                                                        AND        ccok.object_id = cco.object_id
                                                        FOR        XML PATH('')
                                                     )
                                                     ), 2, 8000)) + ')', '')
        FROM    sys.key_constraints            cco
                INNER JOIN sys.schemas        s ON cco.schema_id = s.schema_id
                LEFT JOIN #PKObjectID        pk ON cco.object_id = pk.ObjectID
                LEFT JOIN #Uniques            u ON cco.object_id = u.objectID
        WHERE    OBJECT_NAME(cco.parent_object_id) = @sTable_Name
        AND        (type = 'PK'
        OR         type = CASE WHEN @UniqueConstraints = 1 THEN 'UQ' ELSE 'PK' END
                )
        --AND        s.name = @TableSchema
    END

    ---------------------------------------------------------------------------
    ---------------------------------------------------------------------------

    IF @FK_Ind = 1
    BEGIN
        PRINT 'Creating SQL for FK Constraints ...'

        -- Create all FKs for a table
        INSERT    INTO #Constraints (Constraint_Type, SQL)
        SELECT    'FK_CONSTRAINT',
                [FK_CONSTRAINTS] = 'ALTER TABLE ' + QUOTENAME(s.name) + '.' + QUOTENAME(o.name) + ' WITH CHECK ADD CONSTRAINT ' + QUOTENAME(a.name) + ' FOREIGN KEY (' + a.ParentColumns + ') REFERENCES ' + QUOTENAME(a.ReferencedSchema) +'.' + QUOTENAME(a.ReferencedObject) + '(' + a.ReferencedColumns + ')'
        FROM
            (
                SELECT    fk.OBJECT_ID as object_id,
                        ReferencedSchema    = SCHEMA_NAME(o.Schema_ID),
                        ReferencedObject    = OBJECT_NAME(fk.referenced_object_id), 
                        ParentObject        = OBJECT_NAME(fk.parent_object_id),
                        Name                = fk.name,
                        ParentColumns        = REVERSE(SUBSTRING(REVERSE((
                                                    SELECT    cp.name + ','
                                                    FROM    sys.foreign_key_columns fkc
                                                            JOIN sys.columns        cp    ON fkc.parent_object_id = cp.object_id AND fkc.parent_column_id = cp.column_id
                                                    WHERE    fkc.constraint_object_id = fk.object_id
                                                    FOR        XML PATH('')
                                                 )
                                                 ), 2, 8000)),
                        ReferencedColumns    = REVERSE(SUBSTRING(REVERSE((
                                                    SELECT    cr.name + ','
                                                    FROM    sys.foreign_key_columns fkc
                                                            JOIN sys.columns cr ON fkc.referenced_object_id = cr.object_id AND fkc.referenced_column_id = cr.column_id
                                                    WHERE    fkc.constraint_object_id = fk.object_id
                                                    FOR        XML PATH('')
                                                 )
                                                 ), 2, 8000)) 
                FROM    sys.foreign_keys fk
                        INNER JOIN sys.objects o ON fk.referenced_object_id = o.object_id
            ) a
            INNER JOIN sys.objects    co ON a.object_id = co.object_id            
            INNER JOIN sys.objects    o ON co.parent_object_id = o.object_id
            INNER JOIN sys.schemas    s ON o.schema_id = s.schema_id
        WHERE a.ParentObject = @sTable_Name
        ORDER BY a.name
    END

    ---------------------------------------------------------------------------
    ---------------------------------------------------------------------------

    IF @Check_Ind = 1
    BEGIN
        PRINT 'Creating SQL for Check Constraints ...'

        -- Create check constraints for all the columns of a table
        INSERT    INTO #Constraints (Constraint_Type, SQL)
        SELECT    'CHECK_CONSTRAINT',
                [CHECK_CONSTRAINTS] = 'ALTER TABLE ' + QUOTENAME(s.name) + '.' + QUOTENAME(o.name) + ' WITH CHECK ADD CHECK ' + cc.definition + ';'
        FROM    sys.check_constraints cc
                INNER JOIN sys.objects co ON cc.object_id = co.object_id
                INNER JOIN sys.objects o ON co.parent_object_id = o.object_id
                INNER JOIN sys.schemas s ON o.schema_id = s.schema_id
        WHERE    OBJECT_NAME(cc.parent_object_id) = @sTable_Name
        ORDER    BY o.name
    END

    ---------------------------------------------------------------------------
    ---------------------------------------------------------------------------

    IF @Default_Ind = 1
    BEGIN
        PRINT 'Creating SQL for Default Constraints ...'
            
        -- Create defaults for all the columns of a table
        INSERT    INTO #Constraints (Constraint_Type, Column_Name, SQL)
        SELECT    'DEFAULT_CONSTRAINT',
                Column_Name = c.name,
                [DEFAULT_CONSTRAINTS] = 'ALTER TABLE ' + QUOTENAME(s.name) + '.' + QUOTENAME(o.name) + ' ADD DEFAULT ' + sc.text + ' FOR ' + c.name
        FROM    syscomments    sc
                INNER JOIN syscolumns c ON sc.id = c.cdefault
                INNER JOIN sys.objects o ON c.id = o.object_id
                INNER JOIN sys.schemas s ON o.schema_id = s.schema_id
        WHERE    sc.id    IN    (
                                SELECT    cdefault 
                                FROM    syscolumns
                                WHERE    id = OBJECT_ID(@Schema_Name + '.' + @sTable_Name) 
                                AND        cdefault > 0
                            )
        ORDER    BY c.name
    END

    ---------------------------------------------------------------------------
    ---------------------------------------------------------------------------
    

    SELECT    * 
    FROM    #Constraints
    WHERE    (1 = 1
    OR         Constraint_Type = CASE WHEN @Default_Ind = 1    THEN 'DEFAULT_CONSTRAINT'        ELSE '' END
    OR         Constraint_Type = CASE WHEN @Check_Ind = 1        THEN 'CHECK_CONSTRAINT'            ELSE '' END
    OR         Constraint_Type = CASE WHEN @PK_Ind = 1        THEN 'PK_UNIQUE_CONSTRAINT'        ELSE '' END
    OR         Constraint_Type = CASE WHEN @FK_Ind = 1        THEN 'FK_CONSTRAINT'            ELSE '' END
            )
    ORDER    BY ID

    ---------------------------------------------------------------------------

    PRINT 'Complete.'
END
-- EXEC usp_Create_Table_DDLs @sTable_Name = 'MY_TABLE', @Create_Table_Ind = 1, @PK_Ind = 1, @FK_Ind = 1, @Check_Ind = 1, @Default_Ind = 1

GO
*********************************************************************************************
Kullanımına Bakılcak olursa
DB de bulunan (siparis.odemedetaylari) tablosu için create script generate etmek istersek aşağıdaki kodu kullanabiliriz.
Kodumuz:
*********************************************************************************************
EXEC usp_Create_Table_DDLs 
 @sTable_Name = 'siparis.odemedetaylari'
 , @Create_Table_Ind = 1
 , @PK_Ind = 1
 , @FK_Ind = 1
 , @Check_Ind = 1
 , @Default_Ind = 1

*********************************************************************************
Not:Parametrelerde bulunan 1 value değeleri scriptlerin generate edileceğini gösteriyor. Eğer değeri 0 yaparsanız o parametre ile alakalı scriptler generate edilmez.
şimdi

Table ve Constraint leri Drop etmek için DDL Script Generate Etme



Kodumuz:
CREATE PROCEDURE [dbo].[usp_Drop_Table_Constraints]
    (
        @sConstraint_Type    VARCHAR(50),        -- PK, FK, CK, DF
        @sDB_Name            SYSNAME,
        @sTable_Name        SYSNAME,
        @sColumn_Name        SYSNAME = NULL
    )
AS
BEGIN
    SET NOCOUNT ON
    
    DECLARE    @sSQL            VARCHAR(8000),
            @sStr            VARCHAR(1000)
    
    CREATE TABLE #Temp (
        Type                VARCHAR(50),
        DBName                SYSNAME,
        Schema_Name            SYSNAME,
        Table_Name            SYSNAME,
        Column_Name            SYSNAME DEFAULT '',
        Constraint_Name        SYSNAME,
        DROP_SQL            VARCHAR(8000)
    )

    -------------------------------------------------------------
    
    IF @sConstraint_Type = 'PK'
    BEGIN
        -- Drop PK
        SET @sSQL = '    
                        SELECT    DISTINCT Type        = ''PK'',
                                DBName                = ''' + @sDB_Name + ''',
                                Schema_Name            = s.name,
                                Table_Name            = p.name,
                                PK_Constraint_Name    = o.name,
                                DROP_SQL            = ''ALTER TABLE ' + @sDB_Name + '.'' + s.Name + ''.'' + c.Table_Name + '' DROP CONSTRAINT '' + c.CONSTRAINT_NAME
                        FROM    ' + @sDB_Name + '.INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE c
                                INNER JOIN ' + @sDB_Name + '.sys.objects o ON c.CONSTRAINT_NAME = o.name
                                INNER JOIN ' + @sDB_Name + '.sys.objects p on o.parent_object_id = p.object_id
                                INNER JOIN ' + @sDB_Name + '.sys.schemas s ON p.schema_id = s.schema_id
                        WHERE    c.TABLE_NAME = ''' + @sTable_Name + '''
                        AND        o.type = ''PK''
                    '
                    
        INSERT INTO #Temp (Type, DBName, Schema_Name, Table_Name, Constraint_Name, DROP_SQL)
        EXEC (@sSQL)
    END

    -------------------------------------------------------------

    ELSE IF @sConstraint_Type = 'FK'
    BEGIN
        -- Drop FK
        SET @sSQL = '
                        SELECT    DISTINCT Type        = ''FK'',
                                DBName                = ''' + @sDB_Name + ''',
                                Schema_Name            = s.name,
                                Table_Name            = p.name,
                                FK_Constraint_Name    = o.name,
                                DROP_SQL            = ''ALTER TABLE ' + @sDB_Name + '.'' + s.Name + ''.'' + c.Table_Name + '' DROP CONSTRAINT '' + c.CONSTRAINT_NAME
                        FROM    ' + @sDB_Name + '.INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE c
                                INNER JOIN ' + @sDB_Name + '.sys.objects o ON c.CONSTRAINT_NAME = o.name
                                INNER JOIN ' + @sDB_Name + '.sys.objects p on o.parent_object_id = p.object_id
                                INNER JOIN ' + @sDB_Name + '.sys.schemas s ON p.schema_id = s.schema_id
                        WHERE    c.TABLE_NAME = ''' + @sTable_Name + '''
                        AND        o.type = ''F''
                    '

        INSERT INTO #Temp (Type, DBName, Schema_Name, Table_Name, Constraint_Name, DROP_SQL)
        EXEC (@sSQL)
    END

    -------------------------------------------------------------
    
    ELSE IF @sConstraint_Type = 'CK'
    BEGIN
        -- Drop Check Constraint
        SET @sSQL = '    
                        SELECT    DISTINCT Type        = ''CK'',
                                DBName                = ''' + @sDB_Name + ''',
                                Schema_Name            = s.name,
                                Table_Name            = p.name,
                                Column_Name            = c.column_name,
                                CK_Constraint_Name    = o.name,
                                DROP_SQL            = ''ALTER TABLE ' + @sDB_Name + '.'' + s.Name + ''.'' + c.Table_Name + '' DROP CONSTRAINT '' + c.CONSTRAINT_NAME
                        FROM    ' + @sDB_Name + '.INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE c
                                INNER JOIN ' + @sDB_Name + '.sys.objects o ON c.CONSTRAINT_NAME = o.name
                                INNER JOIN ' + @sDB_Name + '.sys.objects p on o.parent_object_id = p.object_id
                                INNER JOIN ' + @sDB_Name + '.sys.schemas s ON p.schema_id = s.schema_id
                        WHERE    c.TABLE_NAME = ''' + @sTable_Name + '''
                        AND        o.type = ''C''
                    '
        INSERT INTO #Temp (Type, DBName, Schema_Name, Table_Name, Column_Name, Constraint_Name, DROP_SQL)
        EXEC (@sSQL)
    END

    -------------------------------------------------------------

    ELSE IF @sConstraint_Type = 'DF'
    BEGIN
        -- Drop Default Constraint
        SET @sSQL = '
                        SELECT    DISTINCT Type        = ''DF'',
                                DBName                = ''' + @sDB_Name + ''',
                                Schema_Name            = s.name,
                                Table_Name            = p.name,
                                Column_Name            = c.name,
                                DF_Constraint_Name    = o.name,
                                DROP_SQL            = ''ALTER TABLE ' + @sDB_Name + '..'' + p.name + '' DROP CONSTRAINT '' + o.name 
                        FROM    ' + @sDB_Name + '.sys.columns c 
                                INNER JOIN ' + @sDB_Name + '.sys.objects o on c.default_object_id = o.object_id
                                INNER JOIN ' + @sDB_Name + '.sys.objects p on o.parent_object_id = p.object_id
                                INNER JOIN ' + @sDB_Name + '.sys.schemas s ON p.schema_id = s.schema_id
                        WHERE    o.type = ''D'' 
                        AND        c.object_id = object_id(''' + @sDB_Name + '..' + @sTable_Name + ''')
                    '
        INSERT INTO #Temp (Type, DBName, Schema_Name, Table_Name, Column_Name, Constraint_Name, DROP_SQL)
        EXEC (@sSQL)
    END

    -------------------------------------------------------------
    
    SELECT    *
    FROM    #Temp

    -------------------------------------------------------------
    
END

/*

EXEC usp_Drop_Table_Constraints @sConstraint_Type = 'PK', @sDB_Name = 'MY_DATABASE', @sTable_Name = 'MY_TABLE'    -- Drop PK
EXEC usp_Drop_Table_Constraints @sConstraint_Type = 'FK', @sDB_Name = 'MY_DATABASE', @sTable_Name = 'MY_TABLE'    -- Drop FKs
EXEC usp_Drop_Table_Constraints @sConstraint_Type = 'CK', @sDB_Name = 'MY_DATABASE', @sTable_Name = 'MY_TABLE'    -- Drop Check Constraints
EXEC usp_Drop_Table_Constraints @sConstraint_Type = 'DF', @sDB_Name = 'MY_DATABASE', @sTable_Name = 'MY_TABLE'    -- Drop Default Constraints

*/

GO
*********************************************************************************************

Örneğin db de bulunan siparisodemedetaylari tablosundaki Primary Key constraint leride drop script generate etmek istersek aşağıdaki kodu kullanabiliriz.
*********************************************************************************************

EXEC usp_Drop_Table_Constraints 
 @sConstraint_Type = 'PK'
 , @sDB_Name = 'Netsis'
 , @sTable_Name = 'siparisodemedetaylari '

*********************************************************************************************
Gene aynı şekilde Foreign Key(FK),Check(CK) ve Default(DF) Constraint leri için drop etmek istersek aşağıdaki scriptleri kullanabilirsiniz.
-- Drop FKs
EXEC usp_Drop_Table_Constraints 
 @sConstraint_Type = 'FK'
 , @sDB_Name = 'Netsis'
 , @sTable_Name = 'siparisodemedetaylari'
-- Drop Check Constraints
EXEC usp_Drop_Table_Constraints 
 @sConstraint_Type = 'CK'
 , @sDB_Name = 'Netsis'
 , @sTable_Name = 'siparisodemedetaylari'
-- Drop Default Constraints
EXEC usp_Drop_Table_Constraints 
 @sConstraint_Type = 'DF'
 , @sDB_Name = 'Netsis'
 , @sTable_Name = 'siparisodemedetaylari'
*********************************************************************************************
bu komutları kullandıktan sonra işlemlerimiz bitmiştir. hayırlı uğurlu olsun