Bulk Insert , metin Dosyasındaki veriyi, SQL Server da bir tabloya aktarmak amacı ile kullandığımız T-SQL deyimidir.
SQLPASS
SQL Server Günlüğüm Orhan AKDOĞAN, En iyi SQL Server Community lerinden olan SQLPASS Blog listesine girmiştir.
Teşekkürler SQLPASS.
Saat, Gün, Ay ve Yıl şeklinde Dinamik Tarih Tablosu oluşturma
Uygulama geliştirirken, rapor sorgularında, raporların grafiksel sunumunda, tablomuzda kullanılmamış tarih birimlerini listelemek, rapora dahil etmek isteyebiliriz.
Aşağıdaki SQL function sayesinde belirlediğimiz iki tarih-saat arasındaki tüm saatleri, günleri, ayları ve yılları bir tablodan sonuç döndürür gibi listeyebilirsiniz.
Function ı oluşturmanız için gerekli create sorgusu:
CREATE Function [dbo].[TarihTablosu] ( @baslangic datetime, @bitis datetime, @tur char(5) --'saat', 'gün', 'ay', 'yıl' değerlerini alabilir.Default değer 'gün' dür. ) Returns @Result Table ( [Tarih] datetime ) As Begin Declare @bugun datetime Set @bugun=@baslangic While @bugun<=@bitis Begin Insert Into @Result Values (@bugun) Select @bugun= Case When @tur='yıl' Then DateAdd(yy,1,@bugun) When @tur='ay' Then DateAdd(mm,1,@bugun) When @tur='saat' Then DateAdd(hh,1,@bugun) Else DateAdd(dd,1,@bugun) End End Return End GO
Kullanımı:
set dateformat dmy
Select tarih From dbo.TarihTablosu('01.01.2010','01.05.2010','ay')
Bu örnek sorgu 5 farklı ayı tarih sonucu şeklinde döndürecektir.
Result:
2010-01-01 00:00:00.000
2010-02-01 00:00:00.000
2010-03-01 00:00:00.000
2010-04-01 00:00:00.000
2010-05-01 00:00:00.000
Rapor sorgularınızda, kendi tablonuzu, bu function tablosuna left join olarak ilişkilendirerek
sonuç dönmeyen tarihlerinizi raporda 0 olarak gösterebilir ve daha pek çok amaçla bu functionu kullanabilirsiniz.
Bir örnekte saat ile ilgili yapalım:
set dateformat dmy
Select tarih From dbo.TarihTablosu('04.05.2010',GETDATE(),'saat')
Bu sorgu ilede bugün, şu ana kadar geçen saat dilimlerini listeliyoruz.
Result:
2010-05-04 00:00:00.000
2010-05-04 01:00:00.000
2010-05-04 02:00:00.000
Benzer şekilde günleri ve yılları tablo olarak döndürebilirsiniz.
Sql Server Collation Değiştirme
Database Collation Değiştirme:
Sql Server ‘da, bir veritabanının collation türünü “Turkish_CI_AS” e çevirmek için,
ALTER DATABASE [VeritabaniAdi] COLLATE Turkish_CI_AS
sorgusunu kullanabilirsiniz.Eğer “The database could not be exclusively locked to perform the operation” şeklinde bir hata alırsak, çok kullanıcılı veritabanlarında karşılaştığımız bu hatayı;
ALTER DATABASE [VeritabaniAdi] SET SINGLE_USER WITH ROLLBACK IMMEDIATE ALTER DATABASE [VeritabaniAdi] COLLATE Turkish_CI_AS ALTER DATABASE [VeritabaniAdi] SET MULTI_USER
sorgusuyla çözebiliriz.
Server Collation Değiştirme:
Kurulum dizinimizdeki Setup.exe yi komut isteminde kullanarak kısa bir süre içerisinde bu işlemi tamamlayabiliriz.
ilk olarak tüm veritabanlarının yedeğini alalım ve tüm userların create cümleciklerini yedek de tutalım.
Yedeklerimiz tamamsa aşağıdaki içeriği .bat uzantılı dosya haline getirip çalıştırarak işlemi tamamlayalım.
Artık Server Collation yanında system veritabanlarının da (master,model,msdb ve temdb) Collation değeri değişmiş olacaktır.İşlem sonrasında tüm Kullanıcı veritabanları kendiliğinden detach olur, yeniden attach edebilirsiniz.
SQL Server 2005 için:
c: cd \ cd "C:\Program Files\Microsoft SQL Server\90\Setup Bootstrap" start /wait setup.exe /qb INSTANCENAME=MSSQLSERVER REINSTALL=SQL_Engine REBUILDDATABASE=1 SAPWD="yenisifre" SQLCOLLATION=TURKISH_CI_AS
SQL Server 2008 için:
c: cd \ cd "C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\Release" setup.exe /q /ACTION=RebuildDatabase /INSTANCENAME=MSSQLSERVER /SAPWD="yenisifre" / SQLSYSADMINACCOUNTS="BUILTIN\ADMINISTRATORS" /SqlCollation=TURKISH_CI_AS
İşlem sonucunda her hangi bir hata söz konusu olur ise hata detayını ,
“C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\Log” dizinindeki,
Summary.txt dosyasından gözlemleyebilirsiniz.
SQL Server 2008 R2, e-Book
Microsoft Press, SQL Server 2008 R2 sürümü için ücretsiz bir eBook yayınladı.
Introducing Microsoft SQL Server 2008 R2 (Ross Mistry, Stacia Misner)
Kitap 10 Bölüm ve 216 sayfadan oluşuyor.
İçerik:
PART I Database Administration
1.Bölüm SQL Server 2008 R2 Editions and Enhancements
2.Bölüm Multi-Server Administration
3.Bölüm Data-Tier Applications
4.Bölüm High Availability and Virtualization Enhancements
5.Bölüm Consolidation and Monitoring
PART II Business Intelligence Development
6.Bölüm Scalable Data Warehousing
7.Bölüm Master Data Services
8.Bölüm Complex Event Processing with StreamInsight
9.Bölüm Reporting Services Enhancements
10.Bölüm Self-Service Analysis with PowerPivot
Aşağıdaki linklerden e-Book’u indirebilirsiniz.
Kaynak:
.
SQL Server 2008 Replace
SQL Server 2008 öncesinde, Replace fonksiyonunun üç parametresinin de sağındaki boşluklar otomatik olarak siliniyordu. SQL Server 2008′ de bu durum değişti. Artık boşluklar otomatik olarak silinmiyor.
Aynı şekilde kullanmak istiyorsak Rtrim fonksiyonundan yardım almalıyız,
Replace(rtrim(param1), rtrim(param2), rtrim(param3))
Stored Procedure Listesi
Veritabanındaki Store procedure lerinizi isim ve query text şeklinde listelemek için aşağıdaki sorguyu kullanabilirsiniz.
SELECT cp.objtype AS ObjectType, OBJECT_NAME(st.objectid,st.dbid) AS ObjectName, cp.usecounts AS ExecutionCount, st.TEXT AS QueryText, qp.query_plan AS QueryPlan FROM sys.dm_exec_cached_plans AS cp CROSS APPLY sys.dm_exec_query_plan(cp.plan_handle) AS qp CROSS APPLY sys.dm_exec_sql_text(cp.plan_handle) AS st WHERE cp.objtype=’Proc’ ORDER BY OBJECT_NAME(st.objectid,st.dbid)
Veritabanı Tablo ve satır sayısı listesi
Aşağıdaki sorgu çalıştığı veritabanındaki tablo listesini satır sayısı ile birlikte döndürür.
SELECT OBJECT_NAME(OBJECT_ID) [Tablo Adı], st.row_count as[Satır Sayısı] FROM sys.dm_db_partition_stats st WHERE index_id < 2 AND OBJECT_NAME(OBJECT_ID) NOT LIKE '%sys%' ORDER BY st.row_count DESC
Veritabanı Yedeklerini Listeleme
Bir veritabanına ait alınan yedekleri listemek isterseniz aşağıdaki sorguyu kullanabilirsiniz.
SELECT msdb.dbo.backupset.name as [Yedek Adı] , msdb.dbo.backupset.backup_size as Boyut, msdb.dbo.backupset.backup_finish_date as [Tarih] FROM msdb.dbo.backupset --Where msdb.dbo.backupset.database_name='Demo'
Veritabanlarına ait MDF ve LDF dosya boyut, path ve isim bilgileri
Sorgu ile Veritabanlarına ait MDF ve LDF dosya boyut, path ve isim bilgilerini
aşağıdaki sorgu ile listeleyebilirsiniz.
SELECT DB_NAME(database_id) AS [Veritabanı], Name AS [Mantıksal Ad], Physical_Name AS [Fiziksel Ad], state_desc as Durum, (size*8)/1024 [Boyut (MB)] FROM sys.master_files --WHERE DB_NAME(database_id) = 'Veritabanı'

17 Mayıs 2010
4 Okunma


Taglar: 

Son Yorumlar