Category Archives: DATABASE

SQL SERVER 2005 DATABASE DIAGRAM HATASI

hata.JPGSQL Server 2005 ile birlikte çok güzel çok şık diyagramlar çizmek mümkün. Elbette bunu SQL Server 2000 ile de yapabiliyordunuz. Fakat görsellik konusunda gelişmeler olduğunu söyleyebilirim. Aslında yapacağınız işin boyutuna göre bu iş için özellişmiş ERWIN tarzı araçları kullanabilirsiniz ama konumuz bu değil.

Bir gün veritabanı yönetim sisteminizdeki bir database’e ait diyagramı çizmeye kalktığınızda :

DATABASE DIAGRAM SUPPORT CAN NOT BE INSTALLED BECAUSE THIS DATABASE DOES NOT HAVE A VALID OWNER. TO CONTINUE FIRST USE FILE PAGES OF THE DATABASE DIALOG BOX OR USE ALTER AUTHORIZATION STATEMENT TO SET THE DATABASE OWNER TO A VALID LOGIN….

diye devam eden bir hata alırsanız korkmayın çünkü cevabı bu yazıda. Aslında ben “ÜZGÜNÜZ BİR HATA OLDU” yada “ABİ KUSURA BAKMA YAPAMIYOM İŞTE” gibi hiçbir açıklması olmayan hatalardan nefret ederim ama daha da kötüsü var. O da kullanıcıyı yanlış yerlere sürükleyen hatalar. Şimdi ben bu hatayı alınca doğrudan properites penceresine gidip erişim yetkilerime baktım da  zaten sistem yöneticisi olarak sisteme girmiştim ve veritabanını da o zaman sistemime dahi etmiştim. Allahtan iyi bir Google kullanıcısıyım ve çözümü buldum. İşte size çözüm:

* Database uzerine sağ tıklayıp properties seçiyoruz.

* Soldaki menüden OPTIONS ‘a tıklıyoruz.

*Önümüzdeki pencerede 3 tane dropdown menu var. Bunlardan Compatibiliy level olanın değerini SQL SERVER 2005 (90) olarak seçiyoruz ve ok diyoruz.

Sanırım hatanın neyden kaynaklandığını anladınız. Yeni diyagramlar için uyumluluk seviyesinin 90 olması gerekiyor. Eğer SQL Server 2000′den kalma veritabanınızı 2005′e aktardıysanız yada SQL SERVER 2005′e NorthWind gibi bir database eklediyseniz bu sorunu yaşabilirsiniz. Yeni bir Database oluştururken de Options Menüsünden uyumluk seviyesini ayarlayabilirsiniz.

sp_dbcmptlevel  iseterseniz bu stored procedure ile uyumluluk seviyelerini görebilirsiniz.

Umarım bu çözüm işinize yarar. Buna rağmen düzelmeyen sorunlar olursa benimle iletişime geçebilirsiniz. İleride düzenleyeceğimiz SQL Server 2005 Administration çalıştayları için fırsat buldukça SQL Server 2005′i kurcalıyorum. Bu sırada öğrendiklerimi ve ilginç gelen noktaları sizinle paylaşacağım. Şimdilik benden bu kadar. Beni okumaya devam edin…

ASP.NET ve ADO.NET ÇALIŞTAYININ ARDINDAN

ado.jpgBu yazı için biraz geç kalmış gibi hissediyorum kendimi ama yine de sizlerle paylaşmam gereken bazı şeyler var.

Başlıkta bahsi geçen çalıştay (workshop) CETURK (COMPUTER ENGINEERING TURK) sitesi tarafından düzenlendi. Bu etkinliği düzenleyen ve bizlere eğitim veren ise arkadaşım Mehmet ACA’ ydı. Mehmet’in tamamen kendi çabaları ve özverisiyle düzenlediği bu etkinlik BTAKADEMİ’ de gerçekleştirildi. Bu arada sevgili hocam Sefer Algan’a da desteklerinden ötürü teşekkür etmek istiyorum.

Eğitimin içeriğine geçmeden evvel garibime giden bir durumu paylaşmak istiyorum. Açıkcası ben etkinlikte yer bulamam diye Mehmet’le iletişime geçip bana yer ayırmasını söylemiştim :) ama sandığımın aksi bir durumla karşılaştım çünkü hem Mehmet’in hem de benim beklediğimden daha az talep olmuştu. Düşündüm de sanırım insalar para verip bazı şeyleri yapmayı daha çok seviyorlar yada daha iyidir sanıyorlar. Verilen eğitimi gidip bir eğitim kurumundan almaya kalksanız sanırım 5 saat için size en az 150 YTL hesap çıkarırlar. Bu nedenle biraz öğrenci arkadaşlara sitem ediyorum. Çünkü bu gibi organizasyonlarda bilginin yanı sıra çok güzel dostluklar ve paylaşımlar oluyor. Belki orada anlatılanları bir ADO.NET kitabından açıp öğrneebilirdiniz ama hata yaptığınızda yalnız olacaktınız. Halbuki Mehmet ve ben seminer süresince uygulama sırasında hata yapan arkaşlara elimizden geldiğince yardımcı olmaya çalıştık. Yeri geldikçe database ve xml kıyaslamaları ,güvenlik ,üç katmanlı mimari gibi konulara da girdik. Tüm öğrenci arkadaşlardan bu gibi aktivitelere karşı daha duyarlı olamalarını rica ediyorum. Çünkü hiçbir ücret alınmadan tamamen bilgi paylaşımı amacıyla yapılan aktiviteler bunlar.

Gelelim çalıştayda yapılanlara. Önce Mehmet basit bir veritabanı bağlantısı gerçekleştirdi. Hiçbir hazır araç kullanmadan basitçe ASP.NET sayfamızdan veritabanımıza bağlandık. Bundan sonra veritabanımıza ekleme yapmak için küçük bir arayüz hazırladık. Sonra da eklediklerimizin hazırladığımız dropdownlist içinde görülebilmesi için SqlDataReader nesnemizi kaynak olarak bu dropdownlist ile bağladık.

Bu sırada en önemli ayırım kod yazarken kullanacağımız veri kaynağıyla ilgili. Eğer SQL Sever haricinde bir kaynak kullancaksanız System.Data.OleDb namespace’ i içindeki sınıflardan faydalanmalısınız fakat SQL Server ile çalışırsanız System.Data.SqlClient içerisindeki sınıfları kullanmalısınız. OleDb ile SQL Server üzerinde işlem yapmak mümkün fakat performans ve desteklenen özellikler açısından SqlClient kullanmak daha iyi olacaktır. Elbette uygulamanızı farklı bir veritabanına taşıma ihtimaliniz varsa OleDb size büyük bir esneklik getirecektir.

Çalıştaydaki en önemli konulardan biri de DataSet kavramıydı. Bu yapı ile farklı kaynaklardan çektiğiniz verileri istemci bilgisayarının hafızasına yerleştirip sunucu ile bağlantıyı kesiyoruz. Yani disconnected olarak çalışan bir yapı var. Hafızadan çalıştığı için hem daha hızlı hem de database server üzerindeki yükü azaltıyor. Fakat dikkatli kullanılması gereken bir yapı. Düşününki 10 kişi aynı anda DataSetlerindeki bir hücreyi değiştirdi ve veritabanı sunucusuna bağlanıp oradaki değerle hafızadaki değerleri senkronize etmek istedi. Burada kimin dediği geçerli olacak ?  Ciddi bir sorun aslında bu. Yani çözülemeyecek bir sorun değil. Sonuçta en son gelen değer gerçerli olacak ama bizim isteğimiz dışında bir durum oluşabilir. Bu nedenle burada kendimiz bir iş mantığı kurmalıyız. Ben çok gerekmedikçe DataSet yapısını uygulamalarıma dahil etmeyi düşünmüyorum. Fakat çok fazla güncellenmeyen bir tablo üzerinde siz de görüntüleme amaçlı bir sistem kuruyorsanız yada el terminallerinizin veritabanı ile sürekli bağlı olması gerekmeyen bir uygulama geliştiriyorsanız DataSet kullanılabilirsiniz.

Veritabanından çektiğimiz değerleri bir de DataReader nesnesi üzerinde depolayabiliyoruz. Bu connected olarak çalışan bir yapı. Sürekli bağlı olduğu için ve her sorgu da veritabanı sunucusuna bağlandığı için DataSet yapısına göre daha yavaş ama daha güvenilebilir bir yapı. Ayrıca DataReader ile veritabanından çektiğiniz kolanlar üzerinde sadece ileri yönlü okuma yapabiliyorsunuz. JDBC uygulamalarında kullandığımız ResultSet yapısına çok benziyor.

Bu arada ADO.NET ile sadece veritabanı işlemleri değil aynı zamanda XML üzerinde de işlemler yapabilme imkanımız var. Çalıştayda bir satırlık komut ile örneğini verdiğimiz XML belgesinden SCHEMA üretimi gerçekten çok güzel bir özellik.

Çalıştayın ilerleyen bölümlerinde Stored Procedureler ile ne şekilde çalışırız üzerine örnekler yaptık ve daha sonra da ASP.NET 2.0 ile gelen ve Data sekmesi altında yer alan bileşenleri inceledik. Bu bileşenler ile çok fazla veritabanı bilgisine sahip olmadan işinizi görmeniz mümkün. Fakat kendi deneyimlerime dayanarak gerçekten ciddi bir iş çıkarmak istediğinizde kolları sıvamanız gerektiğini söyleyebilirim.

En son aşamada da üç katmanlı mimari üzerine konuştuk. Burada üç katmanlı mimariyle uygulamaya geçmeden evvel karşılıklı olarak nedir ne değildir diye fikir belirttik. Hatta sevgili sistem programlama hocamız Tevfik İnan’ ın kulaklarını çınlattık :) Mehmet bizlere kendi projesinde bunu ne şekilde uyguladığını gösterdi. Data Access layer için yazdığı metotları başka bir uygulamada da kullandı ve bu sayede REUSE OF CODE kavramını da vurgulamış olduk.

Çalıştayın genel hatları bu şekildeydi. Dikkat ettiyseniz bu defa pek fazla kod örneği vermedim çünkü Mehmet yazının altında vereceğim linkte hem uygulama kodlarını (asp.net+ database) hem de sunumu bizlerle paylaşıyor. Çok güzel ve çok keyifli bir etkinlik oldu benim için. Hele de insanlara yardımcı olmak , yeri geldiğince açıklama yapmak çok güzeldi. Bir de Mehmet’in çabası bana da ilham verdi. Ben de ilk kez buradan duyuruyorum : Mart sonuna doğru ben de bu gibi çalıştaylar düzenleyeceğim. Konu olarak XML ve SQL SERVER 2005 Administration seçtim. Şu an için içerik oluşturmak ve kendimi daha da bilgilendirmekle uğraşıyorum. Bitirme projem , çalışmalarım vb. düzene girer girmez etkinliklere başlayacağız. Ayrıca çalıştay gününü çok karlı kapattım. Mehmet sağolsun bana bir adet Windows Vista Bussiness bir adet Office 2007 ve iki adet de Microsoft Press kitabı hediye etti. Daha ne isterim. Buradan arkadaşım Mehmet’ e emeği , çalışmaları ve dostluğu için çok teşekkür ediyorum. Şimdilik benden bu kadar. Beni okumaya devam edin…

Çalıştay hakkında bilgi ve örnekler için: http://www.ceturk.com/haberoku.asp?id=210

REPORTING SERVICES NEDİR ? (SEMİNER NOTLARIM)

Cuma günü katıldığım AJAX & REPORTING SERVICES konulu seminere ait görüşlerimi blogumda yazmştım ve konularla ilgili detaylı bilgiler de vereceğime söz report.JPGvermiştim. Aslında bu yazıyı daha erken yazmayı düşünüyordum fakat Aykut Bey’in sitesine sunumu eklemesini bekledim. Nihayet sunum elime geçti . Sizler de www.aykuttasdelen.net/downloads/rssemineri.ppt adresinden sunumu indirip Reporting Services ile tanışabilirsiniz.

Seminerde öncelikle ” RAPORLAMANIN OLMADIĞI BİR İŞ UYGULAMASI DÜŞÜNÜLEMEZ ! “  ifadesi ile raporlamanın ve yapılan işlemlere ait sonuçların görülebilir olmasının önemi vurgulandı. Reporting Services bileşenleri olan

  • Repository Service
  • Report Designer
  • Report Manager

bu 3 kavrama değinildi. Reporting Services’ ın Microsoft’ un SOA (SERVICE ORIENTED ARCHITECTURE)’ ya verdiği önemin bir sonucu olarak bir servis yapısında hizmet verdiğinden bahsedildi. Yani ister .NET isterseniz de JAVA uygulamalarınızla birlikte bu uygulamayı kullanabilirsiniz. Gerçi bu noktada şöyle bir çelişki var Reporting Services kullanabilmek için sistem gereksinimi olarak en az SQL SERVER 2000 gerekiyor. Bu da sunucu tarafında yine bir platform bağımlılığına neden olabilir.

Reporing Services için vurgulanan diğer bir nokta da LIST, TABLE, MATRIS , CHART şeklinde raporlar üretebilmesiydi. Gerçekten bu yapı görsel olarak büyük bir esneklik sağlıyordu. Dosya tipi olarak da HTML , TIFF, EXCEL , PDF,  CVS, XML formatlarında çıktı üretebiliyordu. Özellikle PDF ve EXCEL formatında çıktı üretimi şirketlerin vazgeçilmezi olsa gerek diye düşünüyorum.

Aykut Bey özellikle Reporting Services aracının ücretsiz olması üzerinde durdu. Yani bu Microsoft’ un iş dünyasına büyük bir armağanıydı ??? Elbette böyle bir durumda aklıma  “ACABA SQL SERVER 2005 EXPRESS EDITION İLE KULLANABİLİR MİYİZ” sorusu geldi. Malesef ki böyle bir şansımız yoktu. Yani  ücretsiz olma durumu biraz havada kalıyordu. Özellikle veritabanı yönetim sistemi olarak Microsoft SQL Server kullanmayanlar acaba sırf bu araç için SQL SERVER lisansı ödemek isterler mi bilemiyorum açıkcası…  “Sadece Reporting Services için SQL Server lisans ücreti farklı olabilir bu konuda en güzeli Microsoft Türkiye’den bilgi alamak ” şeklinde bir ekleme de olmuştu.

Aykut Taşdelen Bey semineri slaytlara boğmayarak bizlere çok büyük bir iyilikte bulundu. Sunumun ardından Reporting Services aracını ne şekilde kullacabilecegimize değindi .  Bu arada Reporting Services için IIS ‘in de kurulu olması gerekiyor. iis.JPGYandaki resmi tıklayıp büyütürseniz Reporting Services tarafından yaratılan sanal dizinleri görebilirsiniz. Buradan da farklı ayarlara erişmeniz mümkün. Bilgisayarınızda SQL SERVER 2005 kurulu ise Reporting Services otomatik olarak kurulmuş demektir. (SQL SERVER 2000 için kendiniz ayrı bir kurulum yapmalısınız). Ayrıca beraberinde rapor hazırlamanız için SQL SERVER BUSSINESS INTELLIGENCE DEVELOPMENT STUDIO da kuruluyor. (Visual Studio’ dan alışkın olduğunuz bir ortam hatta ta kenidisi) Start menüden Configuration Tools altından REPORTING SERVICES CONFIGURATION ile servis ayarlarını değiştirmeniz mümkün.  

rporting.JPG SQL SERVER BUSSINESS INTELLIGENCE DEVELOPMENT STUDIO ile yeni bir proje açtığınızda karşınıza soldaki ekran gelecek .( Resme tıklayarak büyütünüz) Bunun ardında da kolay bir şekilde REPORT SERVER PROJECT WIZARD ile hızlı bir şekilde raporlarınızı üretebilirsiniz. Fakat işin içine daha da esneklik katmak ve tasarımla uğraşmak isterseniz REPORT SERVER PROJECT ile daha detaylı raporlar üretebilmeniz mümkün. Öncelikle bir datasource tanımlamanız gerekiyor bunu unutmayın.

Report Server Datasourse (RDS) tanımlandıktan sonra hazırlayacağınız rapor RDL (REPORT DEFINITION LANGUAGE) uzantılı olacaktır. Böylece bu raporlarınızı bu dosya türünü destekleyen farklı raporlama araçlarıyla da kullanabilirsiniz.

Sunumda öğrendiklerim bu şekildeydi. Aykut Bey’e ayrılan vakit de kısıtlı olunca en fazla bu kadar detaya girilebildi. Benim aklıma ise xml formatında raporların üretilerek bunların bir HTML içinden çağırılması ile örneğin bir sitenin durumu hakkında kullanıcılara detaylı bilgi verilmesi gibi bir çalışma yapılabileceği geldi. Buradaki bilginin güncelliğinin korunması için de servisin sık zaman aralıklarında rapor üretmeye SCHEDULE edilmesi gerekiyor diye düşünüyorum.

Şimdilik benden bu kadar. Fırsatım olursa AJAX semineri hakkında da birşeyler yazmaya çalışcağım. Beni okumaya devam edin…