DISTINCT Komutu

4. Ocak 2014 16:46 by Admin in SQL Server  //  Tags: ,   //   Comments (0)

Sql'de bir tablodan veya ilişkili tablolardan Select komutu ile çektiğimiz veriler içinde birbirinin aynı veriler bulunabilir. Aynı verilerin birden fazla satırda tekrarladığı zamanlarda listeleme esnasında bir kez yazılması (tekrarsız sonuçlar) elde etmek için kullanılır.

 

Örneğin Nebim Winner veritabanında stok kartlarımızda tema kodu boş olan modelleri listelemek istediğimizde her bir modelin renklerinin bedenleri için içinde model kodu ve renk kodunu, bedenleri için tekrarlayacağını düşünürsek ve bedenleri çekmeden listemizi almaya kalkarsak bize birbini tekrarlayan çok fazla sayıda satır verecektir. Fakat distinct komutu ile bunun önüne geçe biliriz.

 

Örnek kod = [sourcecode language="sql"] SELECT DISTINCT tbStok.sModel, tbStok.sAciklama ,tbStok.sModel ,tbStok.sRenk,tbRenk.sRenkAdi,IsNuLL((tbModelRenkTema.sTemaKodu),'') as [Tema Kodu] ,IsNuLL((tbTema.sAciklama),'') as TemaAciklama

FROM tbAsorti, tbStok left outer join tbstokresim on tbstok.smodel=tbstokresim.smodel left outer join tbStokAciklama on tbStok.nStokID=tbStokAciklama.nStokID left outer join tbModelRenkTema on tbModelRenkTema.sModel = tbStok.sModel and tbModelRenkTema.sRenk = tbStok.sRenk left outer join tbTema on tbTema.sTemaKodu = tbModelRenkTema.sTemaKodu ,tbStokTipi,tbFiyatlandirma,tbRenk

WHERE tbStokTipi.nStokTipi=tbStok.nStokTipi and tbStok.sDefaultAsortiTipi = tbAsorti.sAsortiTipi and  tbStok.nFiyatlandirma=tbFiyatlandirma.nFiyatlandirma  and tbRenk.sRenk=tbStok.sRenk and (tbStok.nStokTipi=1 or tbStok.nStokTipi=2 or tbStok.nStokTipi=3) and  tbModelRenkTema.sTemaKodu IS null

ORDER BY tbStok.sModel ,tbStok.sRenk 

 

Şeklinde yazınca oluyor. Bu kod sonucu Model ait Renkleri tekil olduğu için tekrar eden verilerden kurtulmuş oluyoruz.

 

SQL Server 2008 R2’de Generate Script

Merhaba Arkadaşlar;
Bu makalemizde SQL Server 2008 R2'de Generate Script özelliğinden bahsetmek istiyorum.
Bilindiği gibi SQL serverda aldığımız yedekleri geriye dönük olarak restore edemiyoruz. Yani 2008 üstünde aldığımız bir yedeği 2005 veya 2000e restore edemiyorduk. Hatta 2008 R2den 2008e bile restore yapılamıyor. Çünkü hepsi birbirinden farklı versiyonlar.
Fakat Generate Script özelliği ile veritabanımızı (buna veriler da dahil)  T-SQL komutlarına çevirip, diğer versiyonlar üstünde çalıştırabilir hale getirebiliyoruz.
Haydi yapalım;

SQL Server Management Studio üstünde Scriptini almak istediğimiz Veritabanının (Databese)  üstüne sağ tıklayıpTasklarden, Generate Script diyoruz. Ben AdventureWorks veritabanı üstünden gidiceğim. Benim Serverim 2008 R2 ve 2005'e aktarım yapacağım.

 Bu ekranda karşımıza iki seçenek çıkıyor .

  1. “Script entire database and all database objects”  tüm veritabanı ve veritabanı nesneleri için mi?
  2. “Select specific database objects” belirli veritabanı nesneleri için mi?

Scprit oluşturmak istediğimizi seçiyoruz. Ben veritabanımın tümünü yedek alacağım için 1 seçeneği işaretli bırakarak Next diyorum.

 

 Bu ekranda Scriptin nasıl kullanmak istediğimizi soruyor.

  1. “Save Scripts to a specific location”  Scripti kaydetmek sitediğimiz yeri ve nasıl kayedetmek isteğimizi soran bir panel
  2. “Publish to Web Service” Eğer istersek bir web service ile yayınlaya bilceğimiz bir panel  ekranımıza geliyor.

 Ben Script'i kaydedeceğim için 1. Seçenek ile devam ediyorum panelde

  1.  Save to file seçersek; Scripti bir T-SQL dosyasına export eder.
  1. Single file; seçilir ise tek bir dosya olarak export eder.
  2. Single file per object; seçilir ise her nesneyi (table, view, vb) ayrı dosyalara export eder.
  3. File name:  dosyayı nereye ve adının ne olacağını belirliyoruz.
  1. Save to Clipboard; seçersek sanki ctrl + c ile bir yazıyı kopyalamış gibi olur herhangi bir yere notepad, ya da Word, Query sayfasına yapıştırıp kullanabiliriz.
  1. Save to new query window; seçilirse Scripti yeni bir query ekranına yazar.

Tam bir yedek alacağım ve farklı bir versiyona dosyayı vereceğim için  advance butonuna tıkladım. Buradaki parametreler önemli. Hepsini tek tek anlatmayacağım ama ilk etapta önemli olanların üstünden geçelim.

Script for Server Version: Bu seçenek ile hangi versiyona Script hazırlıyorsak onu seçebiliriz. Ben SQL 2005 için hazırlayacağım .
Scripts Login: Bu seçenek ile veritabanında ki kullanıcıları da taşıyıp taşımayacağımız ayarlıyoruz. Ben taşımayacağım için False olarak bırakıyorum.
Type of data to Script: Bu bölümde 3 farklı seçenek çıkıyor karşımıza
  1. Schema only; sadece veritabanını ve objelerini (table,view vb.) oluşturabileceğimiz içinde her hangibir verinin taşınmadığı bir script hazırlar.
  2. Schema and data; veritabanının şemasını ve tüm verilerimizin taşınmasını sağlayan bir scritp hazırlar,
  3. Data only; adından da anlaşıldığı gibi sadece verilerimizi şeması aynı olan bir veritabanına eklememizi sağlayacak bir script hazırlar,

Ben  Schema  and datayı seçiyorum. Yani hem şemalar hem de veriler taşınacak.
Yine aşağıdan gerekli olabilecek seçenekleri True olarak işaretleyip yada istemediklerimiz False edip Scripte dahil edebilir veya çıkartabiliriz.
Next dedikten sonra seçeneklerimiz kontrol edebileceğimiz bir özet ekranı geliyor. Kontrol ettikten sonra. Next diyoruz ve Script oluşturulmaya başlıyor.

Script oluşturma başarılı oldu. Şimdi de bunu 2005e import edelim.
Scripte çift tıklıyorum ve management studioyoda açıp çalıştıracaktım. Fakat şöyle bir hata ile karşılaştım.
Bunun sebebi query dosyasının yaklaşık 500 MB olması zaten neredeyse hiç bir text editörde bu dosyayı açamiyor.

Bizde bu işlemi command promtu kullanarak yapacağız. cmd yi açıp şu satırı yazıyorum.

osql -S [servername] -U [username] -P [password] -i [Dosya yolu]
osql -S test\SQL2005 -U sa -P ****** -i c:\adventure.sql
ve Veritabanı oluşturulmaya başlıyor. Bu işlem büyük veritabanlarında uzun sürebiliyor.
Ve görüldüğü gibi gibi 2008 R2den 2005e yani geriye dönük veritabanını taşımış olduk.
Yalnız şunuda belirtmeliyim ki Script yöntemini büyük veritabanlarında sağlıklı bulunmuyor. Tam olarak Scripte güvenip iş yapmanızı tavsiye etmem. Ama zor durumlarda hızır gibide yetişir.
Umarım faydalı olur.
Kolay gelsin.

Welcome to BlogEngine.NET 3.1 using Microsoft SQL Server

15. Ekim 2012 10:00 by Admin in General, General  //  Tags: , , ,   //   Comments (0)

If you see this post it means that BlogEngine.NET is running and the hard part of creating your own blog is done. There is only a few things left to do.

Write Permissions

To be able to log in, write posts and customize blog, you need to enable write permissions on the App_Data and Custom folders. If your blog is hosted at a hosting provider, you can either log into your account’s admin page or call the support.

If you wish to use a database to store your blog data, we still encourage you to enable this write access for an images you may wish to store for your blog posts.  If you are interested in using Microsoft SQL Server, MySQL, SQL CE, or other databases, please see the BlogEngine docs to get started.

Security

When you`ve got write permissions set, you need to change the username and password. Find the sign-in link located either at the bottom or top of the page depending on your current theme and click it. Now enter "admin" in both the username and password fields and click the button. You will now see an admin menu appear. It has a link to the "Users" admin page. From there you can change password, create new users and set roles and permissions. Passwords are hashed by default so you better configure email in settings for password recovery to work or learn how to do it manually.

Configuration and Profile

Now that you have your blog secured, take a look through the settings and give your new blog a title.  BlogEngine.NET is set up to take full advantage of many semantic formats and technologies such as FOAF, SIOC and APML. It means that the content stored in your BlogEngine.NET installation will be fully portable and auto-discoverable.  Be sure to fill in your author profile to take better advantage of this.

Themes, Widgets & Extensions

One last thing to consider is customizing the look and behavior of your blog. We have themes, widgets and extensions available right out of the box. You can install more right from admin panel under Custom/Gallery.

On the web

You can find news about BlogEngine.NET on the official website. For tutorials, documentation, tips and tricks visit our docs site. The ongoing development of BlogEngine.NET can be followed at CodePlex where the daily builds will be published for anyone to download.

Good luck and happy writing.

The BlogEngine.NET team