Archive

Archive for the ‘SQL Server’ Category

Reporting Services – Unhandled Execution Error

February 24th, 2010 No comments

VS2005-SQL2005 üzerinde problemsiz olarak çalışmakta olan Reporting Services projem, bir sabah gelip projemi açmak istediğimde çalışmamaya karar verdi. Hem tarayıcıda hem VS içerisinde şu hata ile karşılaşıyordum:

Event code: 3005
Event message: An unhandled exception has occurred.
Event time: 22.02.2010 15:44:47
Event time (UTC): 22.02.2010 13:44:47
Event ID: 0e75e77490de4d3f8f881f3f3c94afd0
Event sequence: 20
Event occurrence: 1
Event detail code: 0 

Application information:
    Application domain: /LM/W3SVC/1/ROOT/XYZ-1-129113197812168356
    Trust level: Full
    Application Virtual Path: /XYZ
    Application Path: D:\Projeler\XYZ\
    Machine name: JERRY 

Process information:
    Process ID: 5804
    Process name: w3wp.exe
    Account name: IIS APPPOOL\ASP.NET V2.0 

Exception information:
    Exception type: COMException
    Exception message:  

Request information:
    Request URL: http://localhost/XYZ/Proposals/ProposalInfo.aspx?PROPOSALID=538
    Request path: /XYZ/Proposals/ProposalInfo.aspx
    User host address: ::1
    User:
    Is authenticated: False
    Authentication Type:
    Thread account name: ADV\xxx.yyyy

Thread information:
    Thread ID: 6
    Thread account name: ADV\xxx.yyyy
    Is impersonating: False
    Stack trace:    at Microsoft.SqlServer.ReportingServices2005.Execution.RSExecutionConnection.GetSecureMethods()
   at Microsoft.SqlServer.ReportingServices2005.Execution.RSExecutionConnection.IsSecureMethod(String methodname)
   at Microsoft.SqlServer.ReportingServices2005.Execution.RSExecutionConnection.LoadReport(String Report, String HistoryID)
   at Microsoft.Reporting.WebForms.ServerReport.GetExecutionInfo()
   at Microsoft.Reporting.WebForms.ServerReport.SetParameters(IEnumerable`1 parameters)
   at General.PrepareBarcode(ReportViewer rptBarcode, String symbology, String codeText) in d:\Projeler\XYZ\App_Code\General.cs:line 336
   at Barcode.DrawBarcode() in d:\Projeler\KSL-LMS-CRM\LAB_CRM\Barcode.ascx.cs:line 46
   at Barcode.set_CodeText(String value) in d:\Projeler\XYZ\Barcode.ascx.cs:line 28
   at Proposals_ProposalInfo.GetDetails(Int64 proposalid) in d:\Projeler\XYZ\Proposals\ProposalInfo.aspx.cs:line 257
   at Proposals_ProposalInfo.Page_Load(Object sender, EventArgs e) in d:\Projeler\XYZ\Proposals\ProposalInfo.aspx.cs:line 72
   at System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
   at System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
   at System.Web.UI.Control.OnLoad(EventArgs e)
   at SecurityGuard.OnLoad(EventArgs e) in d:\Projeler\XYZ\App_Code\SecurityGuard.aspx.cs:line 79
   at System.Web.UI.Control.LoadRecursive()
   at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

Uzun süre Google’dan medet umdum ancak birebir bu hatayı alan hiç bir soruya rastlayamadım. Okuduğum ilgisiz bazı makaleler ve hatanın olduğu satırdaki metot adından da yola çıkarak (GetSecureMethods), sorunun bir yetkilendirme sorunu olabileceğini düşündüm. Web.config dosyamda ise gerekli impersonation bilgisi bulunuyordu ve şifreler/adlar doğruydu.

Eğer tanımlamalar tamamsa ve impersonation çalışmıyorsa sorunun WMI’da olabileceğini düşündüm. Aşağıdaki iki satır ile winmgmt servisini durdurup/başlattım.

net stop winmgmt
net start winmgmt

Ve tadaaa. Hem projem açılıyor hem da tarayıcıda düzgün görüntüleniyor :)

Kısacası; eğer yetkilerinizden eminseniz (her zaman olmayın, ben akşam çalışan sabah çalışmayınca emin olabildim) ve impersonation ayarlarınız da doğruysa ve hala yetki problemleri yaşıyorsanız, sorununz WMI olabilir. Ya bir bilgisayar restartı yada WMI servisini baştan başlatmak sorununuzu çözebilir…

Eski SQL Server Instance’ınızdan Job’ları almak

February 9th, 2010 No comments

Özellikle eski bir SQL Server kurulumunuzu yenilemeniz gerekiyorsa, zamanında ayarladığınız SQL Agent Job’ların parametrelerini hatırlamak bir bela olabilir. Eğer elinizde msdb (MSDBData.mdf, MSDBLog.ldf) veritabanınızın yedeği varsa hiç korkmayın, bütün bu bilgileri sorgulayabilirsiniz.

Öncelikle yedeğinizdeki msdb veritabanını, farklı bir isimle yeni kurulumunuza attach edin (örneğin msdb2). Yeni kurulumunuzun da aynı isimli bir sistem veritabanı olacağı için bu ismi kullanmanıza izin olmayacaktır çünkü. Daha sonra aşağıdaki basit join ile, job, job step’leri ve schedule’ları ile ilgili bütün bilgileri çekebilirsiniz:

SELECT * FROM [msdb2].[dbo].[sysjobs] J INNER JOIN [msdb2].[dbo].[sysjobsteps] S on J.job_id=S.job_id INNER JOIN [msdb2].[dbo].[sysjobschedules] X on S.job_id = X.job_id

Mevcut sisteminizdeki job’larla ilgili bilgi almak isterseniz de msdb2 veritabanı adını msdb olarak değiştirmeniz yeterli olacaktır. Sorgudan da görebileceğiniz üzere, bilgiler “sysjobs” ibaresi ile başlayan bir seri tabloda tutulmakta.
Daha fazla bilgi almak isterseniz ek olarak sysjobactivity, sysjobhistory, sysjobservers, sysjobstpeslogs tablolarına da göz atmanızı tavsiye ederim…

SQL Server 2005 Reporting Services – Tablo padding sorunu

January 7th, 2010 No comments

SQL Server 2005 Reporting Services’da yakın zamanda başıma gelen bir sorunu ve çözümünü paylaşmak istedim. Kullandığınız Table nesnesinde, hücrelerin alt padding değerlerini kullanarak satır aralarını açıyorsanız, tablonun sayfa sonunda ortadan bölünmesi durumunda arada bir satırı kaybetme riski ile karşı karşıyasınız demektir. Bu sorunun sadece PDF çıktısında olduğunu da belirtmek isterim. Sorunun sebebi, padding olan satırlarda, PDF export modülünün satır yüksekliklerini yanlış hesaplamasından dolayı satırın footer altında kalması. Aslında satır kaybolmuyor, fakat footer altında kaldığı için görünmüyor.

Sorunun çözümü ise oldukça basit. Satırlar arasında boşluk bırakmak istiyorsanız, tekrar eden satır grubuna bir satır daha ekleyin ve bunun yüksekliğini değiştirin. Eğer satır aralığını programatik olarak değiştirmek istiyorsanız, yine bu boş satırdaki hücrelerin alt sınır padding değerleri ile oynayarak bunu da sağlayabilirsiniz.
Bu çözümde aslında hata olmasını engellemiş olmuyoruz. Hata olduğunda, kaybolma riski olan satır bir data satırı değil boş bir satır olmuş oluyor. Bu sayede çıktıda bir sorun yaşanmamış oluyor.
Categories: Reporting Services Tags:

SQL Server Analysis Services – Decision Trees

December 5th, 2009 No comments

SQLServerCentral’da, SQL Server Analysis Services üzerindeki karar ağacı motoru ile ilgili çok güzel ve adım adım bir makale yayınlandı. Konuya hakim olmayanların rahatlıkla takip edip bilgi edinebilecekleri bir başucu kılavuzu olmuş.

SQL Server Kurulum Problemi

October 21st, 2009 No comments

SQL Server 2005/2008 kurulumları sırasında (özellikle kaldırıp tekrar kurmalarda), kurulum son aşamaya kadar gelip, sebep göstermeksizin fail olabiliyor. Bir kaç defa başıma gelen sorun, bende hep aynı şekilde çözüldü.

Sistem servsilerinde “SQL Server VSS Writer” olarak görünen, program ekle/kaldırda ise “VSS Writer” olarak görünen servisin kaldırılması gerekiyor. Bu servisi program ekle/kaldırdan kaldırıp, bilgisayarı yeniden başaltıp SQL Server kurulumunu yeniden yaparsanız sorununuz çözülebilir.

Ayrıca bazı ek notlar:
1. Kurulum sırasında, default parametreleri kesinlikle kullanmayın
2. Kurulum adımlarında size sorulan, kurulum sonrası şu şu servisleri başlat kısmında, hiç bir servis seçili olmasın. Herhangi başka bir sebeple servis başlamazsa kurulumu geri alabiliyor bazen setup.
3. Eğer SQL Server Reporting Servcies de kuruyorsanız, default ayarlarla konfigüre et seçeneğini seçmeyin, sonradan düzeltilemeyen bazı ayarlar yapılabiliyor. Reporting Services’ı konfigüre etme opsiyonunu seçin mutlaka. Kurulumdan sonra adım adım bir ekranla konfigüre etmek mümkün zaten.
4. Kurulum sırasında mutlaka “Mixed Mode” seçin.
5. Birden fazla instance kullanmayacaksanız bile, default instance kurulum yapmayın, named instance kurulum yapın.

Benden bu kadar, sorunsuz kurulum dileklerimle…

SQL Server 2008 – Tablo yapısı değişikliği farkı

October 11th, 2009 No comments

SQL Server’da bugüne kadar, tabloların DROP edilip tekrar CREATE edilmesine sebep olan yapısal değişikliklerde (örneğin sütun tipi değiştirilmesi) herhangi bir uyarı almadan işlem gerçekleşiyordu. Ancak genel olarak DBMS’lerde bu işlem manuel olarak yapılır ve otomatize edilmez.

SQL Server 2008 Management Studio’da da buna yakın bir geliştirme yapılmış. Artık özel bir ayar yapmadığınız sürece, DROP-CREATE gereken tablo değişikliklerine izin verilmiyor, uyarı alıyorsunuz. Alışkanlıklarınızdan vazgeçmek istemiyorsanız ve eski şekilde çalışmaya devam etmek istiyorsanız:
Tools > Options… > Designers > Prevent saving changes that require table re-creation
işaret kutusunu temizleyin ve kaydedin…
Categories: SQL Server Tags: , ,