Archive for the ‘Microsoft SQL Server’ Category
SQL Server and Read-Only Databases
SQL Server ve Read-Only Veritabanları
Kullanıcıların bir veritabanının içeriğini düzenlemesini engellemek isteyebileceğimiz pek çok durum olabilir. Örneğin, veritabanı sadece raporlama amacıyla kullanılıyorsa read-only modda tutmak oldukça mantıklı bir tercih olabilir. Bununla birlikte, bazı restore ve attach işlemlerinden sonra pek çok nedenden dolayı veritabanlarını read-only modda görebiliriz.
Bir veritabanını read-only moda aldığımızda, kullanıcılar veritabanındaki veriler üzerinde hiç bir değişiklik gerçekleştiremez. Auto shrink, auto statistics ve veritabanındaki sorunları düzeltmek için kullanılan dbcc komutları çalışmaz. Diğer taraftan, SQL Server veritabanında üzerinde hiç bir güncelleme işlemi yapılmayacağı için lockinge izin vermez. Bu da kısıtlı bir performans artışı anlamına gelecektir.
Bir veritabanını read-only moda almak için aşağıdaki komutu kullanabilirsiniz;
ALTER DATABASE dbName SET READ_ONLY
Read-only moddaki bir veritabanını read_write moda almak içinse aşağıdaki komutu kullanabilirsiniz;
ALTER DATABASE dbName SET READ_WRITE
Sql Server da Bulk Insert nedir?
Kısacası metin dosyalarının SQL Server’a aktarmanın en kolay yoludur. Bunu yapmanız için bilmeniz gereken ufak tefek ayrıntıdan başka bir şey yok.
Sıralamak gerekirse,
- Metin dosyasının uzantısını
- Kolonlar birbirinden hangi karakterle ayrılıyor
- Satır sonları nasıl belirlenmiş bilmemiz yeterli.
Bulk Insert komutu ise,
BULK INSERT TableName FROM ‘Path(DosyaYolu)’ WITH (FIELDTEMINATOR = ‘,’)
FIELDTERMINATOR – ile metin dosyamızda bulunan kayıtların kolonlara ayrılmak istenildiğinde hangi karakterle ayırma işlemi yapılacak olduğunu belirtliğimiz yerdir.
Ufak bir örnek yaparak deneme yapacak olursak bunun için hemen bir tablo oluşturalım.
CREATE TABLE User
(
id int,
Name nvarchar(50),
LastName nvarchar(50),
Age int,
City nvarchar(50),
)
Sql tablomuzuda oluşturduk ya metin dosyamız??? Onuda basit bir şekilde yazıyorum hemen.
Mesela buda C klasörünün altında Users.txt metin dosyamız olsun.
1$Ali$Alioğlu$18$Istanbul
2$Veli$Velioğlu$19$Bursa
3$Ahmet$Ahmetoğlu$20$malatya
4$Mehmet$Mehmetoğlu$21$Edirne
BULK INSERT User FROM ‘C:\Users.txt’ WITH (FIELDTEMINATOR = ‘$’)
Dolar ($) kullandım. Çünkü text içerisinde kullanılabilecek karakterden uzak durdum. İşimi garantiye aldım.
Bu şekilde hdd mizde bulunan bir txt dosyasını SQL de oluşturduğumuz bir tabloya taşımız bulunuyoruz.
Ama burada önemli nokta taşıma esnasında türkçe karakter sorunu yaşıyor olacağımızdır. Bunun çözümüde çok basit Bulk Insert komutumuza CODEPAGE = ‘1254′ eklememiz yeterli olucak.
Şu şekilde kullanıcaz yani
BULK INSERT User FROM ‘C:\Users.txt’ WITH (FIELDTEMINATOR = ‘$’ , CODEPAGE = ‘1254′ )
Bu işlemleri sırasıyla yaptık ama birden karşımızda bir hata belirdi.
You do not have permission to use the bulk load statement.
Bu durum Bulk Insert yetkinizin olmamasından kaynaklanıyor. sysadmin veya bulkadmin rollerinize sahip olursanız bu hatayıda basitçe geçiceksiniz.
What is SSIS? Ease of Use. Sql Server Integration Services nedir? Bolum / Part 1
Merhaba arkadaslar, bu makalede size SSIS (Sql Server Integration Services) hakkinda bilgiler vericem. Gunumuz sistemlerinde Veri / Data kelimesi gerek kurumsal gerek bireysel cok buyuk bir onem tasimaktadir. Peki biz bu verileri datalari ne sekillerde tutariz? sorusuna ornek olarak bircok sey soyleyebiliriz. Bana gore gelmis gecmis en basarili program Windows icindeki NOTEPAD’dir. Notepad bir veri saklama aracidir. Hicbor komplike yapi kullanmadan verilerinizi hic bir kayiba ugramadan saklayabilirsiniz. Bahsettigim bu komplike yapilarda son derece basarili yine Notepad’in yaptigi isi yapan araclardir. Bunlara ornek verecek olursak, Microsoft urunlerinden Excel, Access, ve gunumuzde en yaygin veri saklama araci olan SQL Server, ve bunlar gibi bir cok arac. Simdi soyle birsey dusunun, sisteminizde bu araclarin bircogunu kullanaraktan veriler sakliyorsunuz. Excelde, kisi bilgileri tutuyorsunuz. Ayni yapiya sahip olan bilgiler SQL Server’da da tutabiliyorsunuz. Peki sizden soyle birsey istense, exceldeki ayni bilgileri almaniz ve SQL server’a yazmaniz, veya Access veri tabanindan bilgileri alip SQL Server veya Excel’e yazmaniz. Iste bu noktada isi kolaylastirmak adina SSIS devreye giriyor. SSIS kullanarak Access’den SQL’e, Access’den Excel’e, herhangi bir text dosyasindan SQL veya Access’e… Kisaca ozetlemek gerekirse herhangi bir veritabanindan bir baska veri tabanina istediginiz sartlarda veri almak yada vermek islemini kolaylikla gerceklestirebilirsiniz. Isi abartmak gerekirse, SSIS toollari sayesinde yarattiginiz bir veri dosyasini, ornegin bir excel’i sikistirabilir, e-mail ile yollayabilir, veya ftp sunusuna bile gonderebilirsiniz. Ikinci kisimda bu yukarida anlattiklarim hakkinda hemen ornek yapmaya baslayacagiz.
String or binary data would be truncated
SQL’e Insert işlemi sırasında alınan bu hatanın sebebi DB’ye yapmak istediğiniz bir kaydın boyutlarının tablo boyutları ile uyuşmaması demektir. Örneğin: değeri nvarchar(10) olan bir kolona 10 karakterden fazla bir string atamak isterseniz bu sorun ile karşılaşırsınız.
Çözüm : DB’deki kolonun alacağı max değeri artırın, yada daha küçük bir değer girin.












