LOGO

LOGO
LOGO
ads header

Breaking News

SQL PÜF NOKTALARI


* Verileri tablolara bölerek saklayan ve tablolar arasında ilişkiler tanımlamaya olanak sağlayan veritabanı sistemine İlişkisel Veritabanı denir.
* İlişkisel Veritabanlarında sorgu amaçlı kullanılan genel dile SQL denir.
* İlişkisel Veritabanında Birincil anahtar ve Yabancı anahtar kavramı ne demektir?
Birinci Anahtar: Bir tablodaki varlıkları ayırt edici olarak bulunan ve tekrar etmeyen satıra verilen addır.
Yabancı Anahtar: Bir varlığa ait ek bilgilerin bulunduğu başka tablo(lar)da, varlığı temsil etmek üzere bulunan birincil anahtar değerlerini içeren sütuna yabancı anahtar denir.
* Management Studio nesne temelli ve T-SQL temelli veritabanı yönetim işlevleri için kullanılan SQL Server 2005 istemci yazılımıdır.
SQL Server Configuration Manager, SQL Server servislerinin başlatılıp durdurulmasını sağlar. İşletim sisteminde çalışan diğer servisler de dahil servislerle ilgili daha detaylı bilgi Denetim Masası, Yönetimsel Araçlar, Hizmetler kısmından alınabilir.
* SQL Server içerisinde C# ile yazılmış bir kod yer alabilir. Bu kodun çalışmasından CLR birimi sorumludur.
Veritabanı nesneleri: Tablo, view, stored procedure, trigger, constraint, indeks, sütun, role, kullanıcı, login, veritabanı, kuruk, kontrat…
* SQL Server 2 farklı sunucu seviyeli kullanıcı erişim modu destekler: Windows Only ve Mixed Mode.
* Bir ilişkisel veritabanı sorgulama Seçme, İz düşürme ve birleştirme işlemleri desteklenmelidir.
* Management Studio ve SqlCmd ortamlarında T-SQL yazılıp çalıştırılabilir.
* SQL 3 alt dil grubundan oluşur:
DDL(Data Definition Language): CREATE, ALTER, DROP
DML(Data Manipulation Language): SELECT, INSERT, UPDATE, DELETE
DCL(Data Control Language): GRANT, DENY, REVOKE
* Bir uygulamanın veritabanı katmanını tasarlamak 3 aşamada ele alınmalıdır:
KAVRAMSAL: programın kullanılacağı ortam ile ilgili model
MANTIKSAL: veritabanının teoriler ekseninde ve programcılara göre şekillenmiş hali
FİZİKSEL: veritabanının gerçek olarak çalıştırılabilir ve stabil halini gösteren model
* Bir veritabanında performans kaygılarından ötürü denormalizasyonlara başvurulacaksa, bu fiziksel model seviyesinde ele alınmalıdır.
* Bir veritabanının boyunu ve artım miktarını ilk haldeki veri miktarı ve zaman içerisinde eklenecek veri eğilimi ile kestirebiliriz.
Tempdb veritabanının boyutu ve bulunduğu disk erişimleri hızlandırmak için önemlidir.
* Bir proje bittikten sonra sürekli olarak Türkçe karakter problemleri ile karşılaşıldığında, veritabanı ve sunucu seviyeli Collation ayarlarının düzgün olarak yapılandırılması gerekiyor demektir.
* Bir uygulamada veritabanı seviyesinde, veri eklemek ve değiştirme gibi işlemlerde tarih formatında problem çekildiğinde, veritabanına erişen kullanıcının default dilinin Türkçe olması işleri kolaylaştıracaktır.
SQL Server, tanımsal veri bütünlüğü tekniklerinden Constraint, Rule ve Default nesnelerine destek verir.
DEFAULT nesnesi ile işdeş olan Constraint Default Constraint’dir. Rule nesnesi Check Constraint’in işlevini yerine getirir. Check constraint aynı işlevi daha az efor ile yerine getirebilir.
Birim Bütünlüğü ile Domain Bütünlüğü arasındaki en temel fark, birim bütünlüğü bir satıra ait verilerin kendi içerisinde tutarlı olmasını hedeflerken, domain bütünlüğü bir sütuna ait verilerin kendi içinde uyumlu olmasını hedefler.
* Bir tabloda en fazla bir tane Primary Key Constraint yeralabilir.
Unique Constraint Primary Key Constraint’e rağmen bir tabloda, PK dışında tekil olması gereken sütunlar olduğunda kullanılır. UC null olabilir, PK olamaz. Bir tabloda birden fazla fazla UC olabilir ama sadece bir tane PK olabilir.
* Bir tabloya Unique Constraint eklenmek istediğinde, tabloda önceden varolan kayıtların en fazla bir tanesinin NULL olması ve bütün değerlerin birbirinden farklı olması gerekir.
* İlişkili iki tablodan birindeki veriler silindiğinde veya güncellendiğinde, ilişkili bulunduğu tabloya değişikliğin yansıtılabilmesi için basamaklı veri bütünlüğü tanımının yapılmış olması gerekir. Aksi halde veri değişimi hiç yapılmaz.
* Veri eklemekle ilgili bir işlem için Constraint’ler zorluk çıkarıyorsa gerçekleştirilebilecek en pratik çözüm bir süre constraint’leri susturmak, verileri ekleyip tutarlı hale getirdikten sonra geri açmaktır.
Rule ve Default nesnelerinin yapabileceği şeyleri Constraint’ler yapabildiği halde, SQL Server bu nesnelere geriye doğru uyumluluk için destek vermeye devam etmektedir.
* Sorgu, belli kriterleri sağlayan verileri veritabanından seçmek demektir. Genel olarak bir sorgu SELECTFROM ve WHERE yan cümleciklerinden oluştur.
* Tekrarlayan satırları indirgemek için DISTINCT deyimi kullanılır.
* Metin ve tarihsel sabitler tek tırnak içerisine alınarak kullanılır. Sayısal sabitler doğrudan kullanılır.
* Joker karakterler(_, % ve [XYZ] ile [^XYZ]) sadece LIKE operatörü ile kullanılabilirler, ’=’ ile kullanılamaz.
* Tarihi istenilen formatta göstermek için CONVERT fonksiyonu kullanılır.
Altsorgu, bir SELECT ifadesi içerisinde başka bir SELECT ifadesi daha yer almasıdır. Altsorgu ile ilgili [NOT] IN[NOT] EXISTS gibi kelimeler ayrılmış kelimeler kullanılabilir.
Normalizasyon amacıyla farklı tablolara dağılmış verileri birleştirip bir tek tabloymuş gibi sorgulamak gerektiğinde JOIN kullanırız.
Inner Join ile Outer Join arasındaki temel fark; birleştirmeye katılan her iki tabloda sadece eşleşen kayıtlar gelmesi gerektiğinde INNER JOIN, tablolardan eşleşmeyenlerin de sonuçta yer alması gerektiğinde de OUTER JOIN ifadeleri kullanılmasıdır.
Full Outer Join’e birleştirmeye katılan her iki tablonun da fazladan olan satırlarını görmek gerektiğinde ihtiyaç duyulur.
WHERE ile HAVING arasındaki farkHAVING’in gruplanmış veriler üstünde filtreleme yapmasına rağmen, WHERE’in gruplamaya girmeden önce filtreleme yapmasıdır.
CUBEGROUP BY’dan sonra yer alan her sütun için içten dışa doğru bütün farklı kombinasyonlardaki gruplamalı fonksiyon sonuçlarını bulur. ROLLUP ise, sadece içten dışa doğru sonuçları korele eder.
GROUP BY verileri gruplara ayırarak sorgulamak amacıyla kullanılır. ORDER BY ise verileri seçme işlemi bittikten sonra sıraya koymak için kullanılır.
COMPUTE’in kullanıldığı her yerde, COMPUTE BY ifadesi kullanılamaz. COMPUTE BY ifadesi kullanabilmek için sorguda, ORDER BY deyimi ile birlikte, ilgili sütunun yeralması gerekir. COMPUTE için böyle bir kısıtlama yoktur.
* Bir tabloda yer alan bütün kayıtları, loglamadan boşaltmak için TRUNCATE TABLE deyimi kullanılır.
* Bir tablodaki veriler, başka bir tablodaki veriler de kullanılarak güncellenmek durumunda iken oluşturulan bir sorguda alt sorgu kullanılmazsa, hem MS Access hem de MS SQL Server tarafından kullanılamaz. Çünkü veri güncelleme esnasında yapılan JOIN işlemi bu iki VTYS için farklıdır.
* Common Table Expressions(CTE) ve Türetilmiş tablo birbirine işlev olarak çok benzer. Ancak CTE rekürsif sorgulara olanak tanıması ve bazı birkaç işleme izin vermebilmesi nedeniyle türetilmiş tabloya nazaran daha işlevsel olabilmektedir.
PIVOT ve UNPIVOT satır içerisindeki değerlerden sütun oluştururken veya sütunları birer satır değeriymiş gibi göstermek için kullanılırlar.
* Bir tablodaki satırlarda yer alan verilerden her birine bakılarak ayrı ayrı işlemler yapmak gerekiyorsa, Cursor tür bir değişken ile verilere erişmemiz gerekir.
Transact-SQL Sunucu Cursor’ler ve API Sunucu Cursor’ler olmak üzere iki farklı Cursor türü için SQL Server 2005 ve sonrasında destek sağlar. Cursorler’den kilitlenme ve performans kayıpları nedeniyle kaçınmak gerekir.
View’ler karmaşık veritabanı şemalarını basitleştirmek için,
  i. güvenlik ve yetkilendirme maksatlı,
  ii. birim dönüşümleri gibi farklı görünmesi gerekli veri ihtiyacını karşılamak maksatlı,
  iii. indekslenerek performans maksatlı kullanılabilirler.
WITH CHECK OPTIONS, bazı satırlara erişimi olmayan bir view üstünden kapsamı dışındaki verilere müdahale edilmesini engellemek amaçlı kullanılır.
* Unique olmayan Clustered Indeks tanımlanabilir. Hatta bu genellikle doğru kullanıldığında performans artırıcı bir unsur olabilir.
* Bir sütuna girilen verinin tekilliğini sağlamak için Constraint tanımlamadan çözüm üretilebilir. Constraint yerine tekil indekslerle de kayıtlar tekil olmaya zorlanabilir.
* Bir indeks için fillfactor değeri verilmezse, Global Fillfactor değerleri(Sunucu veya veritabanı seviyeli default ayarlar) esas alınarak indeks oluşturulur.
* Oluşturulmuş bir indeks’in fillfactor değerini ALTER INDEX REBUILD ile değiştirmek mümkündür.
Primary Key Constraint ve Unique Key Constraint’lerin izdüşümü olarak otomatik Unique Indeksler tanımlanır. Bu indeksler DROP INDEX ile silinemezler. Constraint silindiği zaman otomatik olarak silinirler.
Clustred Indeks’ler ve daha önce indekslenmiş sütunlar, covering indeks için, tekrardan indekslenmezler. Bu nedenle, geriye kalan iki sütunun indekslenmesi yeterlidir.
CREATE INDEX idx_Covering ON tblUrun(urunKod, urunAd)
CREATE UNIQUE CLUSTRED INDEX
    
cx_marka ON tblMarka (MarkaKod, Marka)
ile tanımlanan indeks,
    SELECT markaKod, marka
    FROM tblMarka WHERE marka=’vestel’
Sorgusu için, idealdir. Çünkü, covering indeks’tir ve daha da iyi bir durum, clustred bir indekstir.
* Bir indeks için sıralama verilmezse, anahtarları artan sırada(ASC) olarak varsayılır. Bu nedenle de artan değerler şeklinde sıralanır.
* Bir tablo sadece bir tek nonclustred indeks içeriyorsa, bir heap tanımlanır. Verilere, bu heap üstünden erişilir.
Database Tuning Advisor, bir Sql Profiler trace dosyasını veya bizim belirlediğimiz bir sorguyu ele alarak bu sorgu ile ilgili iyileştirmeler önerir. SQL Profiler, SQL Server’a gelen ve çalıştırılan ifadeleri takip etmek maksatlı kullanılır. 
* Bir stored procedure’ün tanımında hangi tablolara atıfta bulunulduğunu sp_depends ile öğrenebiliriz.
* Bir stored procedure’ün kaynak kodunu WITH ENCRYPTION seçeneği ile tanımlanarak, bir bir stored procedure’ün kaynak kodunu korumalı hale getirebiliriz. Encrypted Stored Procedure’ler SQL Profiler tarafından da görüntülenmezler ve Replike edilemezler.
Girdi parametreler, stored procedure’e değer aktarmak için standart bir giriş tanımlar. Çıktı parametreler, özellikle stored procedure’ün birden fazla değer döndürmesi veya INTEGER türü dışında değer döndürmesi gerektiğinde kullanılır. RETURN deyimi, stored procedure sadece bir tek değer döndürecekse ve bu değer de INTEGER ise kullanılabilir. Genellikle hata kodu, sorgudan etkilenen kayıt gibi değerleri döndürmek için kullanılır.
* Çalıştırma planı, Procedure Cash denilen bölgede tutulduğu için, karmaşık stored procedure’ler genel olarak ikinci çalıştırmada, ilk çalıştırmaya göre daha hızlı çalışırlar.
Yerel Stored Procedure’ler oturuma özgüdür. Aynı anda oturum açan faklı kullanıcılar birbirlerinin geçici stored procedure’lerini göremezler.
* Bir stored procedure ilk çalışmasında hızlı sonuç getirmesine rağmen takip eden çalışmalarında yavaş sonuç getiriyorsa, stored procedure’ün her çalıştırılmada, yeniden derlenmesi gerekiyor demektir. Bunun için, stored procedure’ün WITH RECOMPILE seçeneği ile tanımlanması performans artırıcı etkide bulunabilir.
Stored Procedure, derlenmiştir. Yani çalıştırma planı procedure cash denilen hafıza bölgesinde tutulmaktadır. İlk çalıştırmadan sonraki çalıştırmalarda daha hızlı netice verir. Script ise, hiç bir derlemeye tabi tutulmaz. Her çalıştırılmasında bütün işlemler baştan ele alınır.
Kullanıcı tanımlı fonksiyonlar hesaplanmış sütun oluşturmada kullanılabilir. Sütun olarak kullanılmış bir kullanıcı tanımlı fonksiyon deterministik ise indekslenebilir.
* Tablo gibi ve sütun gibi olmak üzere işlevsel olarak iki farklı Kullanıcı Tanımlı Fonksiyon vardır.
* Bir view parametre alamaz. Parametre alacak view gereksinimi için Tablo gibi davranan Kullanıcı Tanımlı Fonksiyonlar kullanılabilir.
Fonksiyonlar, yan etkide bulunamadıkları için sistemdeki verileri değiştiremezler. Veritabanına veri ekleme ve silme gibi işlemler için veritabanı uç noktası olarak fonksiyonlar değil, stored procedure’ler kullanılır.
T-SQL dışında CLR dillerinde de Kullanıcı Tanımlı Fonksiyon programlanabilir. Özellikle CPU’yu yoğun kullanacak işlemler için tercih etmek.
* Bir tablo ile bir fonksiyonu, şayet tablonun bir sütununu fonksiyon parametre olarak alıyorsa, APPLY operatörü yardımı ile birleştirebiliriz. Ama fonksiyon tablodan bağımsız tablo tipi sonuç döndürüyorsa, APPLY operatörü olmadan, JOIN ifadesi ile birleştirme yapılabilir.
EXEC() ve sp_executesql arasındaki fark, sp_executesql’in çalıştırma planı optimize edilebilir ifadeler çalıştırmak için uygun olmasıdır. Bir veritabanındaki bütün indeksleri yeniden derleyecek bir program yazmanız gerekse plan derleme gereksinimi olmadığından EXEC() fonksiyonu ama dinamik olarak oluşturulması gereken ve çok sayıda verilerin olduğu bir tabloyu sorgulayan bir ifadeyi parametrik çalıştırmak gerekiyorsa sp_executesql stored procedure’ünü tercih etmek mantıklı olacaktır.
* Bir SP içerisinde TRY-CATCH yapısı kullanılmayan noktada hata meydana gelirse hata ele alınamaz ve program kullanıcısına programın çalışmasının kırılması olarak yansır.
RAISERROR fonksiyonu ile bir hata ortama fırlatıldığında bağlantı kopuyorsa, hatanın seviyesi 21 veya daha yukarıdaki bir değer ile fırlatıldığını gösterir.
XML veriyi XQuery ile sorgularız.
* XML bir veri tipinin 5 farklı metodu vardır.
   .query: XQuery soguları için kullanılır.
   .value: Değerleri skaler bir veritabanı tipine döndürür.
   .exist: Bir XQuery sorgu sonunun olup olmadığına bakar.
   .nodes: Bir XML düğümü döndürmek için kullanılır.
   .modify: XML-DML ifadeleri çalıştırmak için kullanılır.
XML veri tipini herhangi bir metin tür(meslea NVARCHAR(MAX) )veri tipinden ayıran en önemli fark binary olarak parse edilmiş olması ve bu nedenle de çeşitli geçerlilik denetlemelerine ve sorgulamalara tabi tutulabiliyor olmasıdır.
XML sütun üstünde indeks tanımlaması, ait olduğu tablonun birincil anahtarı olmasını ve sütun üstünde bir birincil XML indeks tanımlanmış olmasını gerektirir.
XML bir veriyi sadece veritabanında tutmak için ilişkisele çevirmek, gereksiz işlem maliyeti getirdiği için tercih edilmez.
FOR XML tabular sorgu sonuçlarını XML’e dönüştürür.
OPEN XMLXML verileri ilişkisel domaine dönüştürmede kullanılır ve yardımcı sistem stored procedure’leri sp_xml_preparedocument ve sp_xml_removedocument’dir.
* Daha küçük parçalara ayrılamayan bir dize işlemin bir bütün olarak ele alınmasını sağlayan yapıya transaction denir.
* SQL Server 3 çeşit transaction’a destek verir:
    Otomatik Sabitleme: Normal olarak SQL Server’in çalıştığı Transaction modudur. SQL Server’e gelen her bir batch tek bir transaction olarak ele alınır ve transaction, batch’in çalıştırılması biter bitmez SQL Server tarafından bitirilir.
    Harici Transaction: Programcı tarafından BEGIN TRAN ile başlatılan ve programcı veya sistem tarafından bitirilebilen, genel manada kastedilen transaction modudur.
    Dahili Transaction: SQL Server’in belli ifadelerden önce otomatik transaction başlatması şeklindeki mod olup, bu moda geçirme işini kullanıcının veya programcının yapması gerekir. Bu modda, her bir transaction açıldığında, sonlandırma işi kullanıcıya bırakılmıştır.
* Ortak zamanlı çalışmada ortaya çıkan sorunlar:
    Kayıp Güncelleme(Lost Update)
     Tekrarlamasız Okuma(non-repeatable Read)
     Hayalet Okuma(fantom-read)
     Kirli Okuma(dirty read)
* SQL Server şu izolasyon seviyelerine destek sağlar:
    Read Uncommited
     Read Commited
     Repeatable Read
     Serialisible
* İki proses veya kullanıcıdan her biri faklı işlemler yaparken aslında karşılıklı olarak diğerinin bir sonraki adımını tıkayan ve bu nedenle de her ikisi de ilerleyemeyen proseslerin içinde bulundukları duruma dead lock denir.
sp_lock ve sp_who sistem stored procedure’leri kullanılarak, kaynaklardan hangilerini kimler tarafından kilitlendiği görüntülenir. Ardından kilitleme yapan transaction kısmı gözden geçirilir.
* Trigger’ları Stored Procedure’lerden ayıran özellikler:
   * Dışarıdan parametre almazlar.
   * İstediğimiz zaman devreye sokamayız. Sadece belli veri değişimlerinde(Ekleme-Silme veya Güncelleme anında) devreye girerler.
   * AFTER trigger’lar transaction’dan sonra devreye girerler.
   * Tablolar üstünde tanımlanabilirler.
   * Başka bir yerden çağrılamazlar ve sonuç döndürülemezler.
UPDATE ve DELETE işlemlerinin her ikisi için de devreye girecek bir AFTER trigger’ı yazılabilir. Aynı şekilde bir INSTEAD OF trigger’ı da yazılabilir. Ancak bu durumda, UPDATE ve DELETE işlemlerinden herhangi biri için ikinci bir INSTEAD OFtrigger’ı tanımlanamaz.
Trigger’lar da Constraint’ler gibi belli bir süre için devre dışı bırakılabilirler. Constraint’lerden farklı olarak, trigger pasif iken gerçekleştirilen işlemleri, trigger aktif edildiğinde denetleyemez. Bunun için,
ALTER TABLE tablo_ismi
DISABLE TRIGGER trigger_ismi | ALL
yapısı kullanılır.
* Bir tablo üstünde INSTEAD OF trigger varsa, ilk olarak bu tepkimeye girer. Arkasından Constraint tepki verebilir. Constraint’ten sonra, tanımlı bulunan trigger’lardan biri devreye girer. Ancak hangisinin önce gireceği belirlenemez. Bu nedenle, en son tepkimeye girecek nesne iki INSERT tirgger’ından biridir ancak hangisi olacağı garanti edilemez. Garanti etmek için, bir tek AFTER INSERT trigger’ı içerisinde bu iki trigger’ın uygun sırada çağrılması gerekir.
AFTER UPDATE trigger’ı devreye girdiğinde, hem Inserted hem de Deleted sözde tablolarını oluşturur.
AssemblyCLR temelli kodların dağıtım ve versiyonlama birimine verilen addır. SQL Server için assembly sadece dll uzantılı CLR kütüphanelerine verilen addır.
Bir veritabanının yedeği alındığında CLR bileşenleri ve assembly’ler de yedeklenir.
* Bir assembly içerisinde yer alan metotları ve tipleri görmek mümkündür.
SELECT * FROM sys.assembly_modules
Sorgusu bu türden bir bilgi almak için kullanılabilir.
CLR ortamında Stored ProcedureTriggerKullanıcı Tanımlı FonksiyonKullanıcı Tanımlı Tip ve Kullanıcı Tanımlı Grupsallar programlamak mümkündür.
TriggerStored Procedure ve skaler tip kullanıcı tanımlı fonksiyonları sadece metodları eşleştirmekle tanımlayabiliriz.
Teorik olarakCLR bileşenlerini T-SQL’e rağmen kullanmayı CPU’yu yoğun olarak kullanan işlemler, .NET kütüphanesine gereksinim duyan programlar, düşük seviye veri işlemi yapan ve veritabanı seviyeli veri erişimleri dışındaki işlemlerde kullanılır.
* Genelde Cursor yapılarından kaçınmak için ve sistemde hali hazırda bulunmayan grupsal fonksiyonlar için grupsallar kullanmak gerekir. SUM fonksiyonunu biz yazdığınızda daha hızlı çalışmaz. Çünkü gerçek SUM fonksiyonu alt seviyeli olarak gerçeklenmiştir.
Uzaktaki bir SQL Server’daki verileri hızlı bir bağlantı üstünden, yereldeki SQL Server’in içerdiği verilerle birlikte sorgulamanız gerekiyorsa bağlı sunucu tanımlayarak bu tanımlama üstünden sorgulamak yeterli olacaktır.
Metin dosyalarını, Excel ve Access dosyalarını SQL Server’da birer tablo gibi sorgulayabiliriz. Bunun için OLE-DB Driver’larını dinamik olarak yükleyecek cümlecikleri yazarız veya bir bağlı sunucu tanımlayıp bu sunucu üstünden bu kaynakları sorgulayabiliriz.
* Programlanabilir öğelerden Stored Procedure’ler ve Skaler sonuç döndüren kullanıcı tanımlı fonksiyonlar bir XML Web Servisi metodu olarak dışarıya açılabilir.
* Bir endpoint XML Web Servisi olarak yapılandırıldı ise, platform bağımsız olarak, XML Web Servisi tüketebilen her türlü uygulama bağlanabilir.
Service Broker mimarisini gerçeklemek için Tip, Contract, Mesaj, Kuyruk, Servis Programı, Servis, Route gibi bileşenler kullanılır.
Service BrokerSOA temelli mimariyi veritabanı seviyesinde gerçeklemek gerektiğinde kullanılır.
ADO.NET 2 çeşit veri erişimine olanak sağlar: Bağlı Mod ve Kopuk mod.
* Aynı anda iki tane DataReader bir tek connection üstünden veritabanına ADO.NET 2.0’dan itibaren MARS desteği sayesinde ayrı iki Command nesnesi ile erişebilir.
* Bağlı modda bir veritabanı erişimi kodlamak için 1. Connection nesnesinin Open() metodu, 2. Command nesnesinin dönecek değer türüne uygun bir metodu (Tabular sonuç için ExecuteReader()) ve son olarak SqlDataReaderüstünden herhangi bir satıra erişebilmek için Read() metodu kullanılır.
DataSet, veritabanının minyatür olanıdır. DataTable ve constraint gibi nesneler içerir. DataSet için minyatür veritabanı tabiri kullanılmasının nedeni temel veritabanı bileşenlerini içermesinden kaynaklanmaktadır.
Veri bağlama, veritabanından gelen verileri kullanıcı arayüzlerine ilintilendirme sistematiği demektir.
ASP.NET, Hızlı Uygulama Geliştirme yaklaşımına SqlDataSource bileşeni ile destek verir.
SQL Server 2008 yeni özelliklerinden biri olan Backup Compression özelliğini kullanmak için,
Management Studio’da Server name üzerinde sağ tıklayıp, Properties/Database Settings içerisinde "Compress backup" ı işaretleyin.
SQL Server’ın sıkıştırılmış yedekleme özelliği olan bu işlemi, T-SQL kodlarını kullanarak yapmak isterseniz, aşağıdaki şekilde "Backup Compression Default" değerini değiştirebilirsiniz:
USE master;
GO
EXEC sp_configure ‘backup compression default’, ’1’;
RECONFIGURE WITH OVERRIDE;
Yedekleme işlevini t-sql kodları ile yapıyorsanız; backup database kodunuzda NO_COMPRESSION ifadesini kullanmanız yeterli olacaktır veya No ifadesini kaldırarak, direk sıkıştırma işlemi yapılabilir. Aşağıda AdventureWorks veritabanı için yaptığımız örnekten yararlanabilirsiniz.
BACKUP DATABASE AdventureWorks TO DISK=’D:\\SQLDATA\\CompressedBackup.bak’ WITH FORMATNO_COMPRESSION 
SQL Server 2005 ve 2008’ de, bir kullanıcıyı "sysadmin" yapmadan, bu kullanıcıya iş (Job) oluşturma ve bunu yönetme hakkı verebileceğinizi biliyor muydunuz?
Bunun için, bahsi geçen kullanıcıyı MSDB veritabanındaki üç rolden birine atamanız yeterli.
Rolleri, yetkileri en kısıtlı olandan itibaren:

1) SQLAgentUserRole, 
2) SQLAgent ReaderRole, 
3) SQLAgentOperatorRole
.
Roller hakkında daha fazla bilgi için burayı inceleyebilirsiniz.
SQLCMD aracı vasıtasıyla çalıştırdığınız Script’lerde veya komut satırlarında değişkenler kullanabileceğinizi biliyor muydunuz?
Örneğin, "yedek_al.sql" isimli Script’inizin içinde şöyle bir yedek alma komutu olsun:
"BACKUP DATABASE $(Veritabanim) TO DISK=N’D:\\\\SQLYedekler\\\\$(Veritabanim).bak’"
Gördüğünüz gibi, buradaki değişken adı "Veritabanim". Bu değişkene atanacak değer ise, SQLCMD komutuyla "yedek_al.sql" Script dosyası çağırılırken "-v" parametresi ile atanıyor.
ÖrnekSQLCMD -E -i yedek_al.sql -v Veritabanim="Muhasebe".
ISQL ve OSQL, SQL Server 2005’ten önce SQL Server Instance’larında Komut İstemcisinden işlem yapmak için kullanılan Komut İstemcisi araçlarıydı. SQL Server 2005 ile birlikte, tamamen yeniden yazılan SQL Command (SQLCMD) Komut İstemci aracı geliştirildi ve OSQL da tedavülden kalkma sürecine girdi ("Deprecated" oldu).
SQLCMD’ den önceki araçlar SQL Server Instance’larına ODBC ile bağlanıyorlar ve bu yüzden bir seferde bir Instance’a bağlanabiliyorlardı. Fakat SQLCMD aracı bağlantı için OLE DB kullanıyor ve bu sayede değişik SQL Server Instance’larına bir Script’te birden fazla bağlantı kurabiliyor.
Örnek vermek gerekirse, ODBC ile bağlandığınızda bir Script içerisinde iki farklı SQL Server Instance’ından iki farklı veritabanının yedeğini alamazsınız. Fakat aynı işlem için SQLCMD kullanarak ve Script’inizde de
":CONNECT SQLServerInstanceAdı -E"
komutunu da kullanarak farklı Instance’larda işlem yapabilirsiniz.
Sa(System Adminisitrator)’un şifresini unutabiliyoruz. Şimdi çok basit bir Stored Proc. ile nasıl değiştirebilceğimizi gösterelim.
1)İlk olarak Command Prompt(cmd)’muzu açalım.

2)Sonra "osql -L" komutunu yazarak mevcut serever larımızın bir listesini çıkarsın.

3)"osql -S ServerAdı -E" server adı olan yere değiştireceğimiz server adını yazalım for example(USAME-PC).

Devam Edelim
4)Komut sayesinde MSSQL bağlanmamaızı sağladı şimdi "sp_password NULL,’yeni şifre’,’sa’ " komutu ile artık şifremizi değiştirelim lakin çalışması için bir sonraki satır go yazıp enter’a basın.
umarım faydalı şeyler yazmışızdır istifa etmişsinizdir.


Hiç yorum yok