31 Aralık 2010 Cuma

Error 1075: The dependency service does not exist or has been marked for deletion.

HATA:
Error 1075: The dependency service does not exist or has been marked for deletion.

AÇIKLAMA:
Windows Server 2008 R2 İşletim Sistemi üzerinde Clustered SQL Server 2005 Enterprise Edition kurduktan sonra servisleri Failover Manager ile test ettiğimde SQL Server Fulltext Search servisinin çalışmadığını gördüm.

Bunun nedeni, Fulltext servisinin "NTLM Security Support Provider (NTLMSSP)" adında bir servisi kullanmak istemesi, fakat bu servisin Windows Server 2008'de bulunmaması.

ÇÖZÜM:
Eğer SQL Server 2005 SP2'yi yüklerseniz sorun çözülüyor.

Ya da alternatif olarak aşağıda belirttiğim Registry (Regedit) yolunda olan "NTLMSSP" anahtarını silin ve işletim sistemini yeniden başlatın.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\msftesql\DependOnService

28 Aralık 2010 Salı

Property ErrorLogFile is not available for JobServer 'sunucu_adı'. This property may not exist for this object.

HATA:
Property ErrorLogFile is not available for JobServer 'sunucu_adı'. This property may not exist for this object.

AÇIKLAMA:
SQL Server Management Studio'daki, Object Explorer'da bulunan SQL Server Agent'ın üzerine farenin sağ tuşuna tıkladığınızda bu hata mesajını alabilirsiniz.

ÇÖZÜM:
Bu sorunun SQL Server Agent için kullanılan bir kayıt defteri (registry editor) değerinin "bir şekilde" silinmesinden kaynaklandığını görmüştüm. Kayıt değerinin bulunduğu yola örnek aşağıdadır:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL10.MSSQLSERVER\SQLServerAgent

Eğer bu yoldaki ErrorLogFile isimli anahtara aşağıdaki gibi bir değer (sizin sisteminizde yukarıdaki yol da, aşağıdaki değer de farklı olabilir, bunlar sadece örnek) girerseniz sorununuz çözülecektir:

C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Log\SQLAGENT.OUT

24 Aralık 2010 Cuma

Description: The package is encrypted with a password. The password was not specified, or is not correct. End Error Could not load package "\MSDB\SS

HATA:
Description: The package is encrypted with a password. The password was not specified, or is not correct. End Error Could not load package "\MSDB\SSISPaketi_adi" because of error 0xC0014037. Description: Failed to remove package protection with error 0xC0014037 "The package is encrypted with a password. The password was not specified, or is not correct.". This occurs in the CPackage::LoadFromXML method

AÇIKLAMA:
Aşağıdaki gibi bir kod ile bir SSIS paketini çalıştırmak istediğinizde böyle bir hata alabilirsiniz:

dtexec /DTS "\MSDB\SSISPaketi_adi" /SERVER DWSQL /MAXCONCURRENT " -1 " /CHECKPOINTING OFF /REPORTING V

Bu hatayı almanızın nedeni, SSIS paketinin şifreli olması ve sizin bunu dtexec uygulamasında "/De" parametresiyle belirtmemiş olmanızdır.

ÇÖZÜM:
Bu SSIS peketini "dtexec" ile çalıştırırken "/De" parametresini de kullanarak şöyle çalıştırın:

dtexec /DTS "\MSDB\SSISPaketi_adi" /SERVER DWSQL /MAXCONCURRENT " -1 " /CHECKPOINTING OFF /REPORTING V /De 1234

23 Aralık 2010 Perşembe

The SQL Server Network Interface library could not register the Service Principal Name (SPN) for the SQL Server service. Error: 0x2098, state: 15. Fai

HATA:
The SQL Server Network Interface library could not register the Service Principal Name (SPN) for the SQL Server service. Error: 0x2098, state: 15. Failure to register an SPN may cause integrated authentication to fall back to NTLM instead of Kerberos. This is an informational message. Further action is only required if Kerberos authentication is required by authentication policies.

AÇIKLAMA:
SQL Server Error Log'unda böyle bir mesaj görebilirsiniz. Bu mesajı almanız mutlak şekilde sunucunuza olan bağlantıların KERBEROS değil, NTLM olacağı anlamına gelmiyor. Bu hatayı, gerekli yetkileri olmayan bir Windows Domain hesabıyle çalışan SQL Server servisi açıldığında Active Directory'den SPN kaydı yapmaya çalışıyor diye alıyorsunuz.

ÇÖZÜM:
Öncelikle ilgili sunucuya yaptığınız bağlantının NTLM mi yoksa KERBEROS mu olduğundan emin olmanızı tavsiye ederim; bunu, aşağıdaki kodu ilgili sunucuda çalıştırarak görebilirsiniz:

SELECT auth_scheme FROM sys.dm_exec_connections WHERE session_id = @@SPID

Eğer dönen sonuç KERBEROS ise, zaten Active Directory'de ilgili sunucunun SPN kayıtları mevcut demektir; eğer dönen sonuç NTLM ise, o zaman SPN kaydı mevcut değildir ve bu durumda şirket organizasyonunuza göre SPN kayıtlarını siz de oluşturabilirsiniz, bunu sistem yöneticilerinin yapmasını da isteyebilirsiniz.

SPN kayıtlarının oluşturulması hakkında daha fazla bilgi için aşağıdaki KB'den yararlanabilirsiniz:

13 Aralık 2010 Pazartesi

SQL Server 2011: Kod adı "Denali" - CTP1

SQL Server'ın yeni versiyonuna ait ilk tanıdım sürümünü aşağıdaki adresten indirebilirsiniz.

http://www.microsoft.com/downloads/en/details.aspx?FamilyID=6a04f16f-f6be-4f92-9c92-f7e5677d91f9&displaylang=en

Dokümantasyona da aşağıdaki adresten ulaşabilirsiniz:
http://msdn.microsoft.com/en-us/library/ms130214%28v=sql.110%29.aspx

Benim en çok gözüme batan bir kaç özellik şöyle:

HADR: Bu teknoloji daha ziyade sürekli kullanılabilirlik (high availibility) ve afet durumları (disaster recovery) için tasarlanmıştır. Bir başka amacı ise, ikincil sunucudaki veritabanı kopyalarının raporlama amacıyla kullanımının sağlanması ve böylelikle ana veritabanının sırtından yük alınmasının sağlanmasıdır. Bu sistemin kurulması için Windows Failover Cluster Servisleri ve Database Mirroring kullanılmaktadır. Bu sistem ile bir Failover anında belirlenen veritabanları grup halinde diğer sunucuda ayağa kaldırılabilmektedir.

Containment: HADR'da olduğu gibi bu özellik de CTP1'de tam olarak kullanılamıyor. Sadece belli bir kısmı kullanılabiliyor. Fakat özetlemek gerekirse bu sistem ile veritabanının başlı başına yönetimi söz konusu. Misal olarak eğer bir veritabanındaki nesneler "Application Boundary" denilen sınır içerisindeyse "Contained" oluyor ve bu veritabanı başka bir SQL Server Instance'ına aktarıldığında, bu veritabanıyla birlikte herhangi bir sunucu düzeyindeki nesnelerden biri olan Login gibi bir nesnenin aktarılması da zorunluluk olmuyor. Çünkü veritabanına ulaşım için yine veritabanı içerisinde tanımlanan kullanıcılar (artık SQL Server veritabanlarında sadece Database User'lar olmayacak, Database Login'ler de olacak) bağlantı için yeterli olabiliyor.

Sequences: Sequence'ler tablo bazında çalışan Identity'ler gibidir, fakat veritabanı bazındadır ve birçok tablo tarafından kullanılabilirler. Yine Identity'den farklı olarak sürekli aynı sayı bloğu içinde tekrarlanmaları sağlanabilir, meselâ sürekli 1-100 arası sayı üretebilir. Bir Insert'ten önce de bir Sequence'ten sayı talebinde bulunabilirsiniz ve böylece kayıt yapmadan önce hangi sayıyı kullanarak kayıt yapacağınızı bilirsiniz. Ayrıca sadece bir değil, bir dizi şeklinde de sayı talebinde bulunabilirsiniz.

Denali CTP1'de benim en çok gözüme batan yenilikler böyle. Yakın zamanda HADR için bir test yapacağız. Bunun için iki tane sunucu talebinde bulunduk. Sunucular bize verilir verilmez uygun bir vakitte bu testi yapmak istiyoruz. Umarım test sonuçlarını da sizlerle paylaşma şansı bulacağım.

Şimdilik Denali CTP1 hakkında verebileceğim bilgiler bu kadar.

Ekrem

Itanium desteği

Daha önceki gönderilerimden birinde de bu konudan bahsettiğimi anımsıyorum.

Bugün Denali'nin Books Online bölümünü okurken gördüğümü sizinle de paylaşmak istiyorum.

http://msdn.microsoft.com/en-us/library/bb500459%28v=SQL.110%29.aspx

Yukarıdaki sayfada aşağıdaki ibareyi bulacaksınız sayfanın en altında.

Itanium Support: Starting with SQL Server Code-Named “Denali”, SQL Server Itanium editions are no longer supported.

(Türkçesi: Itanium Desteği: Kod adı "Denali" olan SQL Server'dan itibaren SQL Server Itanium versiyonları artık desteklenmeyecek)

Bilginize ;)

8 Aralık 2010 Çarşamba

Login failed. The login is from an untrusted domain and cannot be used with Windows authentication. (Microsoft SQL Server, Error: 18452)

HATA:
"Login failed. The login is from an untrusted domain and cannot be used with Windows authentication. [CLIENT: xxx.35.1.26]

Error: 18452, Severity: 14, State: 1.

Login failed. The login is from an untrusted domain and cannot be used with Windows authentication. (Microsoft SQL Server, Error: 18452)"

AÇIKLAMA:
Bir SQL Server Instance'ına uzaktan SSMS ile bağlanmak istediğinizde böyle bir hata alabilir ve SQL Error Log'unda da böyle bir hata görebilirsiniz.

ÇÖZÜM:
Ben bu hata ile, ilgili SQL Server Instance'ının servis hesabını başka bir Domain servis hesabıyla değiştirdiğimde karşılaşmıştım.

Sorun, Active Directory'deki ilgili SPN kayıtlarının güncellenmemesinden oluşmuştu. İlgili SPN kayıtlarımız güncellendikten sonra bu sorundan kurtulduk.

An invalid schema or catalog was specified for the provider "Local Server" for linked server "(null)".

HATA:
"An invalid schema or catalog was specified for the provider "Local Server" for linked server "(null)"."

AÇIKLAMA:
Ben bu hata mesajını, bir Linked Server kullanarak aşağıdakine benzer bir komutu çalıştırdığımda almıştım:

SELECT * FROM LinkedServerSunucum.Veritabanim..Tablom

ÇÖZÜM:
Linked Server kullandığınız sorgularda Fully Qualified Name (tam hedef yolu) kullandığınızdan emin olun. Bunun taslağı da aşağıdaki gibidir:

[Linked Server adı].[Veritabanı adı].[Schema adı].[Nesne adı]

Örnek:

SELECT * FROM LinkedServerSunucum.Veritabanim.Şemam.Tablom

3 Aralık 2010 Cuma

An error occurred while executing batch. Error message is: Invalid attempt to GetBytes on column 'xxx_tarihi'. The GetBytes function can on

HATA:
An error occurred while executing batch. Error message is: Invalid attempt to GetBytes on column 'xxx_tarihi'. The GetBytes function can only be used on columns of type Text, NText, or Image.

AÇIKLAMA:
SQL Server Management Studio'dan bir SQL Server 2008 veritabanındaki tabloya karşı sorgu çalıştırdığınızda böyle bir hata mesajıyla karşılaşabilirsiniz.

ÇÖZÜM:
Benim durumumda sorun, SQL Server 2008 veritabanına karşı çalıştırdığım bir sorguyu SQL Server Management Studio'nun 2005 versiyonundan çalıştırmamdı.