3 Ekim 2008 Cuma

SQL Server Hosting Toolkit

Merhabalar,


En çok aldığım ve gördüğüm sorulardan birisi şu: "Uygulamam için, uygulamamı geliştirdiğim bilgisayarımda bir de SQL Server' da bir veritabanım var. Şimdi bu uygulamamı internet ortamına taşımam gerekiyor. ASP.Net dosyalarımı FTP' den gönderiyorum, peki ya veritabanımı nasıl göndereceğim?". İşte bu yazımda, Web programcılığına yeni başlayan arkadaşların genelde bir sorun olarak karşılaştıkları bu işlemi, SQL Server Hosting Toolkit ile ne kadar kolay bir hale getirebileceğini anlatacağım.

Şunu baştan söylemek istiyorum, bu işlemi yapmanın sadece bir yolu yok; aslında bu yazımda diğer yöntemlerden de bahsedecektim, fakat gördüm ki sadece bu aracı anlatmak bile uzun sürdü. Bu nedenle diğer yöntemleri başka bir yazımda anlatırım. Dediğim gibi, bir veritabanındaki nesnelerin ve verilerin uzaktaki bir SQL Server Instance' ına gönderilmesi işlemi bir kaç yöntemle gerçekleştirilebilir. Tüm bu yöntemlerdeki temel işlem, ilgili nesnelerin Script' lerinin oluşturulması ve daha sonra da verilerin aktarılmasıdır.

SQL Server Hosting Toolkit
Öncelikle sizlere bu aracı indirebileceğiniz adresi vereyim: SQL Server Hosting Toolkit

Uygulamayı kurduktan sonra, kısayolunu "Başlat\Programlar\Microsoft SQL Server Database Publishing Wizard" olarak bulabilirsiniz.

Ayrıca, bu uygulama Visual Studio 2005 ve Visual Web Developer 2005 ürünleri ile de bütünleşik bir şekilde çalışmaktadır. Bu uygulamayı yükledikten sonra, Visual Studio içerisindeki "Server Explorer" isimli penceredeki bir veritabanı bağlantınızın üzerindeyken farenin sağ tuşuna tıklarsanız "Publish to Provider..." seçeneğini göreceksiniz. İşte bu seçeneğe tıklayarak, veritabanınızı uzaktaki SQL Server Instance' ına aktarmak için kullanacağınız SQL Server Hosting Toolkit' i açmak için kullanabilirsiniz.

Bunlara ek olarak, bu uygulamanın bir de Komut İstemcisi versiyonu mevcuttur. Yani sadece GUI' yi kullanarak değil, bu Komut İstemcisi uygulamasını da kullanarak aynı işlemleri yapmanız mümkündür.

Bu aracı kullanarak, veritabanınızı iki farklı yol ile uzaktaki SQL Server Instance' ınıza gönderebilirsiniz. Bunlar:

Database Publishing Wizard: Bu yöntem, genel olarak sorunsuz çalışan bir sistemdir. Veritabanlarını, uzaktaki SQL Server Instance' ına yüklemek isteyenlerin genelde kullanmak isteyeceği bir yöntem.
Database Publishing Services: Bu yöntem ise henüz tüm Hosting şirketleri tarafından kullanılmıyor. Çünkü bunun için, Barındırma şirketinin bu servisleri SQL Server sunucusuna kurması gerekiyor.

Uygulamayı çalıştırdığınızda, karşınıza ilk önce "hoş geldiniz" ekranı çıkacaktır. Burayı geçtikten sonra ise, aktarılacak veritabanını seçeceğiniz yerel SQL Server Instance' ınıza bağlanmak için gereken bilgileri girmeniz gereken "Select Source Server" penceresi ile karşılaşacaksınız. (bkz. Resim 1)




Resim 1


"Server" metin kutusuna, yerel bilgisayarınızda yüklü olan ve veritabanınızın bulunduğu SQL Server Instance' ının tam yolunu (\) yazın. Meselâ eğer bilgisayarınızda Visual Studio 2005 varsa, onunla birlikte de SQL Server 2005 Express Edition kurduysanız, yüklenen SQL Server Instance' ının varsayılan Instance' adı "SQLExpress" tir.

Diğer bir seçenek de, Instance' ınıza bir Bağlantı Metni (Connection String) kullanarak bağlanmaktır. Bunu da, yine aynı pencerede "Provide connection string" olarak bulabilirsiniz.

İlgili SQL Server Instance' ınıza bağlanmak için gereken bilgileri girdikten sonra "Next" düğmesine tıklayarak diğer pencereye geçin.

"Select Database" penceresinde (bkz. Resim 2), aktarmak istediğiniz veritabanını seçebilirsiniz. Bir seferde sadece bir veritabanı seçebilme hakkınız var.




Resim 2



Yine aynı pencerenin alt kısmında bir seçim kutusu göreceksiniz: "Script all objects in the selected database" (Seçili veritabanındaki tüm nesnelerin Script' ini oluştur.) Bu örnekte ben bu seçeneği işaretsiz bırakacağım, çünkü bu seçeneği seçtiğinizde, bu sihirbaz aktarabileceği tüm nesnelerin Script' ini oluşturacaktır. Benim bu seçeneği seçmememin nedeni ise, bir sonraki pencerede Script' lerinin oluşturulabileceği nesnelerin listesini görebilmenizdir. (bkz. Resim 3)




Resim 3



"Choose Object Types" te de görebileceğiniz gibi, ben sadece "Tables" nesneleri üzerinde işlem yapmak istediğimiz belirttim; durumunuza göre istediğiniz nesneleri seçebilirsiniz. (bkz. Resim 3) Ayrıca, veritabanınızda yukarıdaki tüm seçenekler çıkmayabilir. Bunun nedeni, veritabanınızda o nesnelerden bulunmamasıdır. Meselâ eğer veritabanınızda hiç "View" yoksa, o zaman bu pencerede "Views" seçeneğini göremezsiniz.

Aktarmak istediğiniz nesne grubunun adını seçtikten sonra -ki bizim örneğimizde bu "Tables", karşımıza "Choose Tables" penceresi çıkacak (bkz. Resim 4). Tahmin edebileceğiniz gibi, diğer nesneler için de ilgili diğer pencerelerle karşılaşacaksınız. Bu pencerelerde, o gruba ait hangi nesneleri aktarmak istediğinizi tek tek (veya hepsini) seçebileceksiniz.



Resim 4

Seçimlerinizi yaptıktan sonra sıra, Script dosyasının oluşturulacağı yeri ve gönderme şeklini belirlemeye geliyor. Biz, gönderme yöntemi olarak Script dosyasını oluşturma yöntemini kullanacağız. Çünkü şu anda çalıştığım barındırma şirketlerinden hiçbirisi Database Publishing Services hizmetini vermiyor.





Resim 5



"Select an Output Location" penceresinde Script dosyasını kaydedeceğiniz yeri seçtikten sonra, bu Script dosyasının oluşturulmasında kullanılacak seçeneklerin belirlenmesi için bir sonraki pencere olan "Select Publishing Options" penceresine (Resim 6) geçin.





Resim 6



Drop existing objects in script: Eğer değeri "True" ise hedefte aynı isimle zaten varolan nesneler bu Script dosyasındakilerle değiştirilir.

Schema qualify: Eğer değeri "True" ise üzerinde işlem yapılacak nesneler için Schema isimleri de kullanılır. (Örn:[SchemaAdı].[NesneAdı])

Script for target database: Script dosyasının SQL Server 2000 veya SQL Server 2005' e göre düzenlenmesi belirlenir.

Types of data to publish: Sadece Schema veya sadece veri veya her ikisinin de Script' lenmesi ayarları yapılır.

Bundan sonraki pencerede ise şu ana kadar yapmış olduğunuz seçimlerin listelendiği özet bölüm vardır ve bu sihirbazdaki son penceredir.

Tüm işlemleri tamamladınız ve elinizde veritabanınızın Script dosyası var. Şimdi, bu dosyayı kullanarak veritabanınızı uzaktaki SQL Server Instance' ında nasıl oluşturacağınızı anlatacağım. Bu işlem için bir kaç yöntem var, hangisinin en kolayı olduğu tabi size kalmış; fakat benim kendi yöntemim SQL Server Management Studio' yu kullanmak. Alternatif olarak SQLCMD ("sqlcmd.exe" SQL Server Instance' ınıza karşı işlem yapabileceğiniz ve SQL Server 2005 ve sonrası versiyonlarla gelen bir Komut İstemcisi uygulaması, önceki versiyonu ise "osql.exe" dir.) yi de kullanabilirsiniz.

Eğer bilgisayarınızda SQL Server Management Studio yok ise, SQL Server Management Studio Express aracını ücretsiz olarak buraya tıklayarak indirebilirsiniz. Bu aracın içerisinde, oluşturmuş olduğunuz *.SQL dosyasını çalıştırabileceğiniz "Query Editor" bölümü bulunmaktadır. (bkz. Resim 7)





Resim 7



SQL Server Management Studio' nun "File -> Open -> File with New Connection..." komutunu çalıştırın. Sizden, bir *.SQL dosyası açmanız beklenecektir. Database Publishing Wizard ile oluşturmuş olduğunuz dosyayı bulun ve açın. Daha sonra, bu dosyayı çalıştırmak için bağlanılacak olan SQL Server Instance' ının bilgilerini girmeniz istenecek. Bu bilgileri doğru bir şekilde girip SQL Server Instance' ınıza bağlandığınızda, Database Publishing Wizard ile hazırlamış olduğunuz *.SQL dosyasının da açıldığını göreceksiniz.

Veritabanınızı oluşturmak için son adım olarak Query Editor penceresindeki komutları çalıştırmak kaldı. Bu noktada, SQL Server Management Studio' nun "SQL Editor" araç çubuğundaki veritabanı listesinden doğru veritabanının seçili olduğundan emin olun. "Doğru veritabanı" derken, bu Script dosyasını çalıştıracağınız veritabanını kastediyorum. Şayet yanlış bir veritabanı seçiliyse, oluşturmuş olduğunuz bu Script dosyasındaki tüm nesneler yanlış veritabanında oluşturulacaktır. Bu yüzden doğru veritabanını seçmek gözden kaçırılmaması gereken önemli bir adım. Doğru veritabanını da seçtikten sonra, Script dosyasındaki komutları çalıştırmak için ya "F5" kısayol tuşunu veya yukarıdaki menüden "Query -> Execute" komutunu veya "SQL Editor" araç çubuğundaki "Execute" isimli düğmeye tıklamanız gerekiyor.

Özetle bu yazıda, Database Publishing Wizard ile, yerel SQL Server Instance' ınızda oluşturmuş olduğunuz veritabanınızı, uzaktaki başka bir SQL Server Instance' ında nasıl oluşturacağınızı anlatmaya çalıştım. Umarım işinize yarar.



Ekrem Önsoy

"The setup has encountered an unexpected error while Updating Installed Files. The error is: Fatal error during installation."

HATA MESAJI:
"The setup has encountered an unexpected error while Updating Installed Files. The error is: Fatal error during installation."

AÇIKLAMA:
Bir SQL Server 2005 Instance' ı yüklerken bu hata ile karşılaşabilirsiniz. Hatanın nedeni, kurulum yapıyor olduğunuz kullanıcının "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\WMI\Security" isimli Kayıt Defteri (Regedit) yolunda yeterli izninin bulunmaması olabilir.

ÇÖZÜM:
Başlat\Çalıştır => "regedit" yazıp onayladığınızda Kayıt Defteri açılacaktır. Bahsini ettiğim anahtara ulaşın ve "Security" isimli anahtarın üzerinde farenin sağ tuşuna tıklayın ve "Permissions" (eğer sisteminiz Türkçe ise "İzinler") öğesine tıklayın. Kaşısınıza izinlerle ilgili bir pencere çıkacaktır. Bu pencerede eğer sizin Windows kullanıcınız veya kullanıcınızın dahil olduğu grup yoksa bunu listeye ekleyin.

Eğer kullanıcınız veya dahil olduğunuz grup zaten listede varsa, o zaman o kullanıcının\grubun izninin "Full Control" olduğundan emin olun.

SQL Server 2008: IntelliSense

SQL Server 2008' in CTP sürümleriyle çalışanlar bilir, SQL Server 2008 CTP5 ve CTP6' sında IntelliSense özelliği SQL Server' ın önceki sürümleri için de kullanılabiliyordu. Bunun nedeni, IntelliSense kullanımı için versiyon kontrolünün yapılmamasıydı. SQL Server 2008' in RTM sürümüyle birlikte, IntelliSense için versiyon kontrolü özelliği eklendi ve RTM versiyonundan itibaren IntelliSense özelliği sadece SQL Server 2008 Instance' larına karşı kullanılabilir hale getirildi. Buna neden olarak da, bu özelliğin SQL Server 2008 ile birlikte ilk defa kullanılması ve eski SQL Server versiyonlarında bu özellikle ilgili çeşitli sorunlar yaşanılması gösterildi.

SQL Server 2008 Enterprise Edition

SQL Server' ın eski versiyonlarını Windows masaüstü işletim sistemlerine kurmaya çalışanlar bilir ki, SQL Server' ın Enterprise Edition' ı Windows XP veya Vista gibi işletim sistemlerinin üzerine kurulamazdı. Microsoft, bu kuralı SQL Server 2008 ile değiştirdi. SQL Server 2008 Enterprise Edition, Windows Vista veya Windows XP gibi masaüstü işletim sistemlerine kurulabiliyor!

"The server principal 'LoginAdı' is not able to access the database 'VeritabanıAdı' under the current security context. (.Net SqlClient Data Provider)

HATA MESAJI:
"The server principal 'LoginAdı' is not able to access the database 'VeritabanıAdı' under the current security context. (.Net SqlClient Data Provider)"

AÇIKLAMA:
SQL Server Management Studio 2008 (RTM) kullanarak bir SQL Server 2005 Instance' ına bağlandığınızda ve "Object Explorer" penceresindeki "Databases" düğümü genişlettiğinizde bu hata ile karşılaşabilirsiniz.

ÇÖZÜM:
Bu, maalesef SSMS 2008 (RTM) ' in çok önemli başka bir hatası.

Bu hata ile her zaman karşılaşmazsınız. Şayet bağlandığınız SQL Server 2005 Instance' ındaki herhangi bir veritabanının "Auto Close" özelliğinin değeri "True" ise o zaman "Object Explorer" penceresindeki "Databases" düğümünü genişlettiğinizde bu hata ile karşılaşırsınız.

Üzgünüm, ama bu konuda herhangi bir çözüm şu anda yok. Bu ürün de piyasaya daha yeni sürüldüğü için, henüz yama veya güncellemesi yok. Bu konuda bir çözüm bulunduğunda, yine sitemde duyuracağım.

"Server user 'UserName' is not a valid user in database 'DatabaseName'. (Microsoft SQL Server, Error: 916)"

HATA MESAJI:
"Server user 'UserName' is not a valid user in database 'DatabaseName'. (Microsoft SQL Server, Error: 916)"

AÇIKLAMA:
SQL Server Management Studio 2008 (RTM) kullanarak bir SQL Server 2000 Instance' ına bağlandığınızda ve "Object Explorer" penceresindeki "Databases" düğümü genişlettiğinizde bu hata ile karşılaşabilirsiniz.

ÇÖZÜM:
Bu, maalesef SSMS 2008 (RTM) ' in çok önemli bir hatası. Umarım yakında bu sorunla ilgili bir yama çıkar. Eğer Servis Paketini beklersek daha çok bekleyeceğiz...

Hatanın nedenine gelince, SSMS 2008 (RTM) ile bir SQL Server 2000 Instance' ına bağlandığınızda, SSMS sizin erişim hakkınız olan veya olmayan tüm veritabanlarına ait bazı bilgileri toplamaya çalışıyor. Haliyle, sizin kullanıcınızın erişim hakkı olmayan bir veritabanı olduğunda, bu hata ile karşılaşıyorsunuz ve "Object Explorer" penceresindeki "Databases" düğümünün altında hiç bir veritabanı gösterilmemiş oluyor.

Size bu konuda SQL Server Management Studio 2005' i kullanmanızı tavsiye etmekten başka bir çözüm önerim yok şimdilik. Eğer bulunursa veya bulursam, bu Hata ve Çözüm yazımı yeniden düzenlerim.

SQL Server 2008: Sparse Columns

Merhaba,


Kısaca, eğer bir alan içerisindeki (sütun) verilerin çoğunluğunu NULL değeri oluşturuyorsa, o zaman bu alanda veri tasarrufu sağlamak için bu alanın "Sparse" özelliğini etkinleştirirsiniz. "Sparse" özelliği, bu alanda saklanacak olan NULL değerleri için diskte daha az yer harcanmasını sağlayacaktır.

Tabi bunun da bir bedeli vardır, NULL olmayan alanlardaki veriler için harcanacak yer fazlalaşacaktır. Bu yüzden "Sparse" ı kullanmak için aklınızda bulundurmanız gereken altın kural, bu özelliği kullanacağınız alandaki değerlerin büyük çoğunluğunun NULL olması gerektiğidir. Bu değerler hakkında fikir sahibi olmak için aşağıdaki örnekleri inceleyebilirsiniz.

Her alan ve veritipinin de "Sparse" özelliği kullanılamaz, buna aşağıdaki örnekten sonra değineceğim.


Nasıl Kullanılır?

Bir alanı "Sparse" olarak belirlemek için ise CREATE TABLE veya ALTER TABLE komutlarını kullanmalısınız. Bu komutların SQL Server 2008 versiyonları hakkında daha fazla bilgi için buraya tıklayın.

Misal olarak aşağıdaki örneği uygulayın:

CREATE TABLE SparseOlmayanTablo(a int, b int, c int, d int)
GO

CREATE TABLE SparseOlanTablo(a int, b int SPARSE, c int SPARSE, d int SPARSE)
GO

DECLARE @i int=0
WHILE @i < 100000
BEGIN
INSERT INTO SparseOlanTablo VALUES (@i,null,null,null)
INSERT INTO SparseOlmayanTablo VALUES (@i,null,null,null)
SET @i+=1
END

Yukarıdaki işlem tamamlandıktan sonra da, hangi tabloda ne kadar alan kullanıldığını belirlemek için aşağıdaki satırları çalıştırın:

exec sp_spaceused SparseOlmayanTablo
exec sp_spaceused SparseOlanTablo

Bu iki komutu da çalıştırdıktan sonra, aşağıdaki gibi bir sonuç görmeniz gerekiyor:



Resim 1



Gördüğünüz gibi, iki tablo aynı alanları içerse de, "Sparse" özelliğini kullandığımız tablo diğer tabloya nazaran diskte %50 daha az yer kaplıyor.

"Sparse" özelliğinin veri depolanmasını nasıl etkileyebileceğini daha ayrıntılı bir şekilde anlatabilmek için bir de şu örneğe bakın

Örnek: 2
Tablo isimlerinin sonunda "N" olan tablolara NULL değerler koyacağız, diğerlerine ise sırayla bir sayı kaydedilecek.

DROP TABLE SparseOlanTablo
GO

DROP TABLE SparseOlmayanTablo
GO

CREATE TABLE SparseOlanTablo(a int SPARSE)
GO

CREATE TABLE SparseOlanTabloN(a int SPARSE)
GO

CREATE TABLE SparseOlmayanTablo(a int)
GO

CREATE TABLE SparseOlmayanTabloN(a int)
GO

Yine bir önceki örnekteki WHILE döngüsünü 3 kere kullanın. Birinci seferde 1.000 kayıt girin. İkinci seferde 10.000 ve üçüncü seferde de 100.000 kayıt girin. (Not: Kendi yaptığım örnekte, her yeni bir döngüye başlamadan önce tabloların içini boşalttım.)

DECLARE @i int=0
WHILE @i < 1000
BEGIN
INSERT INTO SparseOlanTablo VALUES (@i)
INSERT INTO SparseOlanTabloN VALUES (null)
INSERT INTO SparseOlmayanTablo VALUES (@i)
INSERT INTO SparseOlmayanTabloN VALUES (null)
SET @i+=1
END

Bunların sonucu ise aldığım "data" alanının (yani verilerin diskte ne kadar yer kapladıkları) değerleri şöyle:


Satır Sayısı SparseOlanTablo SparseOlanTabloN SparseOlmayanTablo SparseOlmayanTabloN
1.000 24KB 16KB 16KB 16KB
10.000 232KB 120KB 136KB 136KB
100.000 2288KB 1144KB 1352KB 1352KB



Gördüğünüz gibi, "Sparse" özelliğini kullandığımızda eğer tabloda hiç NULL değer yoksa, o zaman bu bize kârdan çok zarar verecektir. 100.000 kayıt girildiğinde "Sparse" özelliğini kullandığımız SparseOlanTablo isimli tablonun diskte kapladığı alan 2.288KB, fakat "Sparse" özelliği kapalı olan tablo olan SparseOlmayanTablo isimli tablonun diskte kapladığı alan ise 1.352KB. İkisinde de aynı veriler var.

Şimdi başka bir örnek daha yapacağız. Bu örnekte ise, SparseOlanTablo' daki verilerin %90' ı NULL olacak, %10' u ise sayılardan ibaret olacak.

Örnek: 3
DROP TABLE SparseOlanTablo
GO

DROP TABLE SparseOlmayanTablo
GO

CREATE TABLE SparseOlanTablo(a int SPARSE)
GO

CREATE TABLE SparseOlmayanTablo(a int)
GO

DECLARE @i int=0
WHILE @i < 10000
BEGIN
INSERT INTO SparseOlanTablo VALUES (@i)
INSERT INTO SparseOlmayanTablo VALUES (@i)
SET @i+=1
END

Yukarıdaki döngüyle birlikte, tablolarımıza on bin kayıtlık sayı girmiş olduk. Şimdi de doksan bin kayıtlık NULL veri gireceğiz.

DECLARE @i int=0
WHILE @i < 90000
BEGIN
INSERT INTO SparseOlanTablo VALUES (null)
INSERT INTO SparseOlmayanTablo VALUES (null)
SET @i+=1
END



Satır Sayısı SparseOlanTablo SparseOlmayanTablo
10.000 (Sayı) 264KB 136KB
90.000 (NULL) + 10.000 (Sayı) 1264KB 1352KB
900.000 (NULL) + 100.000 (Sayı) 12576KB 13520KB



Bu örneklerde hep "int" veritipini kullandık. Unutmayın ki, "Sparse" özelliğinin kullanımı değişik veritiplerinin kullanımında değişik sonuçlar verecektir.


"Sparse" Özelliğine SQL Server Management Studio ile Ulaşmak

Bu özelliğe, SQL Server Instance' larının yönetilmesi amacıyla kullanılan SQL Server Management Studio (SSMS)' dan ulaşmak için aşağıdaki adımları izleyin:
- SSMS' i başlatın,
- Çalışma yapacağınız SQL Server Instance' ına bağlanın,
- Object Explorer' dan ilgili veritabanınızdaki tablonuzu bulun ve üzerinde farenin sağ tuşua tıklayarak "Design" seçeneğini seçin,
- "Sparse" özelliğini (bkz Resim 2) açılan penceredeki Column Properties' de bulacaksınız.




Resim 2



"Sparse" Kullanımının Tespiti

Bir tablodaki bir alanın "Sparse" özelliğinin kullanılıp kullanılmadığını anlamak için ise aşağıdaki komutu kullanabilirsiniz:

SELECT COLUMNPROPERTY(object_id('dbo.SparseOlanTablo'),'b','IsSparse')

Eğer sonuç olarak "1" dönüyorsa, o zaman sorguladığınız alanın "Sparse" özelliği kullanılıyordur.


"Sparse" Özelliğinin Kullanım Kısıtlamaları

Yukarıda değineceğimi söylediğim gibi, "Sparse" özelliği her zaman ve her veritipi için kullanılamaz. Meselâ şu veritipleri kullanılan alanlarda "Sparse" özelliği kullnılamaz: geography, geometry, image, ntext, text, timestamp, user-defined data type.

Bunlardan başka, "Sparse" özelliği açık olduğunda, bu alan için bir "Default" değer tanımlanamaz. Bu alan bir "Rule" e bağlanılamaz. Bir "Computed Column" un, "Sparse" özelliği etkinleştirilemez. "Sparse" özelliği açık olan bir alan, bir "Clustered Index" veya bir "Unique Primary Key Index" in parçası olamaz.

Bunlar gibi kısıtlamalar ve "Sparse" ın hangi SQL Server teknolojileri ile kullanılabileceği hakkında daha fazla bilgi için buraya yıklayın.



Ekrem Önsoy

SQL Server 2008: Sertifikasyon 2

Merhaba arkadaşlar,



Takip edenler bilirler, bu konu hakkında daha önceden de bir yazı yazmıştım. (okumak için buraya tıklayın) Artık, SQL Server 2008' in sertifikasyonu hakkında daha net bilgiler var elimde. Bir mânâda da bu konunun devamı olarak görülebilecek bu yazımda, bu ürünün sertifikasyonu konusunda daha net bilgi edinebileceksiniz.



SQL Server 2008 Sertifikasyonunun Yol Haritası

Öncelikle size SQL Server 2008 Sertifikasyonunun yol haritasını göstermek istiyorum.

Bilenleriniz de olabilir, bilmeyenleriniz de; SQL Server 2005 Sertifikasyonunda MCTS (Microsoft Certified Technology Specialist) sertifikası için iki sınav vardı:
1. MCTS: SQL Server 2005
2. MCTS: SQL Server 2005 Business Intelligence

SQL Server 2008 Sertifikasyonunda ise MCTS sınavlarını da dallandırmışlar, yani artık her alanın kendi MCTS sınavı var, şöyle:
1 MCTS: SQL Server 2008, Implementation and Maintenance (70-432) (30 Eylül 2008)
2 MCTS: SQL Server 2008, Database Development (70-433) (10 Aralık 2008)
3 MCTS: SQL Server 2008 BI Development and Maintenance (70-448) (30 Eylül 2008)

Dikkatinizi çektiyse, yukarıda bulunan ve SQL Server 2008 sertifikasyonuna ait MCTS sınavları için bazı tarihler de yazdım. İşte bu tarihler, bu sınavların yürürlüğe girmesi beklenen tarihler. Bunları tabi ki ben uydurmadım, Microsoft Learning'in verdiği bilgi bu yönde.

Ayrıca, bu sınavlar hakkında daha fazla bilgi almak ve sınavlar yayınlanır yayınlanmaz bu sınavlara girmek isteyen (ve tabi ki bu erken sınav girişleri için de indirim almak isteyen)arkadaşlar şu adresten yararlanabilirler:
http:/www.microsoft.com/learning/mcp/sqlvs/offer/default.mspx



Peki ya MCITP sınavları?

Evet! Bu sınavlar konusunda da değişiklikler var arkadaşlar.

MCITP: Database Administrator 2008 70-450 PRO: Designing, Optimizing and Maintaining a Database Server Infrastructure using SQL Server 2008 (12 Kasım 2008)

MCITP: Database Developer 2008 70-451 PRO: Designing Database Solutions and Data Access Using SQL Server 2008 (26 Kasım 2008)

MCITP: BI Developer 2008 70-452 PRO: Designing a Business Intelligence Infrastructure using SQL Server 2008 (6 Kasım 2008)

Artık MCITP sertifikasını kazanmak için SQL Server 2005' te olduğu gibi iki sınava girmek gerekmiyor, bir sınav yetiyor. Yani diyelim ki "SQL Server 2008 Database Administrator" sertifikasını kazanmak istiyorsunuz. O zaman bunun için iki sınava girmeniz yeterli. Bu sınavlar: "MCTS: SQL Server 2008, Implementation and Maintenance" ve "MCITP: Database Administrator 2008 70-450 PRO: Designing, Optimizing and Maintaining a Database Server Infrastructure using SQL Server 2008".

SQL Server 2008' in herhangi bir MCTS sertifikasına, SQL Server 2005 MCTS' ten yükseltme (Upgrade) yok. Çünkü zaten MCTS: SQL Server 2008 sertifikaları için bir sınav yetiyor.



Yükseltme Sınavları

SQL Server 2008' in MCITP sertifikalarına yükseltme yapmak için ise, ilgili alana denk olan başka bir MCITP sertifikasına sahip olmalısınız. Yani bu durumda diyelim ki eğer SQL Server 2005 MCITP: Database Administrator sertifikanız yoksa, o zaman SQL Server 2008 MCITP: Database Administrator sertifikasına yükseltme yapamazsınız.

MCDBA sertifikasından da doğrudan SQL Server 2008' in herhangi bir sertifikasına yükseltme yapma şansınız yok. Eğer MCDBA sertifikanız varsa, SQL Server 2008' e ancak şu şekilde yükseltme yapabilirsiniz: Öncelikle SQL Server 2005' e yükseltme yapmak için 2 sınava girmeniz gerekecek, daha sonra da SQL Server 2005' ten SQL Server 2008' in ilgili alanına yükseltme yapacaksınız.

Yükseltme sınavları ise şunlar:
70-453 UPGRADE: Transition your MCITP DBA Skills to MCITP DBA 2008. Bir sınavla hem MCTS: DBA 2008, hem de MCITP: DBA 2008' i kazanmış olursunuz.

70-454 UPGRADE: Transition your MCITP DBD Skills to MCITP DBD 2008. Bir sınavla hem MCTS: DBD 2008, hem de MCITP: DBD 2008' i kazanmış olursunuz.

70-455 UPGRADE: Transition your MCITP BID Skills to MCITP BID 2008. Bir sınavla hem MCTS: BID 2008, hem de MCITP: BID 2008' i kazanmış olursunuz.



Ömrünü Tamamlayacak Sınavlar

SQL Server 2000' in sınavları (70-228 ve 70-229) 31 Mart 2009' da ömürlerini tamamlamış olacaklar. Microsoft, MCDBA sertifikasını kazanmanız adına eğer eksik sınavlarınız kaldıysa, bunları tamamlamanız için sizi teşvik ediyor. Bu nedenle de 1 Eylül 2008' den itibaren bu sınavlar herhangi bir Voucher Kodu veya başka bir kod gerektirmeden, bu tarihten sonra yapacağınız ve sınavlar yürürlükte kalana kadar %40 indirimli olacaklar.

SQL Server 2008 Sertifikasyonu hakkında daha fazla bilgi edinmek için aşağıdaki adresi ziyaret edebilirsiniz:
http://www.microsoft.com/learning/mcp/sql/2008/default.aspx

SQL Server 2008 hakkında daha fazla bilgi için ise şu adres işinize yarayabilir:
http://www.microsoft.com/learning/sql/2008/default.mspx




Ekrem Önsoy

"RESTORE cannot process database 'DenemeDB' because it is in use by this session. It is recommended that the master database be used when performing t

HATA MESAJI:
"RESTORE cannot process database 'DenemeDB' because it is in use by this session. It is recommended that the master database be used when performing this operation."

AÇIKLAMA:
Bir SQL Server 2005 veritabanını açmaya (RESTORE) çalışırken bu hata mesajı ile karşılaşabilirsiniz.

Bu hata mesajından, açmaya çalıştığınız veritabanına birisinin (veya kendinizin) bağlı olduğunu anlayabilirsiniz.

Meselâ, "DenemeDB" isimli bir veritabanınız var diyelim ve bu veritabanının üzerine, yine aynı bu isimle bir veritabanı açmaya çalışıyorsunuz; işte bu anda eğer "DenemeDB" isimli veritabanına açık birbağlantı varsa, bu hata mesajı ile karşılaşırsınız.

ÇÖZÜM:
Bu sorundan kurtulmak için, açma işlemini yapmadan önce aşağıdaki komutu kullanıp etkin veritabanı olarak MASTER veritabanını seçmelisiniz.

USE MASTER

Not:
Bilmeyenler için, "Master" sistem veritabanı, SQL Server' ın 5 ana sistem veritabanından (Master, Msdb, Model, Tempdb, Resource) birisidir. SQL Server' ın sistem veritabanları hakkında daha fazla bilgi için şu adresi ziyaret edebilirsiniz: http://msdn.microsoft.com/en-us/library/ms178028.aspx

"[Microsoft][ODBC SQL Server Driver][DBMSLPCN]SQL Server does not exist or access denied."

HATA MESAJI:
[Microsoft][ODBC SQL Server Driver][DBMSLPCN]SQL Server does not exist or access denied."

AÇIKLAMA:
Bir SQL Server 2000 Instance' ına bağlanmaya çalışırken bu hata mesajı ile karşılaşabilirsiniz.

ÇÖZÜM:
Bir olmayan bir SQL Server 2000 Instance' ına bağlanmaya çalışırsanız, bu hata mesajı ile karşılaşmanız büyük olasılıktır.

Örneğin, kurulu ve çalışan bir SQL Server 2000 Instance' ımız olsun ve bunun da Instance adı "Test_Instance" olsun. Buna bağlanmak için gerek Bağlantı Metnimizde gerek herhangi bir SQL Server GUI' sinde sunucu adı olarak "\" şeklinde bir biçim kullanmamız gerekir. Bilgisayarımın adına da "EKREM-PC" dersek, bu durumda benim SQL Server' ım için kullanacağım sunucu adı şöyle olacaktır: "EKREM-PC\Test_Instance".

Eğer yukarıdaki şekilde değil de, sadece "Test_Instance" yazsaydım veya bir yazım yanlışı yapsaydım, o zaman yukarıdaki hata ile karşılaşırdım.