27 Kasım 2007 Salı

"Create maintenance plan failed. Create failed for JobStep 'Subplan'. (Microsoft.SqlServer.MaintenancePlanTasks)"

HATA MESAJI:
"Create maintenance plan failed. Create failed for JobStep 'Subplan'. (Microsoft.SqlServer.MaintenancePlanTasks)"

AÇIKLAMASI:
Eğer SQL Server 2005' in RTM (Release to Manufacturer) versiyonunu (9.00.1399.x) kullanıyorsanız ve SSIS yüklememişseniz, Maintanence Plan oluşturmaya çalıştığınızda bu hatayı alırsınız.

ÇÖZÜM:
Bu hatayı almadan, SQL Server 2005' te Maintanence Plan oluşturmak için ya en az SQL Server 2005 Servis Paketi 1' i yüklemelisiniz, ya da SSIS' i yüklemelisiniz.

En azından SQL Server 2005 SP1' i yükledikten sonra, SSIS' i yüklemek zorunda kalmadan Maintanence Plan oluşturabilirsiniz.

26 Kasım 2007 Pazartesi

"SQL Server' ı kurarken hangi 'Collation' ayarını kullanmalıyız?"

Merhaba arkadaşlar,


Habergruplarından bir arkadaşın sorduğu bu soru üzerine bir yazı yazmak iyi olur diye düşündüm. Bazen aklımızı çok karıştırıyor bu soru. "SQL Server' ı kurarken hangi Collation ayarını kullanacağız? 'Windows Collation' mı yoksa 'SQL Collation' mı?

Peki, konuya vakıf olmayan arkadaşlar daha da önce şunu soracak: "Collation" da neymiş? =)

Tamam, geliyor işte: Sözlük anlamı "Sıraya dizme, karşılaştırma" olan "Collation" SQL Server' da da tam olarak bu mânâlarda kullanılıyor. Bir tür dil ayarı...

SQL Server Setup' da karşılaşacağınız Collation Ayarları penceresini aşağıdaki resimde de görebilirsiniz.





Seçeceğiniz "Collation" ayarı, SQL Server Instance' ınızda yapacağınız veri karşılaştırmaları ve verileri sıralama gibi işlemleri doğrudan etkileyecektir.

SQL Collation' ları, SQL Server' da artık sadece geriye dönük destek için bulunmaktadır. Eğer aşağıdaki durumlar sizin için de geçerliyse, SQL Collation kullanmak durumundasınız demektir:

- Ortamınızda birbiri ile iletişim içerisinde olan SQL Server 6.5, 7.0 ve 8.0 versiyonları varsa. (Bu iletişim ve etkileşim Replication yoluyla olabilir meselâ)

- Eğer bir uygulamanız var ve bu uygulamanız da SQL Server 8.0 ve bundan daha eski SQL Collation' larına bağımlı olarak çalışıyorsa.

Normal şartlarda, sıfırdan bir SQL Server kuracağınız zaman kesinlikle Windows Collation' larını kullanmanızı tavsiye ederim.

Bununla birlikte, SQL Collation' ın bir takım uyumsuzlukları da vardır. Meselâ:

- Database Engine ile birlikte Analysis Services' i de kuruyorsanız ve Collation olarak bir SQL Collation' ı seçmişseniz şayet, Analysis Services için SQL Collation kullanılamayacaktır. SSAS için sadece Windows Collation' ları kullanılabilir. SQL Server Setup, SSAS için, seçtiğiniz SQL Collation' ına en yakın Windows Collation' ını otomatik olarak seçecektir. Tabii bu da Database Engine ve Analysis Services arasındaki veri alış-verişlerinde uyumsuzluk sorunlarına neden olabilir.

- Eğer SQL Collation kullanıyorsanız, Unicode ve Non-Unicode (örnek olarak veritipi nchar \ char) olan iki alana ait verinin karşılaştırılmasında sorun yaşayabilirsiniz. Eğer iki veritipi de Unicode ise veya iki veritipi de Non-Unicode ise sorun olmayacaktır.


Ekrem Önsoy

"A severe error occurred on the current command."

HATA MESAJI:
"A severe error occurred on the current command."

AÇIKLAMASI:
SQL Server 2000 veya 2005' in tüm sürümlerinde, bazı sorgu veya Stored Procedure' leri çalıştırmayı denediğinizde bu hata ile karşılaşabilirsiniz.

ÇÖZÜM:
SQL Server 2000:
SQL Server 2005' te bu hata için bir FIX üretti Microsoft. Bu FIX de SQL Server 2005' in Servis Paketi 1' inin içinde bulunmaktadır.

Bu sorunu gidermek için SQL Server 2005' in en son Servis Paketini yüklemenizi öneririm.

Daha fazla bilgi almak için:
http://support.microsoft.com/kb/896373

SQL Server 2005:
SQL Server 2005' te bu hata için bir FIX üretti Microsoft. Bu FIX de SQL Server 2005' in Servis Paketi 1' inin içinde bulunmaktadır.

Bu sorunu gidermek için SQL Server 2005' in en son Servis Paketini yüklemenizi öneririm.

Daha fazla bilgi almak için:
http://support.microsoft.com/kb/910416/en-us

"Database 'veritabani_adı' cannot be opened due to inaccessible files or insufficient memory or disk space. See the SQL Server errorlog for details. (

HATA MESAJI:
"Database 'veritabani_adı' cannot be opened due to inaccessible files or insufficient memory or disk space. See the SQL Server errorlog for details. (Microsoft SQL Server, Error: 945)"

AÇIKLAMASI:
Veri ve Log dosyaları silinmiş bir veritabanına ulaşmaya çalıştığınızda bu hata ile karşılaşırsınız.

ÇÖZÜM:
Dosyalar zaten silindiği için yapabileceğiniz pek bir şey yoktur. En son aldığınız yedekten geri dönmeye çalışmanızı öneririm.

"Connections to SQL Server files (*.mdf) require SQL Server Expres 2005 to function properly. Please verify the installation of the component or downl

HATA MESAJI:
"Connections to SQL Server files (*.mdf) require SQL Server Expres 2005 to function properly. Please verify the installation of the component or download from the URL: http://go.microsoft.com/fwlink/?LinkId=49251"

AÇIKLAMASI:
Visual Studio 2005' te, Projenize bir Veritabanı eklemek istediğinizde bu hata ile karşılaşabilirsiniz.

Nedeni, Veri Bağlantıları (Data Connections)' ndaki "SQL Server Instance Name" ayarının yanlış yapılandırılmasından kaynaklanıyor.

ÇÖZÜMÜ:
Visual Studio 2005' teki "SQL Server Instance Name" ayarını doğru bir şekilde yapılandırmak için Visual Studio 2005' i çalıştırın. Daha sonra sırasıyla aşağıdaki adımları izleyin:

- "Tools",
- "Options...",
- "Database Tools",
- "Data Connections",
- "SQL Server Instance Name" kutusuna geçerli bir SQL Server 2005 Express Edition Instance' ının adını girin. Eğer SQL Server Instance' ınızı "Default Instance" olarak kullanıyorsanız, o zaman bu kutuyu boş bırakın.

23 Kasım 2007 Cuma

SQL SERVER 2008 : Yedek Sıkıştırma (Backup Compression) Özelliği

Merhaba arkadaşlar,

Bu makalemde sizlere SQL Server 2008 ile birlikte gelen Sıkıştırılmış Yedekleme (Compressed Backup) özelliğinden bahsedeceğim.

Bazılarınızın da bildiği gibi, bu sıkıştırılmış yedekleme özelliği gerçekten çok gerekiyordu. Veritabanı yöneticileri açısından veritabanları konusundaki en önemli şeyler güvenlik, verinin kullanılabilirliği ve performanstır. Yedekleme, veritabanı yöneticileri için hayati ve sürekli yapılması gereken bir işlemdir. Her zaman son yedeğiniz kadar güvendesinizdir.

SQL Server 2008' den önceki SQL Server versiyonlarında maalesef sıkıştırma özelliği yoktu. Bazı veritabanı yöneticileri bu ihtiyaçlarını üçüncü parti yazılımlar (Red-Gate Backup gibi) kullanarak gideriyordu.

Peki, sıkıştırma neden gerekiyor? Yukarıda da dediğim gibi, veritabanı yöneticilerinin sürekli yedek almaları gerekiyor. Diskler artık eskisi gibi pahalı değiller, çok daha kolay alabiliyoruz; fakat eğer doğru ve düzenli bir şekilde kullanılmazlarsa bir süre sonra disk yönetimi de sorun olmaya başlıyor. Örnek vermek gerekirse, SQL Server sunucularından sorumlu olduğum büyük bir firma, disklerini çok kötü kullanıyordu. Raporlarımda sürekli belirtmeme rağmen gelişi güzel yedekler alıp oraya buraya atıyorlardı ve sonunda ne oldu tahmin edin! Evet, patladılar =)

Eğer yedeklerimizi düzenli ve kontrollü bir şekilde alırsak, böyle sorunlarla karşılaşmayız. Neyse, çok dağıtmadan hemen sıkıştırmanın neden gerektiğine de bir vurgu yapıp hemen yeni özelliklerden bahsedeyim. Gerçi artık vurguya da gerek kalmadı, söylemek istediğim şeyi sanırım çoktan anlamışsınızdır... Bol yedek alacağımız için, disk alanlarından kazanmamız gerekiyor. Ayrıca, sıkıştırma yöntemi kullanacağımız için dosya boyutu daha küçük olacak, yani G\Ç (I\O) işlemleri de azalacak. Her şekilde kazanmış oluyoruz. Tek kayıp var, ondan da sırası gelince bahsedeceğim.

Sıkıştırılmış Yedek özelliği sadece SQL Server 2008' in Enterprise Sürümünde olacak arkadaşlar. Bununla birlikte, bir SQL Server 2008 Enterprise sürümüyle sıkıştırılmış veritabanı yedeği, başka bir SQL Server 2008 sürümüyle (meselâ Standard veya Express) açılabilecek; fakat diğer sürümler maalesef sıkıştırılmış yedek alamayacaklar. Ayrıca, SQL Server' ın eski versiyonları (90, 80, 70...) SQL Server 2008 ile alınan sıkıştırılmış yedekleri açamayacaklar.

Sıkıştırılmış bir yedek ile sıkıştırılmamış bir yedek aynı medya-set' inde saklanamaz.

Her şeyin ama her şeyin bir bedeli olduğuna inanırım; evet, bunun da bir bedeli var! Fiyatı hariç =) Bedeli şu: İşlemci. Evet arkadaşlar, sıkıştırma işlemi, işlemcinizi yoracak. Bununla birlikte, yukarıda da bahsettiğim gibi yedek alma süresini düşüreceği için G\Ç' dan ("Girdi\Çıktı" Bu terimden, fiziksel disklere yapılan yazma ve okumalar kastediliyor.) kâr edeceksiniz.

Bu sıkıştırma işinin gördüğünüz gibi bazı maliyetleri olacağı için, bu işe kalkışmadan önce gerekli performans testlerini yapmanızı tavsiye ederim. Ve de yedeklerinizi iş saatleri dışında almanızı tavsiye ederim. İşlemci o zamanlar daha az kullanılıyor olacaktır. Ayrıca, sıkıştırılmış yedek alacağınız zaman iş saatlerinde işlemcinize ekstra yük bindirmemiş olursunuz. Performans testlerini Yönetimsel Araçlar' daki Sistem Monitörü ile yapabilirsiniz.

Sıkıştırılmış veritabanı yedeği özelliği hem sunucu düzeyinde varsayılan olarak ayarlanabilir, hem de yedek alırken T-SQL komutunun içerisinde siz de belirleyebilirsiniz. Ve tabii ki, SSMS' te yedekleme işlemi için menüleri kullanarak da belirlenebilir.

Bu yöntemlere dair bir kaç tane örnek ve resim de göstermek istiyorum sizlere.


Sunucu düzeyinde ayar yapmak için:

- sp_configure Transact-SQL komutunu kullanabilirsiniz,

veya

- SSMS arayüzünü kullanarak, aşağıdaki resimde de gösterdiğim yerden varsayılan ayar değişikliğini yapabilirsiniz.





Sunucu düzeyinde yapılan varsayılan sıkıştırılmış yedek alma ayarından farklı bir yedek almak için ise aşağıdaki yöntemleri kullanabilirsiniz:

- BACKUP DATABASE \ LOG komutu ile birlikte WITH NO_COMPRESSION veya WITH COMPRESSION anahtarlarını kullanabilirsiniz.

veya

- SSMS kullanarak aldığınız yedeğin Seçenekler menüsünden "Compress backup" veya "Do not commpress backup" seçeneklerini kullanarak ihtiyacınıza göre yedek alabilirsiniz. Ayarı nereden yapacağınıza dair de bir resim ekliyorum aşağıya.





Tabii bir de veritabanlarının neye göre ve ne kadar sıkıştırılacağı konusu var. Bu konuda da aşağıdaki bilgileri dikkate alın. Veritabanlarınızın yedekleri, bu kriterlere göre çok veya az sıkıştırılacaktır.

- Verinin tipi: Her zaman olduğu gibi (Winzip veya Winrar vb. programlarda) karakterler daha çok sıkıştırılır.

- Sayfa (Page)' lardaki satırların veri bütünlüğü: Tipik olarak, bir sayfadaki satırlarda bulunan verriler aynı değerleri içeriyorsa önemli bir miktarda sıkıştırma oranı yakalayabilirsiniz. Tam tersi bir senaryoda ise, yani eğer her sayfada büyük ve sadece bir satır varsa veya veritabanınızda hep farklı farklı, birbirine benzemeyen veriler varsa o zaman sıkıştırılmış veritabanı yedeğinizin boyutu, hiç sıkıştırılma işlemine uğramamış veritabanı yedeğiyle aynı olacaktır büyük ihtimalle.

- Verilerinizi şifreli olup olmadığı (Encrypted): Sıkıştırılmış veritabanı yedeğiniz, şifrelenmemiş benzerlerine göre çok daha az sıkıştırılacaktır.

- Veritabanınızın sıkıştırılmış olup olmadığı: Bu durumda sıkıştırılmış veritabanı yedeğiniz neredeyse hiç bir boyut azalmasına neden olmayacaktır.

Not: Bu son öğede lütfen yanlış anlaşılma olmasın. SQL Server 2008' de, veritabanını da sıkıştırabiliyorsunuz. Yani veritabanını sıkıştırmak başka bir işlem, sıkıştırılmış veritabanı yedeği almak başka bir işlem.

Özet:
Size bu makalemde SQL Server 2008 Enterprise Edition ile birlikte gelecek olan Yedek Sıkıştırma (Backup Compression) özelliğini anlatmaya çalıştım. Umarım yararlı olmuştur.


Ekrem Önsoy

22 Kasım 2007 Perşembe

"The SQL Server ('Instance_Adı') service failed to start due to the following error: The service did not start due to a logon failure."

HATA MESAJI:
SQL Server Configuration Manager:
The request failed or the service did not respond in a timely fashion. Consulf the event log or other applicable error logs for details.

Event Log:
"The SQL Server ('Instance_Adı') service failed to start due to the following error:
The service did not start due to a logon failure."

AÇIKLAMA:
SQL Server servisini başlatmaya çalıştığınızda alırsınız bu hatayı. Nedeni ise, SQL Server servis hesabının şifresinin değiştirilmesidir. Fakat SQL Server servisinin şifresi güncellenmemiştir.

Biraz karışık oldu gibi, şöyle anlatmaya çalışayım. Meselâ kendi başına çalışan (Stand-Alone) bir SQL Server' ınız var. SQL Server Insance' ınız için bir kullanıcı hesabı oluşturdunuz. Daha sonra bu hesabını, SQL Server Instance' ınızı çalıştıracak şekilde ayarladınız. Fakat bir şey oldu ve bu servis hesabının şifresini değiştirmeniz gerekti. Yönetimsel Araçlardan Bilgisayar Yönetimi' ne gittiniz ve hesabın şifresini değiştirdiniz. Fakat hesabı kullanan servislerdeki bilgiler otomatik olarak güncellenmez. Meselâ Services MMC veya SQL Server Configuration Manager yoluyla ulaşabileceğiniz SQL Server servisinin hesabı, eskisi olarak kalacaktır. Ve siz SQL Server Instance' ınızı çalıştırmaya çalıştığınızda bu hatayı alırsınız. Çünkü servis hâlâ eski kullanıcı şifresini kullanarak çalışmaya çalışıyordur.

ÇÖZÜM:
SQL Server Instance' ınızın servis hesabı bilgilerini güncellemelisiniz. Bunu iki pratik yolla yapabilirsiniz:

1- Başlat\Çalıştır "Services.msc" yazıp Tamam düğmesine tıklayın. Açılan pencerede ilgili SQL Server servisinizi bulun. Özellikler' inden gerekli şifre güncellemesini yapın.

2- SQL Server Configuration Manager' ı başlatın. SQL Server 2005 Services düğümüne tıklayın ve ilgili SQL Server servisini bulup, gerekli şifre güncellemesini yapın.

Not:
Bu sorun sadece SQL Server servisleri için değil, tüm servileriniz için geçerlidir.

"Drop failed for Login 'Login_Adı'. The server principal owns an endpoint and cannot be dropped. (Microsoft SQL Server, Error: 15141)"

HATA MESAJI:
"Drop failed for Login 'Login_Adı'. The server principal owns an endpoint and cannot be dropped. (Microsoft SQL Server, Error: 15141)"

AÇIKLAMA:
SQL Server 2005' te bir Login' i silmeye çalıştığınızda bu hata ile karşılaşabilirsiniz. Nedeni de, bu Login' in sahip olduğu bir Endpoint' in bulunmasıdır.

SQL Server 2005' te Endpoint' ler veritabanı değil, sunucu bazındadırlar. Endpoint' lerinize SSMS (SQL Server Management Studio) ile, Object Explorer penceresindeki Server Object\Endpoints düğümleri altından da ulaşabilirsiniz.

Not: Endpoint' ler SSMS arayüzünden oluşturulamazlar. Sadece T-SQL kullanılarak CREATE ENDPOINT komutlarıyla oluşturulabilirler. Endpoint' ler hakkında daha fazla bilgi için buraya tıklayınız.

ÇÖZÜM:
Bu hatayı almamak için, önce silmek istediğiniz Login' e ait Endpoint' leri kaldırmanız gerekiyor.

Bunun için, yukarıda anlattığım şekilde Endpoint' lerinizi bulabilirsiniz. Bulduğunuz Endpoint' lerin hangi Login için yetkilendirdiğini bulmak için de, SSMS yoluyla bulduğunuz Endpoint' in üzerinde farenin sağ tuşuna tıklayıp Script Endpoint as: CREATE To seçeneklerini kullanabilirsiniz. Açılan sorgulama penceresinde AUTHORIZATION kısmını kontrol edebilirsiniz.

"'LandingPage' is not a valid value for setting 'ACTION'. Refer to Help for more information."

HATA MESAJI:
"'LandingPage' is not a valid value for setting 'ACTION'. Refer to Help for more information."

AÇIKLAMA:
SQL Server 2008 November CTP Setup dosyasını çalıştırmayı denediğinizde bu hatayı alabilirsiniz.

ÇÖZÜM:
Denetim Masasındaki Bölge ve Dil Seçenekleri' nde bulunan Biçim' i Türkçe' den İngilizce' ye çevirdiğinizde SQL Server 2008 November CTP Setup, kuruluma devam edebiliyor.

Microsoft SQL Server 2008 November CTP artık indirilebilir!

Merhaba Arkadaşlar!

Bugün Microsoft' tan gelen bir haber ile SQL Server 2008 Kasım CTP' sinin indirilebileceğini öğrendim.

SQL Server 2008 Kasım CTP' sini aşağıdaki adresten indirebilirsiniz!

http://www.microsoft.com/downloads/details.aspx?FamilyId=3BF4C5CA-B905-4EBC-8901-1D4C1D1DA884&displaylang=en

Not:
Tam deneme sürümlerinin yanısıra, bir de Express Edition da yayınlanmış!

Ekrem Önsoy

19 Kasım 2007 Pazartesi

SQL SERVER 2005 EXPRESS EDITON' da OTOMATİK YEDEKLEME

Son güncelleme tarihi: 17 Kasım 2007


Merhaba arkadaşlar,

Bu makalede sizlere anlatmak istediğim şey SQL Server 2005 Express Edition' da otomatik yedekleme sisteminizi nasıl oluşturabileceğiniz olacak.

SQL Server 2005 Express Edition, SQL Server 2005 serisinin ücretsiz sürümüdür. Aynen SQL Server 2000' deki MSDE gibi. Fakat SQL Server 2005' in altyapısıyla ve fazladan özelliklerle. Meselâ artık veritabanı boyutu sınırı 2GB değil, 4GB.

SQL Server 2005 Express Edition' da otomatik olarak yedek almak isteyeceğiniz zaman muhtemelen ilk önce SQL Server Agent servisinin olmadığını göreceksiniz. Belki bazıları da otomatik yedekleme ve diğer işlemler için Maintanence Plan' ı arayacaklar; fakat SQL Server Agent olmadığı için, bunu da bulamayacaklar.

SQL Server Agent servisi, SQL Server 2005' in Workgroup, Standard, Developer ve Enterprise sürümleriyle geliyor sadece. Ayrıca SQL Server 2005 Express Edition' da, SSIS (SQL Server Integration Services) da yok. SSIS, SQL Server 2000' deki DTS (Data Transformation Services)' in ardılı. Fakat SSIS tamamen baştan yazılmıştır ve DTS' e kıyasla çok güçlüdür. Visual Studio ile tamamen entegre edilmiştir.

Sonradan SQL Server 2005 Express Edition' ın bir versiyonu daha çıktı, bu da SQL Server 2005 Express Edition with Advanced Services. Bu sürümde, SQL Server 2005 Express Edition' a oranla bazı yeni özellikler var; fakat bunda da SQL Server Agent yok.

Not: Bu özelliklerden burada bahsetmeyeceğim, çünkü konumuzun dışında.

Peki bu yukarıda anlattıklarım, eğer SQL Server 2005 Express Edition kullanıyorsak zamanlanmış \ otomatik (Scheduled) yedek alamayacağımız anlamına mı geliyor? Tabii ki hayır! Her zaman bir yol vardır =)

Meselâ şöyle bir yol kullanabilirsiniz:

- Almak istediğiniz yedek ile ilgili bir T-SQL Script' i oluşturun.
- Script' i SQLCMD' ye aktararak, orada çalıştırın.
- Windows Zamanlanmış Görevler (Windows Scheduled Tasks) kullanarak bir görev zamanlayın.

T-SQL Script' ine örnek:
BACKUP DATABASE [test_2000] TO DISK = N'c:\test\test.bak' WITH NOFORMAT, INIT, NAME = N'test_2000-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10 GO

Not: BACKUP komutu hakkında daha fazla bilgi almak için aşağıdaki adresi ziyaret edebilirsiniz:
http://msdn2.microsoft.com/en-us/library/ms186865.aspx

Not: T-SQL Script' inizi pratik yoldan oluşturmak:
SQL Server 2005 ile birlikte neredeyse her arayüz penceresinde Script' leme gibi bir özellik var. Meselâ aşağıdaki çizdiğim yolu takip ederseniz bunu göreceksiniz.

- SQL Server Management Studio Express Edition' ı çalıştırın. SQL Server Instance' ınıza bağlanın.
- Yedeğini almak istediğiniz veritabanı üzerinde farenin sağ tuşuna tıklayın ve açılan menüden de "Tasks" ardından da "Back Up..." öğelerine tıklayın.
- Açılan "Back Up Database" penceresinde gerekli yedekleme ayarlarınızı yaptıktan sonra, aynı pencerenin en üstünde yer alan iki düğme göreceksiniz. Bunlar: "Script" ve "Help" düğmeleridir.
- "Script" düğmesinin hemen yanındaki aşağı ok düğmeciğine tıklayın ve "Script Action to File" öğesini seçin. Sizden Script dosyasını bir yere kaydetmenizi isteyecek. Bu dosyayı, almak istediğiniz yedeği otomatikleştirmek için kullanacağız. Ona göre bir yere saklayın.

Not: Benim örneğimde ben bu dosyayı "c:\Test" klasörü altında "OtoYedek.sql" olarak saklayacağım.

- İsterseniz dosyayı kaydettikten sonra gidip dosyanın içeriğine bakabilir ve değiştirebilirsiniz.

SQLCMD:
SQLCMD.exe, SQL Server 2000' deki ve SQL Server 2005' dte de geriye dönük destek vermek için hâlâ bulunan OSQL.exe' nin halefi. Bu komut satırı uygulaması ile, SQL Server Instance' ınızda işlemler yapabilirsiniz. Meselâ biz bu makalemizde yukarıdaki örnekte oluşturduğumuz OtoYedek.sql dosyasını SQLCMD ile birlikte çalıştıracağız. SQLCMD uygulamasını da Windows Zamanlanmış Görevler ile çalıştıracağız ve böylece otomatik yedek almış olacağız.

Peki oluşturduğumuz OtoYedek.sql dosyasını SQLCMD ile nasıl çalıştıracağız? Şöyle:
- Bir komut satırı açın (Başlat\Çalıştır metin kutusuna "cmd" yazın ve Tamam düğmesine tıklayın.)
- Komut satırını açtıktan sonra, OtoYedek.sql dosyamız ile SQLCMD' nin nasıl çalıştığını görmek için şu komutu yazın: "SQLCMD -S Ekrem-PC\SQLEXPRESS -E -i C:\Test\OtoYedek.sql"

Not: Bu komuttaki -S anahtarı Sunucu adını temsil ediyor. Bendeki sunucu adı "Ekrem-PC". Ayrıca kullandığım SQL Server Instance' ı bir "Named Instance". Eğer Default Instance olsaydı, o zaman sadece sunucu adını yazmam yeterli olacaktı. -E anahtarı ise Güvenli Bağlantı (yani Windows Authentication' ı) ' yı temsil ediyor. Eğer SQL Server' da yetkilendirme için Windows Authentication değil de, SQL Server Login kullanıyorsanız o zaman -E anahtarını kullanmayı, -U anahtarı ile kullanıcı adınızı, -P anahtarı ile de şifrenizi girmeniz gerekecek. -i anahtarı ise, kullanmak istediğimiz T-SQL Script dosyasının yolunu tarif etmek içindir.

- Yukarıda vermiş olduğum satırı çalıştırdıktan sonra, Eğer siz de benimle aynı yoldan gittiyseniz, aynı isimli klasör ve dosyaları kullandıysanız (ki daha önceden "C:\Test" klasörünü oluşturmuş olmanız gerekiyor, yoksa hata alırsınız) "C:\Test" klasöründe "test.bak" isimli bir dosyanın oluştuğunu göreceksiniz.

Not: SQLCMD hakkında daha fazla bilgi edinmek istiyorsanız ve diğer anahtarlarını da öğrenmek istiyorsanız, komut satırındayken "SQLCMD - ?" yazıp Enter tuşuna basabilirsiniz.

Şimdi sıra Windows Zamanlanmış Görevler' e geldi.

Zamanlanmış Görevler:
- Denetim Masası \ Zamanlanmış Görevler
- Zamanlanmış Görev Ekle
- Zamanlanmış Görev Sihirbazından: Gözat düğmesine tıklayın ve SQLCMD dosyasın bulun (Benim test makinemdeki yeri ve varsayılan yeri örnek olarak şöyledir: "C:\Program Files\Microsoft SQL Server\90\Tools\Binn")
- İhtiyacınıza göre zamanı ayarlayın,
- Görevin çalışmasını sağlayacak ve yeterli yetkilere sahip bir kullanıcı hesabının bilgilerini girin
- Görevi oluşturduktan sonra görevin özelliklerine girin ve Çalıştır mtin kutusundaki "C:\Program Files\Microsoft SQL Server\90\Tools\Binn\SQLCMD.exe" yazan satıra, yukarı kullandığımız anahtarları da ekleyin. (Örn: "C:\Program Files\Microsoft SQL Server\90\Tools\Binn\SQLCMD.exe -S Ekrem-PC\SQLEXPRESS -E -i C:\Test\OtoYedek.sql"


Özet:
Özetle, Windows Görev Zamanlayıcısından zamanladığınız görevi, SQLCMD' nin yazdığınız TSQL Script' ini çalıştırması için kullanarak veritabanınıza ait veri ve log dosyalarının yedeklerini alabilirsiniz.

"Neden veritabanı dosyalarımın (mdf, ndf, ldf vs.) yedeklerini doğrudan NTBackup ile alamıyorum?" diye sorabilirsiniz, alamazsınız çünkü kullanımda olan veritabanı dosyaları kopyalanamaz. Bu işlem için ilk önce veritabanının bağını çözmeniz (Detach) gerekir. Bu da, veritabanınızın bir süreliğine de olsa kullanılamaz hale gelmesi demektir. Ayrıca yedekleme sistemini otomatikleştirmesiyle de alâkası yoktur ve hiç pratik değildir.


Ekrem Önsoy

Hata ve Çözümü

HATA MESAJI:
"The CREATE DATABASE statement failed. The primary file must be at least 3 MB to accommodate a copy of the model database."

AÇIKLAMA:
SQL Server 2005' te Model veritabanının veri veya log dosyalarından daha ufak boyutlarda veri veya log dosyaları olan bir veritabanı oluşturmaya çalışırken alırsınız bu hatayı.

ÇÖZÜM:
Model veritabanınızın veri ve log dosyalarının boyutlarını küçülterek bu hatadan kurtulabilirsiniz.

Hata ve Çözümü

HATA MESAJI:
"CREATE DATABASE failed. Could not allocate enough disk space for a new database on the named disks. Total space allocated must be at least MB to accommodate a copy of the model database."

AÇIKLAMA:
SQL Server 2000' de Model veritabanının veri veya log dosyalarından daha ufak boyutlarda veri veya log dosyaları olan bir veritabanı oluşturmaya çalışırken alırsınız bu hatayı.

ÇÖZÜM:
Model veritabanınızın veri ve log dosyalarının boyutlarını küçülterek bu hatadan kurtulabilirsiniz.

Hata ve Çözümü

HATA MESAJI:
"Device activation error. The physical file name may be incorrect."

AÇIKLAMA:
SQL Server' da bir veritabanı oluşturmaya çalışırken alırsınız bu hatayı.

ÇÖZÜM:
Veritabanını oluşturduğunuz yol, geçerli bir yol değildir veya yoktur. Yolun varolduğundan emin olun. Bu yol için kullandığınız sürücülerin ve klasörlerin varlığını teyit edin.

Hata ve Çözümü

HATA MESAJI:
"Microsoft SQL-DMO (ODBC SQLState: 42000) Too many backup devices specified for backup or restore; only 64 are allowed. RESTORE DATABASE is terminating abnormally."

AÇIKLAMA:
SQL Server 2005' te yedeğini aldığınız bir veritabanını, bir SQL Server 2000 Instance' ında açmaya (RESTORE) çalışırsanız bu hata ile karşılaşırsınız.

ÇÖZÜM:
Bir SQL Server 2000 Instance' ında yedeğini aldığınız bir veritabanını bir SQL Server 2005 Instance' ında açabilirsiniz. Fakat bir SQL Server 2005 Instance' ında yedeğini aldığınız bir veritabanını SQL Server 2000 Instance' ında açma gibi bir şansınız olmadığı için, bunu denememenizi tavsiye ederim.

Eğer böyle bir şey yapmak istiyorsanız doğrudan yapamazsınız. Dolaylı olarak ise SQL Server 2005' teki veritabanınızın DDL Script' i ile şemasını (Schema) çıkarıp SQL Server 2000 Instance' ında çalıştırabilir ve veritabanınızın iskeletini oluşturabilirsiniz. Bundan sonra da verileri aktarmak için SSIS\DTS' i kullanabilirsiniz.

15 Kasım 2007 Perşembe

VERSİYON YÜKSELTME (UPGRADE) SONRASI YAPILMASI GEREKEN SQL SERVER 2005 PERFORMANS BAKIMI

Merhaba,

Aslına bakarsanız bu çok ilginç bir konu, çünkü insanlar SQL Server 2000' den SQL Server 2005' e geçiş yaptıklarında sistemlerinin daha hızlı, verimli ve ölçeklenebilir çalışacağını umuyorken bir de bakıyorlar ki SQL Server' larının performansı SQL Server 2000' den çok daha kötü.

Fakat işin aslı öyle değil tabii ki. Yükseltme işlemini gerçekleştirdikten sonra yapmanız gereken bazı bakım ayarları var. Bunları yapmanız gerekiyor.

Yapılması gereken bu bakımları aşağıda listeliyorum:

1- SQL Server için kullanılabilir olan en son Servis Paketini yüklediğinizden emin olun. Tabii eğer bu servis paketini yüklemenizde bir sakınca yoksa. Meselâ üçüncü parti bir uygulama kullanıyor olabilirsiniz ve uygulama geliştiriciniz, uygulamanın SQL Server' ın bu servis paketini desteklemediğini ve bu servis paketini yüklememeniz gerektiğini söyleyebilir. Bunugözönünde bulundurun.

2- "External Defragmentation" yapın. Başka bir anlamda söylemek gerekirse, Windows Disk Birleştirici (veya Diskeeper gibi üçüncü parti bir yazılım da olabilir), kullanarak dosyalarınızı birleştirin. Performans açısından önemli bir adım. Bu uygulamayı gerçekleştirirken, SQL Server servisinizin çalışmadığından emin olun. Çünkü Windows Disk Birleştirici açık olan dosyalara işlem uygulayamıyor. Eğer SQL Server servisiniz çalışıyorsa, veritabanı dosyaları için de işlem yapılamaz. Bu birleştirme işlemini iş saatleri dışındayken uygulamanızı öneririm.

3- Eğer bir engel yoksa kullanıcı veritabanlarınızın Compatibility Level' ini* 90' yapın. (Database\Properties).

Not: Konuyla ilgili aşağıdaki açıklamayı kesinlikle okuyunuz. Compatibility Level' ı 90 olan bir veritabanını, SQL Server 2000' de çalıştıramazsınız.

4- Veritabanında varolan "Index" leri yeniden yapılandırın (Rebuild)

5- Kullanıcı veritabanlarınızdaki istatistikleri güncelleyin. (sp_updatestats)

6- Veritabanı ayarlarınıza bakıp "Auto Update Statistics" ayarının etkin olduğundan emin olun. Eğer bu ayarın sisteminizde performans kaybına neden olacağından kuşkularınız varsa, "Auto Update Statistics Asynchronously" seçeneğine göz atmanızı tavsiye ederim. SQL Server 2005 ile gelen yeni bir ayardır. Yerine göre çok işinize yarayabilir.

7- SQL Server 2005' in sorgular için kullandığı Çalıştırma Planı (Execution Plan), SQL Server 2000' in sorgular için kullandığı Çalıştırma Plan' ından daha az optimaldir.

Meselâ şu örneğe bakın:

SELECT * FROM Person.Contact
WHERE (LastName LIKE @para1) AND (LastName > @para2)

SQL Server 2005' te Çalıştırma Planı tablolarda arama yapmak için karşılaştırma operatörlerini kullanır (=, <, > gibi...).

SQL Server 2000' de ise Çalıştırma Planı tabloları taramak için LIKE operatörünü kullanacaktır. Karşılaştırma operatörü, LIKE operatöründen daha fazla kayıt getireceği için performans daha düşük olacaktır.

Microsoft bu sorunu çözmek için bir FIX yayınladı. Bu FIX de 4. Cumulative Güncellemesinin içerisinde bulunuyor. Bu güncellemeye ulaşmak için buraya tıklayabilirsiniz.


* Compatibility Level, SQL Server veritabanının SQL Server' ın hangi versiyonuyla uyumlu olduğunu gösterir. 90 sayısı SQL Server 2005' i, 80 sayısı SQL Server 2000'i 70 sayısı SQL Server 7.0' ı temsil eder.



Ekrem Önsoy

Hata ve Çözümü

HATA MESAJI:
"SQL Server Setup failed to execute a command for server configuration. The error was [Microsoft][SQL Native Client][SQL Server]Windows NT user or group 'COMPUTERNAME\SQLServer2005MSSQLUser$COMPUTERNAME$MSSQLSERVER' not found. Check the name again.. Refer to the server error logs for detailed error information."

AÇIKLAMA:
Bu sorunla, SQL Server 2005 Express Edition SP1' de karşılaşırsınız.

Eğer aşağıdaki şartlar gerçekleşirse, bu sorun meydana gelir:

- Eğer Windows Vista işletim sistemi yüklü olan bilgisayarınızın bilgisayar adı küçük karakterler içeriyor veya büyük küçük karışık karakterler içeriyorsa. Meselâ bilgisayar adınız "Bilgisayarım" ise...

- Eğer SQL Server 2005 Express Edition SP1' i yüklerken SQL Server servisi için Collation ayarını olarak case-sensitive (büyük küçük harf duyarlı) olarak belirlediyseniz.

Windows Vista, bilgisayar adı için gelen istekleri aşağıdaki iki yolla cevaplar:

- Windows Vista, bilgisayar adını büyük harflerle geri döndürür.

- Windows Vista, bilgisayar adını Sistem Özellikleri' nde olduğu gibi gerçek haliyle, yani karışık haliyle geri döndürür.

SQL Server 2005 Express Edition' ın yüklenmesi esnasında, Setup programı bilgisayar adını karışık karakterler olarak almak ister. Fakat, bunun yerine Windows Vista bilgisayar adını büyük harflere dönüştürerek gönderir. Setup programı SQL Server Express Edition' ın yüklenmesi esnasındaki diğer çeşitli yerlerde de ister. Windows Vista o zaman da bilgisayar adını karışık karakterlerle gönderebilir.

SQL Server 2005 Express Edition Setup programı alınan bilgisayar isimlerini karşılaştırır. Genel olarak, bu bir soruna neden olmaz çünkü bilgisayar isimleri Windows vistada büyük küçük harf duyarlı değildir. Bununla birlikte, eğer SQL Server 2005 Express Edition' ı yüklerken büyük küçük harf duyarlı ayarı yapılırsa, Windows Vista' dan alınan ve bazısı büyük küçük harf karışık, bazısı da sadece büyük harf olan bilgisayar isimleri karşılaştırıldığında hata oluşur. Sonuç olarak da, SQL Server 2005 Express Edition SP1' in yüklenmesi başarısızlıkla sonuçlanır.

ÇÖZÜM:
Bunun için iki yol önerilir. Bunlar:

1- Bilgisayar adınızı sacede büyük harflerden oluşacak şekilde değiştirin. Meselâ "Bilgisayarim" ise, "BILGISAYARIM" yapın ve ayarların etkin olabilmesi için bilgisayarınızı kapatıp yeniden başlatın. Bununla birlikte, bilgisayar adınızı belirlerken Türkçe karakter kullanmamanızı tavsiye ediyorum. Böyle küçük büyük harf değişimlerinde sorunlar yaşamanıza neden olabilir.

2- SQL Server 2005 Express Edition SP1' i yüklerken, Collation ayarlarında "case-sensitive" (küçük-büyük harf duyarlı) seçeneğini seçmeyin.

Kaynak:
http://support.microsoft.com/kb/929105

Hata ve Çözümü

HATA MESAJI:
"A connection could not be established to . Reason: Login failed for user . Reason: Server is in single user mode. Only one administrator can connect at a time."

AÇIKLAMA:
Bu sorun, SQL Server servisine başlangıç parametresi olarak "-m" koyup kaydettikten ve sonra SQL Server servisini yeniden başlatmaya çalıştığınızda karşınıza çıkabilir.

"-m" parametresi, SQL Server servisini tek kişilik giriş izni vermek üzere başlatır.

ÇÖZÜM:
SQL Server tek kişilik girişe izin verdiği için, eğer SQL Server Agent' ınız veya başka bir servis (ki bu genelde SQL Server Agent olur) sizden önce SQL Server' a bağlanırsa siz SQL Server Instance' ınıza bağlanamazsınız ve bu hata ile karşılaşırsınız.

Ayrıca, SQL Server 2005' te, SQL Server Starup Parameter (Başlangıç parametreleri) SQL Server Configuration Manager ile değiştirilebilir. Yani bu parametreyi değiştirmek için, SQL Server Management Studio' ya bağlanmak zorunda değilsiniz.

Fakat SQL Server 2000' de, bu ayarı değiştirebilmek için ilk önce SQL Server 2000' e bağlanmak zorundasınız. Eğer bu hatayı alıyorsanız ve SQL Server Instance' ınıza Enterprise Manager ile bağlanamıyorsanız, o zaman bu parametreyi de değiştiremezsiniz demektir.

Buna benzer şahit olduğum bir durumda, kullanıcı bu hata ile karşılaşmış ve SQL Server ile ilgili tüm servisleri durdurduğu halde (SQL Server servisi hariç tabii) gene de EM kullanarak SQL Server 2000 Instance' ına bağlanamamış ve bu ayarı da değiştirememişti. Bu yüzden kendi dahil hiç bir kullanıcısı SQL Server' a bağlanamıyordu.

Bu sorunu çözmek için, Regedit' ten değişiklikler yapıldı. Değişikliğin yapıldığı yerin adresi bizim durumumuzda şöyleydi: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\SQLSERVER2000\MSSQLServer\Parameters. Sizin durumunuzda farklı olabilir. Bu fark, yüklediğiniz Intance' ın Default Instance veya Named Instance olmasına göre değişir. Ama sanırım artık bakacağınız yeri biliyorsunuz...

Yapılan değişiklik ise, SQLArg anahtarlarından "-m" değerini içeren anahtarı silmek idi. Evet, anlayacağınız üzre SQL Server Startup Parameters burada tutuluyor.

Bu arada, eğer bu sorun başınıza bir Küme (Cluster) ortamında geldiyse, unutmayın ki tüm düğümlerden temizlemelisiniz bu anahtarı.

Microsoft SQL Server 2008 November CTP!

Merhaba Arkadaşlar!

SQL Server 2008 June CTP' den sonra, bugün de Microsoft' tan SQL Server 2008 Kasım CTP (Community Technology Preview - Bir nevi beta sürüm...) ' nin yayınlanacağı haberi geldi.

Çok istesem de, sizlere June CTP' sinden bahsedememiştim. Ama hem June CTP' sindeki hem de Kasım CTP' sindeki özellikleri bir araya getirip bu konuda da bir makale yazmayı çok istediğimi bilmenizi istiyorum ve en müsait olduğum zamanda bunu gerçekleştireceğim.

Bu duyuruda sizlere Kasım CTP' sine eklenen özelliklerden bahsetmek istiyorum.

Bu CTP, Windows Vista ve Windows Server 2008 ile uyumlu çalışacak. Ayrıca,

- Resource Governor : Bir tür kaynakları yönetme sistemi,

- Backup Compression : Neredeyse tüm üçüncü parti SQL Server yedekleme programlarında bulunan ve SQL Server' da da görmeyi çok istediğimiz ve SQL Server 2008 ile birlikte gelecek veritabanı yedeklerini sıkıştırma özelliği.

- Transparent Data Encryption : Veri şifreleme ile ilgili bir özellik, şimdilik hakkında pek bir şey bilmiyorum. Biraz kurcalamak ve okumak gerekiyor. Öğrenince, yukarıda bahsettiğim ayrıntılı makalemde bundan da bahsederim.

Ayrıca bu CTP' de yeni BI (Business Intelligence) iyileştirmeleri de olacakmış. Design Alerts, Block Computation ve Report Designer' da da yeni ve iyileştirilmiş görsellik olacakmış.

SQL Server 2008 CTP' sini indirebilmeniz için CTP programına dahil olmalısınız. Ben de bu programa Haziran- Temmuz aylarında dahil olmuştum yanlış hatırlamıyorsam.

Bu adresten programa dahil olabilirsiniz.


Ekrem Önsoy

Hata ve Çözümü

HATA MESAJI:
"Cannot open user default database. Login failed. Login failed for user . (Microsoft SQL Server, Error: 4064)"

AÇIKLAMA:
SQL Server' da, her Login için bir varsayılan veritabanı atanır. Bu işlem, Login' in özelliklerinden yapılabilir.

Eğer bir Login' e, giriş hakkı olmayan bir veritabanı varsayılan veritabanı olarak atanırsa, bu Login ile giriş yapmaya çalışan kullanıcınız bahsi geçen hatayı alır.

Ayrıca, eğer bir Login' in varsayılan veritabanı belirlendikten sonra, bu atanan veritabanının adı değişir veya silinirse, Login, aynı hatayı alacaktır.

ÇÖZÜM:
SQL Server veritabanı yöneticisinin, mevzubahis Login' in varsayılan veritabanı bilgisini, Login' in giriş hakkı olan bir veritabanı olarak değiştirmesi yeterli olacaktır.

14 Kasım 2007 Çarşamba

SQL Server 2005' e Versiyon Yükseltme Sonrası Performans

Merhaba,

Aslına bakarsanız bu çok ilginç bir konu, çünkü insanlar SQL Server 2000' den SQL Server 2005' e geçiş yaptıklarında sistemlerinin daha hızlı, verimli ve ölçeklenebilir çalışacağını umuyorken bir de bakıyorlar ki SQL Server' larının performansı SQL Server 2000' den çok daha kötü.

Fakat işin aslı öyle değil tabii ki. Yükseltme işlemini gerçekleştirdikten sonra yapmanız gereken bazı bakım ayarları var. Bunları yapmanız gerekiyor.

Yapılması gereken bu bakımları aşağıda listeliyorum:

1- SQL Server için kullanılabilir olan en son Servis Paketini yüklediğinizden emin olun. Tabii eğer bu servis paketini yüklemenizde bir sakınca yoksa. Meselâ üçüncü parti bir uygulama kullanıyor olabilirsiniz ve uygulama geliştiriciniz, uygulamanın SQL Server' ın bu servis paketini desteklemediğini ve bu servis paketini yüklememeniz gerektiğini söyleyebilir. Bunugözönünde bulundurun.

2- Eğer bir engel yoksa kullanıcı veritabanlarınızın Compatibility Level' ini* 90' yapın. (Database\Properties).

Not: Konuyla ilgili aşağıdaki açıklamayı kesinlikle okuyunuz. Compatibility Level' ı 90 olan bir veritabanını, SQL Server 2000' de çalıştıramazsınız.

3- Veritabanında varolan "Index" leri yeniden yapılandırın (Rebuild)

4- Kullanıcı veritabanlarınızdaki istatistikleri güncelleyin. (sp_updatestats)

5- Veritabanı ayarlarınıza bakıp "Auto Update Statistics" ayarının etkin olduğundan emin olun. Eğer bu ayarın sisteminizde performans kaybına neden olacağından kuşkularınız varsa, "Auto Update Statistics Asynchronously" seçeneğine göz atmanızı tavsiye ederim. SQL Server 2005 ile gelen yeni bir ayardır. Yerine göre çok işinize yarayabilir.

6- SQL Server 2005' in sorgular için kullandığı Çalıştırma Planı (Execution Plan), SQL Server 2000' in sorgular için kullandığı Çalıştırma Plan' ından daha az optimaldir.

Meselâ şu örneğe bakın:

SELECT * FROM Person.Contact
WHERE (LastName LIKE @para1) AND (LastName > @para2)


SQL Server 2005' te Çalıştırma Planı tablolarda arama yapmak için karşılaştırma operatörlerini kullanır (=, <, > gibi...).

SQL Server 2000' de ise Çalıştırma Planı tabloları taramak için LIKE operatörünü kullanacaktır. Karşılaştırma operatörü, LIKE operatöründen daha fazla kayıt getireceği için performans daha düşük olacaktır.

Microsoft bu sorunu çözmek için bir FIX yayınladı. Bu FIX de 4. Cumulative Güncellemesinin içerisinde bulunuyor. Bu güncellemeye ulaşmak için buraya tıklayabilirsiniz.


* Compatibility Level, SQL Server veritabanının SQL Server' ın hangi versiyonuyla uyumlu olduğunu gösterir. 90 sayısı SQL Server 2005' i, 80 sayısı SQL Server 2000'i 70 sayısı SQL Server 7.0' ı temsil eder.



Ekrem Önsoy

13 Kasım 2007 Salı

Microsoft Certified Trainer (MCT) Sertifikası

Merhaba Arkadaşlar!

Size daha önceden verilmiş bir sözümü yerine getiriyorum. MCT olduğumda, bu sürecin ve yapılması gereken şeyleri anlatacağıma dair söz vermiştim. Şimdi bu sözümü de diğerleri gibi yerine getirmek istiyorum.

MCT olabilmek için, en azından MCP sertifikasına sahip olmanız ve böylece kendinizi Microsoft' a bir şekilde ispat etmiş olmanız gerekiyor.

Daha sonra, Yetkili bir eğitim merkezinde (genelde iki gün süren) Train the Trainer (yani eğitimciyi eğitme) kursuna katılıp bunu başarıyla tamamlamanız gerekiyor.

Bu kursu başarıyla tamamladıktan sonra Microsoft' a MCT için başvuruda bulunmanız gerekiyor. Bu başvuruyu Microsoft' un sitesinden MCP hesabınıza giriş yaptıktan sonra yapabilirsiniz. Belli aşamalardan sonra Train the Trainer kursunu başarıyla tamamladığınıza dair bazı evraklar gönderiliyor Microsoft' un Avrupa' daki merkezine. Bu evrakları benim yerime, bana bu eğitimi veren Kazım Çay hocam göndermişti. Ona da buradan selamlar =)

Bu evrakların Microsoft' a ulaşmasından ve Microsoft' un da gerekli araştırmaları yapmasından sonra 50$ para gönderiyorsunuz kredi kartınız ile. Bu ücret, her yıl ödemeniz gereken ücrettir. Her sene, MCT' nizi devam ettirmek için bu ücreti ödemeniz gerekiyor.

Eğer tüm şartlara uygunsanız, MCT Sertifikası 1,5 aya kadar onaylanıyor.

Biraz da Train the Trainer kursundan bahsetmek istiyorum. Benim katıldığım sınıfta sadece iki kişi olduğumuz için, kurs bir gün sürmüştü. Bu kursta, size, insanlara (ki bu durumda öğrencileriniz) nasıl hitap edeceğiniz, belli durumlarda nasıl davranmanız gerektiği, dersi nasıl anlatmanız gerektiği gibi şeyler anlatılıp, daha sonra sunum kabiliyetiniz ölçülüyor. İki kere tahtaya kalkıp, uzmanı olduğunuz konuda, kamera karşısında anlatım yapıyorsunuz. Ne kadar ayrıntılı veya ne kadar uzun değil, nasıl anlattığınız çok önemli. Daha sonra bu kamera kayıtlarını inceleyip, birlikte eleştirilerde bulunuyorsunuz.

Sanırım bu kadar özet, MCT sertifikası hakkında bilgi sahibi olmanız için yeterli. Bu konuda başka sorularınız varsa alabilirim.


Ekrem Önsoy

Login failed for user '(null)'. Reason: Not associated with a trusted SQL Server connection. (Microsoft SQL Server, Error: 18452)

HATA MESAJI:
Login failed for user '(null)'. Reason: Not associated with a trusted SQL Server connection. (Microsoft SQL Server, Error: 18452)

AÇIKLAMA:
Windows hesabınız ile, üyesi olmadığınız bir etki alanına (Domain) bağlanmaya çalışırsanız bu hata ile karşılaşırsınız.

ÇÖZÜM:
Windows hesabınız yerine, bir SQL Server Login' i kullanarak bağlanabilirsiniz.

Not: Bu durumda, karşı taraftaki SQL Server' ın "SQL Server and Windows Authentication mode" için ayarlanmış olması gerekiyor.

Login failed for user . This user is not associated with a trusted SQL Server connection.

HATA MESAJI:
Login failed for user . This user is not associated with a trusted SQL Server connection. (Microsoft SQL Server, Error: 18452)

AÇIKLAMA:
Bu hata ile karşılaştığınız an ilk aklınıza gelmesi gereken şey "SQL Server Authentication Method" yani SQL Server' a bağlanma yönteminiz olmalıdır.

SQL Server' da iki bağlantı doğrulama yöntemi vardır, başlık olarak bunlar:
1- Windows Authentication
2- SQL Server and Windows Authentication mode' dur.

Eğer bağlanmaya çalıştığınız SQL Server Instance' ının bağlanma yöntem ayarı Windows Authentication ise ve siz de bir SQL Server Login' i ile bağlanmaya çalışıyorsanız, bu hata mesajıyla karşılaştırsınız ve SQL Server Instance' ınıza bağlanamazsınız.

ÇÖZÜM:
SQL Server Login' lerini kullanmak için SQL Server bağlanma yöntemini "SQL Server and Windows Authentication" olarak değiştirmeniz gerekir.

Bunun için, Yerel Yönetici grubuna dahil olan bir yönetici hesabıyla SQL Server' ınıza bağlanabilirsiniz. Yerel Yönetici grubunun, SQL Server' da varsayılan olarak (BUILTIN) "sysadmin" (SQL Server' ı yönetmek için kullanılan ve tüm hakları barındıran bir Sunucu Sabit Rolü 'Server Fixed Role') rolüne sahip bir Windows Login' i bulunmaktadır. Bu hesap ile Server Properties (Sunucu Özellikleri)' i açarak, "Security" penceresinden Server Authentication yöntemini "SQL Server and Windows Authentication mode" olarak değiştirebilirsiniz.

Not: Bu değişikliğin geçerli olabilmesi için SQL Server servisinizi kapatıp tekrar çalıştırmanız gerekecektir.

Database cannot be upgraded because it is read-only or has read-only files...

HATA MESAJI:
Database cannot be upgraded because it is read-only or has read-only files. Make the database or files writeable, and rerun recovery. (Microsoft SQL Server, Error:3415)"

AÇIKLAMA:
Bu hatayı, iki şekilde alabilirsiniz.

1- Eğer bir SQL Server Instance' ınıza bağlı veritabanını başka bir SQL Server Instance' ına bağlamaya (Attach) çalışırsanız.
2- Eğer SQL Server Instance' ınıza bağlamaya (Attach) çalıştığınız veritabanı dosyaları (örn: mdf, ndf, ldf) Salt-Okunur (Read-Only) ise.

ÇÖZÜM:
SQL Server Instance' ınıza bağlamaya çalıştığınız veritabanının başka bir SQL Server Instance' ı tarafından kullanılmadığından emin olun.

Veya bağlamaya çalıştığınız veritabanınızın dosyalarının Salt-Okunur olmadıklarından emin olun.

"A component that you have specified in the ADD_LOCAL property is already installed. To upgrade to the existing component, refer to the template.i...

HATA MESAJI:
A component that you have specified in the ADD_LOCAL property is already installed. To upgrade to the existing component, refer to the template.ini and set the UPGRADE property to the name of the component.

AÇIKLAMA:
Önceden yüklemiş olduğunuz bir SQL Server Instance' ını kaldırdıktan sonra, tekrar yeni bir Instance kurmayı denersiniz, ama yukarıdaki hata mesajını alırsınız. Bunun nedeni, önceki Instance' ın doğru şekilde kaldırılamamış olmasıdır.

ÇÖZÜM:
SQL Server 2005 Instance' ını otomatik olarak başarıyla kaldıramadığınız zamanlar, bunu elle yapmayı deneyebilirsiniz.

http://msdn2.microsoft.com/en-us/library/aa337087.aspx

Hemen yukarıda vermiş olduğum adreste, bunu nasıl yapacağınız adım adım anlatılıyor. (İngilizce)

Bununla beraber, buradaki kilit sorunun Windows Installer olduğunu gördüm çoğu zaman. Windows Installer Cleanup Utility kullanıldığı zaman ve sorunlu Instance bu araç ile kaldırıldığı zaman, yeni bir kurulum sorunsuz çekilde gerçekleştirilebiliyor.

Windows Installer Cleanup Utility' yi indirmek için:
http://support.microsoft.com/kb/290301/

"A valid SQL Server installation does not exist in the specified location"

Bu hatayı, aşağıdaki adımlar gerçekleştikten sonra aldım.

AÇIKLAMA
1- Sistemimdeki yüklü SQL Server 2000 örneğini kaldırdım.
2- İşletim sistemimi tekrar başlattım.
3- Yeni bir SQL Server 2000 örneği kurarken "Setup Type" penceresindeyken "Next" düğmesine tıkladığımda bu hatayı aldım.

ÇÖZÜM
1- SQL Server 2000 Setup' ı kapattım.
2- Microsoft Download sitesinden MDAC' ın en son sürümünü indirip yükledim.
3- SQL Server 2000 Setup' ı tekrar başlattım ve sorunsuz kuruluma devam ettim.