SQL Server üzerinde farklı kaynaklardan data transferi, toplu aktarımlar ve yerel iÅŸlemler için çoÄŸu zaman Data Transformation Services (DTS) denilen Veri Transfer Servisini kullanırız. Hatta bu servis aracılığıyla hazırladığımız paketleri SQL Server Agent yönetiminde Job iÅŸlemlerine alarak belli peryotlarda çalışmasını saÄŸlarız. Özellikle kurumsal uygulamalarda dağıtık kaynaklardan belli anlarda verileri çekmek ve üzerinde iÅŸlem yaparak yerel veritabanlarına kaydetmek için DTS’ler vazgeçilmez bir alışkanlık haline gelir. MSDB veritabanında tutulan bu paketler, sunduÄŸu zengin connection provider ve tasklarla ciddi bir kolaylık saÄŸlar. Bu bölümde DTS paketleri içindeki genel deÄŸiÅŸken tanımlamanın nasıl yapılacağını ve dışardan DTS’lerin nasıl parametrik haline getirileceÄŸini göreceÄŸiz.
DTS paketlerinde global deÄŸiÅŸkenler(global variable), iÅŸlemleri dinamikleÅŸtirmeyi saÄŸlar. Connection String’ten tutun da çalışacak Sql Query’lerine veya IO iÅŸlemlerine kadar birçok iÅŸ dinamik hale getirilebilir. Global deÄŸiÅŸkenler, DTS’leri dinamik kıldığı gibi diÄŸer packagelerden deÄŸiÅŸken gönderilmesini, bir tasktan diÄŸer taska veri taşınmasını kısaca DTS’i modüler hale getirir.
Global deÄŸiÅŸkenleri, DTS paketlerinde ActiveX script içerisinde kullanabileceÄŸimiz gibi doÄŸrudan tasklar içerisinde çalışacak Sql Query’leri tasarlarken de kullanabiliriz. Öncelikle Sql Server Enterprise Manager’dan Data Transformation Services bölümünden Local Packages’i saÄŸ tıklayıp New Package üzerinden yeni bir DTS paketi oluÅŸturalım. DTS içerisinde saÄŸ tıklayıp Package Properties bölümüne girelim. Buradaki Global Variables sekmesinde string türünde Magaza ve Date türünde Tarih isminde iki genel deÄŸiÅŸken tanımlayacağız. Ayrıca default deÄŸer vermemiz de doÄŸru olur.
Hazırladığımız genel değişkenlerin değerini okumak için Task bölümünden ActiveX Script Task nesnesini çalışma alanına taşıyalım. Genel değişkenleri DTSGlobalVariables nesnesiyle çağırabiliriz.
Global değişkenlerin default olarak case sensitive olduğunu unutmamalıyız.
Bu işlemden sonra çalışma alanının üst kısmında Execute düğmesine basıp çalıştırdığımızda Magaza değişkeninin değerini okumuş oluruz.
Bu ÅŸekilde dışardan bazı deÄŸerler alıp IO iÅŸlemlerini yapabiliriz. Nitekim ActiveX scriptler daha çok IO iÅŸlemler yapmak için kullanılır. Biz, burada bu deÄŸiÅŸkenleri Sql Query içerisinde kullanacağız. Bu amaçla DTS alanına bir Microsoft OLE DB Provider for SQL Server nesnesi taşıyıp lokaldeki sql server için bir database baÄŸlantısı oluÅŸturalım. Ardından bu baÄŸlantıyı kullanarak çalışacak bir query oluÅŸturmak için Task bölümünde Execute SQL Task ikonu taşıyalım. Bu task içerisinde bende bulunan CUSTOMER tablosunu sorgulayacağım. Bu querynin dışardan argüman olarak aldığı maÄŸazanın yine dışardan aldığı tarihteki müşterilerini baÅŸka bir tabloya aktarmasını istiyorum. Query’i yazarken parametrik deÄŸerlerin yerine “?” simgesini ekliyoruz. 
Ardından pencerenin altındaki parameters butonunu tıklayarak parametreleri sırasıyla eşleştirelim. 
Daha sonra DTS’i kayıtedelim. DTS paketini AKAYMAZ\AKAYMAZ isminde Sql Server’da MusteriAktar ismiyle kaydettim.
DTS paketleri doÄŸrudan SQL Server’da database yapılarının bir parçası olmadığı için T-SQL kodlarıyla çalıştırmak yerine DTSRUN ismindeki batch dosyasıyla çalıştırırız. DTSRUN komutu, hangi sunucuda hangi DTS’i hangi argümanlarla çalıştırılacağına dair bir çok bilgiyi parametre olarak alır.
Bu DTS’i aÅŸağıdaki syntax ile çağırabiliriz.DTSRun /S "AKAYMAZ\AKAYMAZ" /N "MusteriAktar" /A "Magaza":"8"="M02" /A "Tarih":"7"="20.02.2006" /W "0" /E
/S = Server adı, WINS ismi veya IP Adresi
/N = Package adı
/A = global variable, her değişken için tekrar eder
“:8″ string deÄŸerin geçileceÄŸini
“:7″ Date türünde deÄŸerin geçileceÄŸini
/E = trusted login bunu yerine /U ve /P kullanılarak username ve password girilebilirdi.
DTSRUN ifadesinin bu ÅŸekilde oluÅŸturulması hepimize zor gelir. Bunun için günlük hayatımda kolaylıklar saÄŸlayan DTSRUNUI toolunu tavsiye ederim. DTSRUN syntaxını görsel ortamda oluÅŸturan bu araçta hem parametreleri hem de schedule iÅŸlemleri rahatlıkla yapılabiliri. Command Prompt üzerinden DTSRUNUI’yi çalıştıralım. Burada Sql Server sunucunu seçtikten sonra Package name bölümünü tıklayıp sistemdeki DTS’lerden aradığımız paketi seçelim. 
Ardından Advanced bölümünden ek özelliklere ulaÅŸalım. Buradaki Variables bölümünden ÅŸekildeki gibi argümanları set edelim. Ve OK butoununu tıklamadan alt taraftaki Generate butonunu kullanarak DTSRUN’a ait syntax elde edelim.




Ekim 16th, 2007 at 11:00
peki ustad bunu mssql server 2005 nasıl yapabiliriz. acıklarsan cok ii olur.emegine salık kolay gelsin
Ekim 16th, 2007 at 13:16
Ramazan bey, aynı iÅŸlemleri SQL Server 2005 içindeki DTS package’ler için de yapabilirsiniz. EÄŸer Microsoft SSIS (DTS) package için bir çalışma yapacaksanız aÅŸağıdaki linki tavsiye edebilirim
http://www.codeproject.com/useritems/global-variable-in-SSIS.asp
Nisan 6th, 2009 at 23:11
Ahmet Bey,
SQL Server 2000′de kullandığımız harici bir dll vardı. SQL Server 2005′in 64 bitini kurduk. Job içerisinde ActiveX Script olarak kullandığımız bu dll “ActiveX component can’t create object” hatası veriyor.
Nisan 7th, 2009 at 07:43
Eğer kullandığınız componentlerin 64 bit uyarlaması yok ise 64 bit (x64) ortamında 32 bit(x86) tabanlı işlemleri yaptırabilirsiniz. Örneğin script kodlarınızı bir vbs dosyasına kaydedip %SystemRoot%\SysWOW64\cscript.exe komutuyla çalıştırabilirsiniz. Scriptleri çalıştıran cscript.exe programının 32bit versiyonu C:\WINDOWS\SysWOW64\ klasöründe, 64 bit versiyonu C:\WINDOWS\System32 klasöründe bulunur. x64 tabanlı işletim sisteminde default olarak System32 klasörü kullanılır.