Sqlcmd -Q ile batch dosyası oluşturma ve Rapor Tetikleme
Merhaba arkadaşlar;
Sqlcmd -Q ile batch dosyası oluşturma ve Rapor Tetikleme
Merhaba arkadaşlar;
Netsis tarafında hazırlanan bir raporun (Stored Procedure) bat dosyası ile çalıştırılması sürecini anlatacağım.
ERP Süreçleriyle sürekli olarak uğraşanlar bilir, Sabit raporlar pek bir işe yaramaz, illaki rapora bakan yönetici bir eksik veya fazlalık bulur.
Netsiste Muavin raporunda hangi cari hesap ne kadar borç veya alacak bakiyesi vermiş’i alabilirsiniz. Fakay bütün 120 li hesaplar bazen borç bazen alacak bakiyesi verirken bazıları da 0 bakiye vererek hesap kapalı gözükmektedir.
Muhasebe departmanımız ilgili raporu netsis’den aldıktan sonra bakiye vermeyen hesapları yönetici istemediği için tek tek silmekle uğraşıyordu.Bu konuda bizden destek isteyen muhasebe biriminin işini kolaylaştırabilmek adına bir stored procedure yazmaya karar verdim. Rapor çıktısını sıralı bir biçimde oluşturmak, excel’de daha az takla atarak rapor çıktısını konforlu bir biçimde sunabilmek adına SP yaptım bilginize.
Ayrıca hesapların altında toplamların gözüktüğü toplam bakiyelerin de hesap bazında gözükebilmesi için bu çalışma yapıldı.
Şimdi size Stored Procedure’yi paylaşıyorum.
Öncelikle doldurulacak temp tabloyu şu şekilde.
CREATE TABLE MUAVIN_CIKTI(RN INT ,SIRA INT,FISNO NVARCHAR(50),HES_KOD NVARCHAR(50),TARIH NVARCHAR(50),ACIKLAMA NVARCHAR(500),BORCUTTAR DECIMAL(28,2),ALACAKTUTAR DECIMAL(28,2), TOPLAM DECIMAL(28,8),HESAP_ADI NVARCHAR(500))
alter PROC [dbo].[SP_HA_MUAVIN]
AS
CREATE TABLE #MUAVIN (FISNO NVARCHAR(50),HES_KOD NVARCHAR(50),TARIH NVARCHAR(50), ACIKLAMA NVARCHAR(500),BORCTUTAR DECIMAL(28,2),ALACAKTUTAR DECIMAL(28,2))
INSERT INTO #MUAVIN
select FISNO,HES_KOD,CONVERT(VARCHAR(50),TARIH,120),DBO.TRK(ACIKLAMA) ACIKLAMA, CASE WHEN BA=1 THEN TUTAR ELSE 0 END BORCTUTAR,CASE WHEN BA=2 THEN TUTAR ELSE 0 END ALACAKTUTAR
from TBLMUHFIS WITH(NOLOCK)
--WHERE AY_KODU=1
SELECT HES_KOD, SUM(BORCTUTAR) BORCUTUTAR ,SUM(ALACAKTUTAR) ALACAKTUTAR,SUM(BORCTUTAR) - SUM(ALACAKTUTAR) TOPLAM INTO #MUAVINTOPLAM FROM #MUAVIN GROUP BY HES_KOD
CREATE TABLE #S0NUC (SIRA INT,FISNO NVARCHAR(50),HES_KOD NVARCHAR(50),TARIH NVARCHAR(50), ACIKLAMA NVARCHAR(500),BORCTUTAR DECIMAL(28,2),ALACAKTUTAR DECIMAL(28,2),TOPLAM DECIMAL(28,2))
INSERT INTO #S0NUC
SELECT 1,* ,0 TOPLAM FROM #MUAVIN WITH(NOLOCK) WHERE HES_KOD NOT IN (SELECT HES_KOD FROM #MUAVINTOPLAM WHERE TOPLAM =0)
INSERT INTO #S0NUC
SELECT 2,'TOPLAM',HES_KOD,'','TOPLAM',BORCUTUTAR,ALACAKTUTAR,TOPLAM FROM #MUAVINTOPLAM WITH(NOLOCK) WHERE TOPLAM<>0
TRUNCATE TABLE MUAVIN_CIKTI
--CREATE TABLE MUAVIN_CIKTI(RN INT ,SIRA INT,FISNO NVARCHAR(50),HES_KOD NVARCHAR(50),TARIH NVARCHAR(50),ACIKLAMA NVARCHAR(500),BORCUTTAR DECIMAL(28,2),ALACAKTUTAR DECIMAL(28,2), TOPLAM DECIMAL(28,8),HESAP_ADI NVARCHAR(500))
SELECT ROW_NUMBER() OVER(ORDER BY FISNO ASC) AS Row,* INTO #T FROM #S0NUC ORDER BY HES_KOD,SIRA,FISNO
INSERT INTO MUAVIN_CIKTI
SELECT T.*,dbo.TRK(MP.HS_ADI)HS_ADI FROM #T T
INNER JOIN TBLMUPLAN MP ON MP.HESAP_KODU=T.HES_KOD ORDER BY HES_KOD,Row
GO
--EXEC [SSP_HA_MUAVIN]
Rapor çıktısı da şu şekilde.

Şimdi bu prosedürü nasıl manuel çalıştıracağız ondan bahsedelim.
sqlcmd -Q "exec SP_HA_MUAVIN" -S SUNUCUADRESI -d DBADI -o C:\bcikti.txt -U "USERNAME" -P "PASSWORD"
Text dosyaya bu kodları yazdıktan sonra bat olarak kaydetmeyi unutmayın.
Önemli Not : Bu arada sql cmd’nin çalışabilmesi için sql provider ayarlarını yapmak gerekiyor, internette nasıl yapıldığını bulabilirsiniz.
Rapor çalıştıktan sonra aşağıdaki ekran çıkıyor ve

Rapor tablosu dolduruluyor.
Eğer uygulamayı PowerShell ile çalıştırmak isterseniz aşağıdaki kodları da ps1 uzantılı dosya ile çalıştırabilirsiniz.
Invoke-Sqlcmd -ServerInstance "HAKTANPC" -Database "DBNAME" -Query "EXEC sys.sp_tables" -Username "USERNAME" -Password "PASSWORD"
Umarım faydalı olur.
메타데이터
- post_id
- 42fd371c7dea
- slug
- sqlcmd-q-ile-batch-dosyası-oluşturma-ve-rapor-tetikleme-42fd371c7dea
- url
- https://medium.com/@haktanakdag/sqlcmd-q-ile-batch-dosyas%C4%B1-olu%C5%9Fturma-ve-rapor-tetikleme-42fd371c7dea
- canonical_url
- https://medium.com/@haktanakdag/sqlcmd-q-ile-batch-dosyas%C4%B1-olu%C5%9Fturma-ve-rapor-tetikleme-42fd371c7dea
- author_url
- https://medium.com/@haktanakdag
- status
- ok
- fetched_at
- 2026-07-17 06:05:59