SQL Server – BCP ve SQLCMD ile Veri transferi gerçekleştirin..

By | 10 April 2013

Merhaba,

BCP : Sql Server üzerinden veri dosyası transfer etmek için kullanılır. Kullanımı için Başlat -> Çalıştır -> cmd -> bcp yazdığınızda bilgiler gelecektir.

SQLCMD : Microsoft SQL Server 2000 deki isql veya osql olarak bilinen aracın geliştirilmiş halidir. Sqlcmd T-SQL ifadelerini comandline (komut satırı) üzerinden çalıtırmamıza imkan vermektedir. Buradan girilien bilgiler istenildiği takdirde çıktı olarak alınabilir.

Şimdi bizler uygulamamıza başlıyoruz.

Öncelikli olarak ben TEST isimli veri tabanım da 2 adet procedure oluşturacağım bunlardan bir tanesi veri select edecek diğeri ise export işlemi gerçekleştirecek. BCPData isimli procedure oluşturuyoruz.

create proc BCPData as
select 'Çağlar' Ad,'Özenç' Soyad

oluşturduğumuz procedure çalıştırdığımızda Ad column da Çağlar Soyad column da ise Özenç bilgisi dönecektir. Şimdi ise asıl işlemimizi gerçekleştireceğimiz procedure yazalım. BCPExportData isimli procedure ise Export işlemi yapmamızı sağlayacaktır.

create proc BCPExportData as

declare @SQL  varchar(1000)
declare @DosyaYolu Varchar(100)
declare @DosyaAdi varchar(100)

SET    @DosyaYolu = 'C:BCP'

SET    @DosyaAdi = 'BCP_' +
       + CONVERT(VARCHAR, GETDATE(), 112) + '_' +
         CAST(DATEPART(HOUR, GETDATE()) AS VARCHAR) + '_' +
         CAST(DATEPART(MINUTE,GETDATE()) AS VARCHAR) + '.txt'

SET    @SQL =
       'SQLCMD -S (local) -E -d TEST -q "EXEC BCPData" -o "' +
       @DosyaYolu + @DosyaAdi +
       '" -h-1'

exec master..xp_cmdshell @SQL
GO

Yukarıdaki @SQL değişkeni içerisinde = değerinden sonra SQLCMD ile başlayan kısımda anlatılan Default instance kurulmuş bir bilgisayarıda TEST isimli database bağlanıp BCPData isimli procedure çalıştır denilmiştir.

Tanımlamalarımız bitti şimdi BCPExportData isimli procedure çalıştırdık ama hayır olamaz bir hata mesajı çıktı karşımıza..

Hata Mesajı :

Msg 15281, Level 16, State 1, Procedure xp_cmdshell, Line 1
SQL Server blocked access to procedure 'sys.xp_cmdshell' of component 'xp_cmdshell' because this component is turned off as part of the security configuration for this server. A system administrator can enable the use of 'xp_cmdshell' by using sp_configure. For more information about enabling 'xp_cmdshell', search for 'xp_cmdshell' in SQL Server Books Online.

Hata Çözümü :

EXEC sp_configure 'show advanced options', 1
GO
RECONFIGURE
GO
EXEC sp_configure 'xp_cmdshell',1
GO
RECONFIGURE
GO

Yukarıdaki yazılanları çalıştırdıktan sonra Procedure çalıştırdığımızda C:BCP isimli klasörün içerisine dosyanın oluştuğunu göreceksiniz.

Share

Leave a Reply

Your email address will not be published. Required fields are marked *