27 Aralık 2007 Perşembe

Bizimle Çalışmak İster misiniz?

Merhaba Arkadaşlar,

Yeni kurulacak olan şirketimize çalışma arkadaşı arıyoruz.

Eğer aşağıdaki özelliklere sahipseniz ve bizimle çalışmak isterseniz lütfen benimle irtibata geçin.

Aradığımız ekip arkadaşımız ile birlikte genel olarak hem projelerde çalışacağız, hem de eğitim vereceğiz.

- MCSE Sertifikasına sahip,
- Az çok piyasa tecrübesi olan,
- En azından gündemi takip edebilecek kadar ingilizce bilen,
- Microsoft Windows Server ve Exchange Server konularında eğitim verebilecek,

olan arkadaşların bana ekrem@compecta.com adresinden ulaşmasını ve mümkünse özgeçmişlerini aynı adrese göndermesini rica ederim.


Ekrem Önsoy

"Generating user instances in SQL Server is disabled. Use sp_configure 'user instances enabled' to generate user instances."

HATA MESAJI:
"Generating user instances in SQL Server is disabled. Use sp_configure 'user instances enabled' to generate user instances."

AÇIKLAMA:
Visual Studio kullanarak bir veritabanı oluşturmaya çalıştığınızda veya veritabanı ile ilgili başka bir işte bu hata ile karşılaşabilirsiniz.

ÇÖZÜM:
Eğer SQL Server 2005 Express Edition with Advanced Services kullanıyorsanız, SQL Server Management Studio Express bu paket ile bilirkte geliyor zaten ve kurulum esnasında işaretlemişseniz bu araç da kurulmuş demektir.

Eğer SQL Server 2005 Express Edition kullanıyorsanız, SQL Server Management Studio aracı bu sürümle birlikte gelmez. Bu araç ücretsizdir ve aşağıdaki adresten edinilebilir.

SQL Server Management Studio Express:
http://www.microsoft.com/downloads/details.aspx?FamilyId=C243A5AE-4BD1-4E3D-94B8-5A0F62BF7796

Bu aracı indirdikten sonra üzerinde çalıştığınız (veritabanı oluşturmaya çalıştığınız) SQL Server Instance' ına bağlanın. Aracın sol üst köşesinde New Query düğmesini göreceksiniz. Buna tıklayın ve açılan sorgu düzenleme penceresine aşağıdaki kodu yazın ve çalıştırın:

==============================
EXEC sp_configure 'user instances enabled', 1;
GO
RECONFIGURE
GO
==============================

Bu kod, "User Instances" seçeneğini etkin hale getirecektir. Böylece bu hatayı almayacaksınız.

"User Instance" Hakkında daha fazla bilgi için... (İngilizce):
http://msdn2.microsoft.com/en-us/library/ms143684.aspx

The tail of the log for the database "Sirketim" has not been backed up. Use BACKUP LOG WITH NORECOVERY to backup the log if it contains work you do no

HATA MESAJI:
"Msg 3159, Level 16, State 1, Line 1

The tail of the log for the database "Sirketim" has not been backed up. Use BACKUP LOG WITH NORECOVERY to backup the log if it contains work you do not want to lose. Use the WITH REPLACE or WITH STOPAT clause of the RESTORE statement to just overwrite the contents of the log.

Msg 3013, Level 16, State 1, Line 1
RESTORE DATABASE is terminating abnormally."

AÇIKLAMA:
Bu hata mesajını bir veritabanını açmaya (Restore) çalıştığınızda alırsınız.

Hatanın nedeni ise, açmaya çalıştığınız veritabanının kopyasının, üzerine açmaya çalıştığınız veritabanından daha eski olmasıdır.

Meselâ "Sirketim" isimli veritabanınızın yedeğini en son 22 Aralık 2007 tarihinde aldınız. Bundan sonra veritabanı üzerinde tasarım olarak veya veri girişi olarak güncellemeler oldu. Ayın 23' ünde, ayın 22' sinde aldığınız yedeği bir nedenden dolayı Sirketim veritabanının üzerine açmak istediniz. İşte o zaman bu hatayı alırsınız.

ÇÖZÜM:
Aslına bakarsanız bu bir çeşit koruma sistemidir. Maksat, yeni verilerinizin üzerine yanlışlıkla eski verilerinizin yazılmasını önlemektir ve bu özellik SQL Server 2005 ile birlikte geldi.

Bu koruma sistemini açmak için (ki aslında uyarı mesajının içerisinde de çözümü söylüyor) iki yöntem kullanabilirsiniz.

1. Yöntem: Veritabanınızın en güncel Log yedeğini alarak (NO_TRUNCATE ve NORECOVERY parametrelerini kullanarak), yedeğinizi mevcut veritabanının üzerine açabilirsiniz.

2. Yöntem: Bu yöntemde RESTORE komutuyla birlikte REPLACE parametresini kullanarak (hiç yedek almadan) eski yedeğinizi halihazırdaki veritabanınızın üstüne açabilirsiniz. Bu yöntemde dikkate almanız gereken şey, bu açtığınız yedeği aldığınız tarihten sonra veritabanınızdaki yapılan tüm değişiklikler kaybolacaktır.

"Setup failed to configure the server. Refer to the server error logs and setup error logs for more information."

HATA MESAJI:
"Setup failed to configure the server. Refer to the server error logs and setup error logs for more information."

ya da

"Setup failed to configure the server. Refer to the server error logs and sqlstp.log for more information. "

ve Log dosyasının içinde:

"SQL_Latin1_General_CP1_CI_AS -m -Q -T4022 -T3659
Connecting to Server ...
driver={sql server};server=MyServer;UID=sa;PWD=;database=master [Microsoft][ODBC SQL Server Driver][Shared Memory]General network error. Check your network documentation.
[Microsoft][ODBC SQL Server Driver][Shared Memory]ConnectionRead (recv()). "

AÇIKLAMA:
SQL Server 2000' i kurmaya çalıştığınız bilgisayar adı büyük ve küçük harflerden karmaşık bir şekilde oluşuyorsa veya bilgisayar adının tamamı küçük harflerden oluşuyorsa bu hatayı alırsınız.

Örnek: "BiLGiSaYaRıM", "bilgisayarım".

ÇÖZÜM:
Bilgisayar adınızı aşağıdaki örnekteki gibi değiştirip SQL Server 2000' ininizi tekrar kurmayı deneyin.

Örnek: "BILGISAYARIM"

Daha fazla bilgi için aşağıdaki adresi kullanabilirsiniz:
http://support.microsoft.com/kb/285100

"Msg 8152, Level 16, State 4, Line 1 String or binary data would be truncated. The statement has been terminated."

HATA MESAJI:
"Msg 8152, Level 16, State 4, Line 1 String or binary data would be truncated. The statement has been terminated."

AÇIKLAMA:
Bir tabloda bulunan sütundaki karakter uzunluğundan fazla karakter girmeye çalışırsanız bu hata ile karşılaşırsınız ve bilgi girme işleminiz iptal olur.

Meselâ "Tablom" adında bir tablonuz var ve şeması da aşağıdaki gibi:

CREATE TABLE Tablom
(No Int Identity(1,1) PRIMARY KEY,
Ad nvarchar(10),
Soyad nvarchar(10),
)

Bu tabloya eğer aşağıdaki gibi bir veri girmeye çalışırsanız sorun olmaz:
INSERT INTO Tablom VALUES('Ekrem', 'Önsoy')

Fakat şöyle bir veri girmeye çalışırsanız hata alırsınız:
INSERT INTO Tablom VALUES('Abdulrezzak', 'Önsoy')

Çünkü "Abdulrezzak" adı, tabloyu oluştururken "Ad" sütununa atadığımız 10 karakterlik uzunluğu geçmektedir. Bu nedenle de veri kaydedilemez ve işlem bu hata ile sonuçlanır.

ÇÖZÜM:
Sütununuzun karakter genişliğini arttırın. Meselâ yukarıdaki örneğimizden devam edersek, "Ad" sütununun nvarchar veritipinin karakter genişliğini 15 yaparsak "Adbulrezzak" ismiyle ilgili bir sorun yaşamayız. Tabii diğer isimleri de gözönünde bulundurarak ihtiyacınıza göre daha geniş bir karakter aralığı tanımlayabilirsiniz.

"Event ID: 17137 Starting up database 'Veritabanı_Adı'"

BİLGİ:
"Event ID: 17137 Starting up database 'Veritabanı_Adı'"

AÇIKLAMA:
Bu bilgi mesajını veritabanınız başlatılırken alırsınız.

Eğer Olay Görüntüleyicideki Uygulama Kayıt dosyasında bu olaydan çok sık görürseniz ve eğer bir üretim (Production) ortamındaysanız performans sorunu yaşarsınız.

Bu bilgilendirme mesajının anlamı, veritabanınızdaki AUTO_CLOSE seçeneğinin TRUE olmasından kaynaklanıyordur. Eğer bu seçenek etkin ise, sözü edilen veritabanını kullanan son kullanıcı da bağlantıyı kapattığında veritabanınız otomatik olarak kapanacaktır. Daha sonra başka bir kullanıcı bu veritabanını kullanmaya çalıştığında veritabanı tekrar başlatılacaktır ve gene en son bağlı kullanıcı veritabanı ile bağlantısını kestikten sonra veritabanı tekrar kapatılacaktır. İşte sürekli bu açılıp kapanmalar dolayısıyla bu mesaj kayıt dosyanızı doldurmaktadır.

SQL Server 2000 MSDE ve SQL Server 2005 Express Edition' da bir veritabanı oluşturduğunuzda AUTO_CLOSE seçeneği otomatik olarak etkinleşecektir. ALTER DATABASE komutunu kullanarak bu özelliği kapatabilirsiniz veya bu işlemi SSMSE arayüzünü kullanarak da gerçekleştirebilirsiniz.

SQL Server' ın diğer sürümlerinde bu seçenek varsayılan olarak etkisiz (FALSE) bir halde gelmektedir ve siz özellikle seçmedikçe veya "model" sistem veritabanında bu değişikliği yapmadıkça AUTO_CLOSE özelliği etkin hale gelmez.

"A strong SA password is required for security reasons. Please use SAPWD switch to supply the same. Refer to readme for more details. Setup will now e

HATA MESAJI:
"A strong SA password is required for security reasons. Please use SAPWD switch to supply the same. Refer to readme for more details. Setup will now exit."

AÇIKLAMA:
SQL Server 2000 MSDE kurmaya çalışırken bu mesaj ile karşılaşabilirsiniz.

Aslında bu bir hata değil, bilgilendirme amaçlı bir uyarıdır; fakat kuruluma devam etmenize müsaade etmez, bu nedenle kurulumdan çıkılır.

ÇÖZÜM:
Bu sorunu çözmek için Başlat\Çalıştır' a tıklayıp, SQL Server' ın setup.exe' sinin yolunu yazıp yanına da bir boşluk bırakıp SAPWD="Şifre" yazmanız gerekir.

Aşağıdaki örnek gibi:

Setup.exe SAPWD="SA-S1frem"

"Executing the query "EXECUTE master.dbo.xp_delete_file 0,N'',N'',N'2007-11-14T13:06:42' " failed with the following error: "Error executing extended

HATA MESAJI:
"Executing the query "EXECUTE master.dbo.xp_delete_file 0,N'',N'',N'2007-11-14T13:06:42' " failed with the following error: "Error executing extended stored procedure: Invalid Parameter". Possible failure reasons: Problems with the query, "ResultSet" property not set correctly, parameters not set correctly, or connection not established correctly. "

AÇIKLAMA:
SQL Server 2005' te Maintanence Plan kullanarak oluşturduğunuz bir Maintanence Cleanup Task' teki Folder değerini boş bırakırsanız bu hatayı alırsınız.

Hatanın oluşumu şöyle:
- SSMS' i açın
- Management' tan Maintanence Plans' e gidin.
- Sağ tuş, Mailtanence Plan Wizard' a tıklayın.
- Bir Maintanence Cleanup Task oluşturmaya başlayın ve Define Maintanence Cleanup Task penceresine geldiğinizde Folder metin kutusuna gerekli yol değerini girmezseniz ve boş bırakırsanız, bu hatayı alırsınız.

ÇÖZÜM:
MAintanence Cleanup Task' i oluştururken karşınıza gelen Define Maintanence Cleanup Task penceresindeki Folder metin kutusuna veritabanı yedeklerinizi tuttuğunuz geçerli bir yol değeri girin.

"SQL Server replication does not support nicknames, such as "." or "(local)", as server names."

HATA MESAJI:
"SQL Server replication does not support nicknames, such as "." or "(local)", as server names."

AÇIKLAMA:
SQL Server 2000' de Replication için publisher, distributor vs. ayarlamaya çalıştığınızda bu hatayı alabilirsiniz.

ÇÖZÜM:
Enterprise Manager' daki SQL Server Group altında bulunan (ve muhtemelen "local" olan) SQL Server Registration' ınızı silmelisiniz ve sunucu adınızın kullanıldığı bir SQL Server Registration oluşturmalısınız.

Bunun için
- Enterprise Manager' ı açın
- SQL Server Group altında bulunan ve adı (local) olan SQL Server Registration' ınızı silin (üzerinde sağ tuşa tıklayıp "Delete SQL Server Registration")
- SQL Server Group üzerindeyken "New SQL Server Registration" a tıklayın.
- Listeden Instance' ınızın seçin ve kaydedin.

11 Aralık 2007 Salı

"The report server has encountered a configuration error. Access denied to the path 'c:\program files\microsoft sql server\mssql.3\reporting services

HATA MESAJI:
"The report server has encountered a configuration error. Access denied to the path 'c:\program files\microsoft sql server\mssql.3\reporting services\reportserver\rsreportserver.config' is denied."

AÇIKLAMA:
SQL Server 2005' i yükledikten sonra Report Manager' ı açmaya çalıştığınızda böyle bir hata alabilirsiniz.

ÇÖZÜM:
ASNET hesabına "rsreportserver.config" dosyası için READ izni vermeniz bu sorunu çözecektir.

6 Aralık 2007 Perşembe

SQL Server 2005: RS için Gereken IIS Bileşenleri

Son güncelleme tarihi: 06 Aralık 2007


Merhaba arkadaşlar,

Bu yazımda sizlere Windows' un son versiyonu olan Vista' da SQL Server 2005 kurarken Reporting Services ile ilgili yaşayabileceğiniz bir IIS sorunundan bahsedeceğim.

Windows Vista' da SQL Server kurmaya çalıştığınızda sisteminizde IIS yüklüymüş gibi görünse de SQL Server Setup' ta Sistem Kontrolünde (System Check) sisteminizde IIS' in yüklü olmadığına dair bir uyarı alabilir ve bunun sonucunda da SQL Server Setup' taki "Components to Install" penceresinde Reporting Services' ı işaretleyemeyip Reporting Services' ı kuramayabilirsiniz.

Bunun nedeni, Windows Vista' da IIS 7.0' ın tam olarak kurulu olmamasıdır. Yani tam olarak kurulu olmamasından kastım, IIS' in Reporting Services için gerekli olan bileşenlerinin kurulu olmamasıdır.

Reporting Services' ın ihtiyaç duyduğu IIS bileşenlerini aşağıda listeliyorum:


Web Management Tools:
- IIS 6 Management Compatibility
- IIS 6 WMI Compatibility
- IIS Metabase and IIS 6 configuration compatibility
World Wide Web Services:
- Application Development
- .NET Extensibility
- ASP.NET
- ISAPI Extensions
- ISAPI Filters
- Common HTTP Features
- Default Document
- Directory Browsing
- HTTP Redirection
- Static Content
- Security
- Windows Authentication


Bu özellikleri Windows Denetim Masası' ndaki "Programlar ve Özellikleri" nde bulunan "Windows özelliklerini aç yada kapat" taki "Internet Information Services" ten yükleyebilirsiniz.



Ekrem Önsoy

"Database diagram support objects cannot be installed because this database does not have a valid owner. To continue, first use the Files page of the

HATA MESAJI:
"Database diagram support objects cannot be installed because this database does not have a valid owner. To continue, first use the Files page of the Database Properties dialog box or the ALTER AUTHORIZATION statement to set the database owner to a valid login, then add the database diagram support objects."

AÇIKLAMA:
SQL Server 2005 Instance' ınıza, başka bir Instance' tan bir veritabanı taşıdığınızda ve bunu iliştirdiğinizde (Attach) veya açtığınızda (Restore) ve bu veritabanında bir Database Diagram oluturmaya çalıştığınızda bu hatayı alabilirsiniz.

ÇÖZÜM:
Bu sorunu çözmek için aşağıdaki kod bloğunu kendi ortamınıza göre ayarlayıp kullanabilirsiniz.

EXEC sp_dbcmptlevel 'Veritabanınızın_adı', '90';
go
ALTER AUTHORIZATION ON DATABASE::Veritabanınızın_adı TO "Logininiz"
go
use [Veritabanınızın_adı]
go
EXECUTE AS USER = N'dbo' REVERT
go

SQL Server Management Studio' nın açılmasını hızlandırmak

SSMS' in açılmasını, açılış ekranını göstermeyerek 1-2 sn. hızlandırabilirsiniz.

Bunun için SSMS i "-nosplash" anahtarını kullanarak çalıştırın.

Örnek: "C:\Program Files\Microsoft SQL Server\90\Tools\Binn\VSShell\Common\IDE\SqlWb.exe" -nosplash

2 Aralık 2007 Pazar

SQL Server 2005: Otomatik E-Posta Gönderme

Son güncelleme tarihi: 02 Aralık 2007


Merhaba arkadaşlar,

Bu sefer size, oluşturduğunuz bir işte (Job) bir hata meydana geldiğinde veya iş başarıyla tamamlandığında, işlemin sonucunu bildiren bir e-postanın otomatik olarak nasıl SQL Server tarafından göndertileceğini anlatacağım.

Bu işlem için değişik yerlerden değişik ayarlar yapıp, bunları tümleşik bir sistem halinde çalıştıracağız. Meselâ bu ayarlar aşağıdaki konularda olacak:

- Database Mail
- Operator
- SQL Server Agent Job

Size öncelikle özetle Database Mail' den bahsetmek isterim. Database Mail, SQL Server 2005 ile birlikte geldi. Microsoft artık SQLMail özelliğinin yerine Database Mail' in kullanılmasını öneriyor. SQLMail eskide kaldı anlayacağınız. Database Mail, SQLMail' in halefi ve tamamen yeniden tasarlanmış hâli. Ayrıca SQLMail' deki gibi Outlook gibi bir harici programa da ihtiyaç duymadan Database Mail ile SQL Server' ınızdan eposta gönderebilirsiniz.

SQL Server 2005 ilk kurulduğunda neredeyse her şeyin varsayılan olarak yasak olduğunu görürsünüz. Bu, güvenlik amacıyla yapılmıştır. Database Mail de varsayılan olarak kullanılamaz durumdadır. Öncelikle aşağıdaki adımları uygulayarak Database Mail' i kullanılabilir hale getirin.

- Başlat\Programlar\Microsoft SQL Server 2005' dan "SQL Server Surface Area Configuration" aracını açın *

- "Select a component, and then configure its features:" etiketinin altındaki listeden ayar yapmak istediğiniz ilgili Instance' ı seçin.

- "Database Engine" düğümü altındaki Database Mail' e tıklayın ve daha sonra "Enable Database Mail stored procedures" seçeneğinin işaretli olduğuna emin olun ve penceredeki "OK" düğmesine tıklayarak pencereyi kapatın.

* SQL Server Surface Area Configuration ile Resim-1' de de gördüğünüz gibi SQL Server' da dair bazı özelliklerin kullanılabilir veya kullanılamaz olacağını ayarlarız. SQL Server Surface Area Configuration aracı SQL Server 2005 ile birlikte çıktı ve SQL Server 2008' de kaldırıldı.


Resim-1


Database Mail' i kullanılabilir hale getirdikten sonra, bir Profil ve Hesap tanımlamanız gerekecek. Bunun için de aşağıdaki adımları izleyin.

- SQL Server Management Studio' yu çalıştırın. "Management" düğümünü genişletin ve "Database Mail" in üzerinde farenin sağ tuşuna tıklayıp, açılan menüden "Configure Database Mail" e tıklayın.

- Açılan "Database Mail Configuration Wizard" penceresindeki "Manage Database Mail accounts and profiles" seçeneğini işaretleyerek "Next" düğmeyine tıklayın.


Resim-2


- "Manage Profiles and Accounts" penceresi açılacaktır. Bu penceredeki "Create a new profile" seçeneğini işaretleyip "Next" düğmesine tıklayın.

- "New Profile" penceresi açılacaktır. Bu pencerede hem yeni bir Profil tanımlayacağız, hem de yeni bir Hesap oluşturacağız. Bunun için Resim-3' ten kopya çekebilirsiniz =)


Resim-3


- "New Database Mail Account" penceresindeki "OK" düğmesine tıklatıkdan sonra "Database Mail Configuration Wizard" penceresindeki "Next" düğmesine, ardından da "Finish" düğmesine tıklayarak E-Posta için Profil ve Hesabı oluşturmuş oluyoruz.

- Bu noktada ayarların doğruluğundan emin olmak için oluşturduğunuz e-posta hesabına bir deneme postası gönderebilirsiniz. Bunun için "Database Mail" üzerinde farenin sağ tuşuna tıklayarak açılan menüden "Send Test E-Mail..." öğesine tıklayabilirsiniz.

Bu bölümde "Database Mail" i etkin hale geitirip, otomatik olarak e-posta göndermek için yeni bir Hesap ve bu hesap için yeni bir Profil oluşturduk.

Bir sonraki bölümde ise yeni bir Operator oluşturup, SQL Server Agent ayarımızı yapıp, bize sonucu hakkında bilgi verilmesini istediğimiz işi (Job) ayarlayacağız.


------------------------ 2. Bölüm -----------------------------


Bu bölümde yeni bir Operator oluşturup, SQL Server Agent ayarımızı yapıp, bize sonucu hakkında bilgi verilmesini istediğimiz işi (Job) ayarlayacağız.

İşe ilk önce SQL Server Agent' ında, Database Mail' i kullanabilmemiz için gerekli ayarı yapalım. Bunun için aşağıdaki adımları izleyin:

- SQL Server Management Studio' yu çalıştırın.

- SQL Server Agent servisinin çalıştığından emin olun. Daha sonra SQL Server Agent düğümünün üzerinde farenin sağ tuşuna basın ve "Properties" e tıklayın. "SQL Server Agent Properties" penceresi açılacaktır.

- Bu pencerenin sol tarafındaki "Select a page" bölümünden "Alert System" a tıklayın. Sağ taraftaki bölümde "Mail Session" kısmındaki "Enable mail profile" seçeneğini göreceksiniz. Bu seçeneğin işaretli olduğundan emin olun. Bu seçenekle beraber "SQL Server Agent Mail" i etkin hale getirmiş oluyoruz. Amma güvenlik var değil mi =)


Resim-4


Bu ayarı da yaptıktan sonra bir Operator oluşturmaya geçebiliriz. Peki neden Operator oluşturuyoruz, neden bir Operator' e ihtiyacımız var? Operator ne işe yarar kuzum Allah aşkına? gibi soruları havada bırakmamak için hemen Operator kavramına da bir ışık tutayım.

Operator' ü epostayı alıcak olan kişinin isim ve adres bilgilerini kaydetmek için kullanıyoruz arkadaşlar. Gerek e-posta alıcısı olsun, gerek Net Send ve gerekse Pager.

Şimdi Operator tanımlamaya geçebiliriz sanırım. Bunun için eğer SQL Server Management Studio açık değilse açın ve aşağıdaki adımları uygulayın:

- SQL Server Agent düğümünü genişletin.

- Operators' ın üzerinde farenin sağ tuşuna tıklayın ve açılan menüden "New Operator..." seçeneğini seçin.

- Açılan "New Operator" penceresindeki "Name" kısmına operatörün adını yazın.

- "Enabled" seçim kutusunun işaretli olduğundan emin olun, aksi takdirde operatöre eposta vs. gönderilmeyecektir.

- "E-mail name" metin kutusuna alıcının e-posta adresini yazın. "OK" düğmesine tıklayın ve Operator' ümüz de hazır işte!


Resim-5


Şimdi sadece bir iş kaldı, o da istediğimiz bir işi, oluşturduğumuz Operator' ü kullanarak ayarlamak.

Bunun için ayarlamayı yapmak istediğiniz bir işin özelliklerini açın ve aşağıdaki adımları izleyin:

- Açılan "Jop Properties" penceresinde, sol tarafta bulunan "Select a page" listesinden "Notifications" seçeneğini seçin.

- Sağ taraftaki "Actions to perform when the job completes" seçeneklerinden "E-mail" in yanındaki seçim kutusunu işaretleyin ve aşağı açılır listeden de oluşturduğumuz "Nesrin Yiğit" Operator' ünü seçin.

- Hemen Operator seçim kutusunun sağ tarafında üç tane seçenek bulunmaktadır. Eğer bu seçenekler "When the job fails" i seçerseniz, eposta size iş başarıyla tamamlanamadığı zaman gönderilecektir. Eğer "When the job succeeds" i seçerneseniz, iş başarıyla tamamlandığında gönderilecektir. Eğer "When the job completes" i seçerseniz, o zaman da iş başarıyla da olsa başarısızlıkla da olsa tamamlandığında size sonuç hakkında posta gönderilecektir.


Resim-6


İş ayarımızı da yapıp konumuzu bitirmiş olduk.

Özetle, bu makalede sizlere Database Mail' i nasıl etkinleştirip yapılandırabileceğinizi, SQL Server Agent' ın Database Mail için nasıl yapılandırabileceğinizi, nasıl bir Operator oluşturabileceğinizi ve SQL Server Agent Job' ınızı nasıl ayarlayabileceğinizi anlatmaya çalıştım, öğrendiğinizi umarım.



Ekrem Önsoy

1 Aralık 2007 Cumartesi

"The remote copy of database "Veritabani_adi" has not been rolled forward to a point in time that is encompassed in the local copy of the database log

HATA MESAJI:
"The remote copy of database "Veritabani_adi" has not been rolled forward to a point in time that is encompassed in the local copy of the database log. (Microsoft SQL Server, Error: 1412)"

AÇIKLAMA:
SQL Server 2005' te Database Mirroring' i başlatmaya çalıştığınızda bu hatayı alabilirsiniz.

Nedeni, Mirror veritabanını açarken (Restore) kullandığınız Transaction Log dosyasının, Primary (Esas) veritabanındaki kayıtları yakalamaya yeterli olacak kadar yeni olmamasıdır.

ÇÖZÜM:
Database Mirroring işlemi için kullanılacak kaynak veritabanı olan Primary veritabanının Transaction Log yedeğini alıp, mümkün olan en kısa sürede Mirror görevini üstlenecek veritabanına uygulamak (Restore) ve hemen Database Mirroring' i başlatmak bu sorunu çözecektir.

Eğer Primary veritabanının hızına yetişemiyorsanız, kullanıcıların Primary veritabanında değişiklik yapmasını engelleyin ve öyle Transaction Log yedeğini alıp Mirror veritabanına uygulayın ve Database Mirroring işlemini başlattıktan sonra Primary veritabanını tekrar kullanılabilir duruma getirin.

"'Void Microsoft.SqlServer.Management.DatabaseMaintenance.TaskUIUtils..ctor()'. (Microsoft.SqlServer.MaintenancePlanTasksUI)"

HATA MESAJI:
"'Void Microsoft.SqlServer.Management.DatabaseMaintenance.TaskUIUtils..ctor()'. (Microsoft.SqlServer.MaintenancePlanTasksUI)"

AÇIKLAMA:
SQL Server 2005' te yeni bir Maintanence Plan oluşturmaya çalıştığınızda bu hatayı alabilirsiniz.

ÇÖZÜM:
SQL Server 2005 Servis Paketi 2' yi yüklemeniz bu sorunu çözecektir.

"Unable to cast object of type 'Microsoft.SqlServer.Management.Smo.SimpleObjectKey' to type 'Microsoft.SqlServer.Management.Smo.Agent.JobObjectKey'. (

HATA MESAJI:
"Unable to cast object of type 'Microsoft.SqlServer.Management.Smo.SimpleObjectKey' to type 'Microsoft.SqlServer.Management.Smo.Agent.JobObjectKey'. (Microsoft.SqlServer.Smo)"

AÇIKLAMA:
SQL Server 2005' te yeni bir Job oluşturmaya çalıştığınızda bu hatayı alabilirsiniz.

ÇÖZÜM:
SQL Server 2005 Servis Paketi 2' yi yüklemeniz bu sorunu çözecektir.

"The database "Veritabanı_adı" cannot be opened. It is acting as a mirror database."

HATA MESAJI:
"The database "Veritabanı_adı" cannot be opened. It is acting as a mirror database."

AÇIKLAMA:
SQL Server 2005' te Database Mirroring' teki Mirror görevini üstlenen veritabanına SELECT, INSERT, UPDATE, DELETE gibi işlemler yapmaya çalışırsanız, bu hata ile karşılaşırsınız.

ÇÖZÜM:
SQL Server 2005 ile SQL Server Failover Clustering' e alternatif olarak kullanılmaya başlanan Database Mirroring teknolojisinde, Mirror görevini üstlenen veritabanında herhangi bir değişiklik veya sorgulama yapılamaz.

Bununla birlikte, Mirror görevini ifa eden veritabanının Database Snapshot' ı alınarak ancak böyle raporlama amaçlı olarak kullanılabilir. Yani sadece SELECT 'i kullanabilirsiniz.

"Microsoft SQL Native Client (0x80004005) Subquery returned more than 1 value. This is not permitted when the subquery follows

HATA MESAJI:
"Microsoft SQL Native Client (0x80004005)

Subquery returned more than 1 value. This is not permitted when the subquery
follows =, !=, <, <= , >, >= or when the subquery is used as an expression."

AÇIKLAMA:
T-SQL' da eğer bir değişkene birden fazla değer atanmaya çalışılırsa bu hata alınır.

ÇÖZÜM:
Bir değişkene bir seferde sadece bir kayıt atanabilir.

"The mirror database, "Veritabanim", has insufficient transaction log data to preserve the log backup chain of the principal database. This may happen

HATA MESAJI:
"The mirror database, "Veritabanim", has insufficient transaction log data to preserve the log backup chain of the principal database. This may happen if a log backup from the principal database has not been taken or has not been restored on the mirror database. (Microsoft SQL Server, Error: 1478)"

AÇIKLAMA:
SQL Server 2005' te Database Mirroring' in güvenlik yapılandırma ayarını yaptıktan sonra, Database Mirroring işlemini başlatmak için "Start Mirroring" düğmesine tıklarsınız ve ardından bu hatayı alırsınız.

ÇÖZÜM:
Database Mirroring yapılandırmasına geçmeden önce, veritabanlarını Database Mirroring işlemine hazırlamamız gerekir.

Ana \ kopyalanacak veritabanımızın (Principal) aynısının yedeğini alıp, kopya (Mirror) görevini üstlenecek SQL Server Instance' ına açarız (Restore). Daha sonra, Principal veritabanının bir de Transaction Log yedeğini almalı ve bunu da Mirror' daki veritabanına uygulamalıyız. Bu işlemden sonra bu hatayı almamanız gerekiyor. Database Mirroring hakkında daha fazla bilgi için bu konudaki makalemi okuyabilirsiniz.

Database Mirroring hakkında daha fazla bilgi için aşağıdaki adresten bu konudaki makalemi okuyabilirsiniz.

http://www.ekremonsoy.net/makaleler/sql/surekli_kullanilabilirlik/database_mirroring.aspx

"The server network address "TCP://Ekrem-PC.MyServer.local:5022" can not be reached or does not exist. Check the network address name and that the por

HATA MESAJI:
"The server network address "TCP://Ekrem-PC.MyServer.local:5022" can not be reached or does not exist. Check the network address name and that the ports for the local and remote endpoints are operational. (Microsoft SQL Server, Error: 1418)"

AÇIKLAMA:
SQL Server 2005' te Database Mirroring' in güvenlik yapılandırma ayarını yaptıktan sonra, Database Mirroring işlemini başlatmak için "Start Mirroring" düğmesine tıklarsınız ve ardından bu hatayı alırsınız.

ÇÖZÜM:
Database Mirroring yapılandırmasına geçmeden önce, veritabanlarını Database Mirroring işlemine hazırlamamız gerekir.

Ana \ kopyalanacak veritabanımızın (Principal) aynısının yedeğini alıp, kopya (Mirror) görevini üstlenecek SQL Server Instance' ına açarız (Restore). İşte bu işlem esnasında, Mirror veritabanının Recovery State' inin "NORECOVERY" olmasına dikkat etmelisiniz. Aksi takdirde bu hatayı alırsınız.

Database Mirroring hakkında daha fazla bilgi için aşağıdaki adresten bu konudaki makalemi okuyabilirsiniz.

http://www.ekremonsoy.net/makaleler/sql/surekli_kullanilabilirlik/database_mirroring.aspx

"System.Data.SqlClient.SqlError: The operating system returned the error '32(error not found)' while attempting 'RestoreContainer::ValidateTargetForCr

HATA MESAJI:
"System.Data.SqlClient.SqlError: The operating system returned the error '32(error not found)' while attempting 'RestoreContainer::ValidateTargetForCreation' on 'C:\test\mydb.mdf'. (Microsoft.SqlServer.Smo)"

AÇIKLAMA:
SQL Server' da bir yedek dosyasını açmaya (Restore) çalıştığınızda bu hatayı alabilirsiniz.

Yedek dosyayı açamıyorsunuz, çünkü açmaya çalıştığınız dosyaların aynıları o anda zaten açık ve kullanılıyor.

Meselâ yedek dosyanızı SQL Server 2005' in yönetim arayüzü olan SQL Server Management Studio' dan açtığınızı varsayalım.

SSMS' teki "Restore Database" penceresinde bulunan "Options" penceresinde "Restore the database files as:" listesi bulunmaktadır. İşte bu liste, yedeğinizin içerisindeki veritabanı dosyalarını içerir.

Bu hata durumunda ise sizin yapmaya çalıştığınız, bu listede belirtilen isimlerde ve yollardaki dosyaları, zaten bu isim ve yollarda bulunan dosyaların üzerine kaydetmeye çalışmaktır. Fakat çalışan dosyanın üzerine kaydedemeyeceğiniz için, bu hatayı alırsınız.

ÇÖZÜM:
SSMS' teki "Restore Database" penceresinde bulunan "Options" penceresinde "Restore the database files as:" listesindeki dosya yolu veya dosya adı bilgilerinde değişiklik yaparak sorunu çözebilirsiniz.

"Error 5(error not found) occurred while opening file 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\master.mdf' to obtain configuration in

HATA MESAJI:
"Error 5(error not found) occurred while opening file 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\master.mdf' to obtain configuration information at startup. An invalid startup option might have caused the error. Verify your startup options, and correct or remove them if necessary."

AÇIKLAMA:
SQL Server 2005 Instance' ınızı başlattığınızda, Olay Görüntüleyici (Event Viewer)' da böyle bir hata alabilirsiniz.

Bu hatanın benim karşılaştığım sebebi, SQL Server servisi için kullanılan hesabın, hatada belirtilen dosya yolu için yeterli izinlerinin olmamasıydı.

Meselâ, SQL Server servis hesabının örnekteki DATA klasörüne erişim hakkı yoktu.

Not: Tek erişim sorunu bu klasörle sınırlı değildir. Bu Instance ile ilgili tüm klasörlerin erişim haklarını kontrol etmeniz gerekebilir.

ÇÖZÜM:
SQL Server servis hesabına gerekli erişim haklarını verdiğinizde, bu sorun çözülecektir.

"Error Source: Microsoft OLE DB Provider for SQL Server Error Description:[DBNETLIB][ConnectionOpen (Invalid Instance()).]Invalid connection."

HATA MESAJI:
"Error Source: Microsoft OLE DB Provider for SQL Server Error

Description:[DBNETLIB][ConnectionOpen (Invalid Instance()).]Invalid connection."

AÇIKLAMA:
SQL Server 2000 Enterprise Manager' dan başka bir SQL Server 2005 Instance' ına bağlanmaya çalıştığınızda bu hatayı alırsınız.

ÇÖZÜM:
SQL Server 2005' in yönetim arayüzü olan SQL Server Management Studio kullanarak bir SQL Server 2000 Instance' ına bağlanabilirsiniz; fakat aynı şeyin tersini, yani Enterprise Manager kullanarak bir SQL Server 2005 Instance' ına bağlanamazsınız.

"Error 0xc002f210: Preparation SQL Task: Executing the query "" failed with the following error: "Retrieving the COM class factory for component with

HATA MESAJI:
"Error 0xc002f210: Preparation SQL Task: Executing the query "" failed with the following error: "Retrieving the COM class factory for component with CLSID {...} failed due to the following error: 80040154. Possible failure reasons: Problems with the query, "ResultSet" property not set correctly, parameters not set correctly, or connection not established correctly."

AÇIKLAMA:
Export Wizard ile veri vermeye çalıştığınızda bu hata ile karşılaşabilirsiniz. Nedeni ise SQL Server Agent Servisinin çalışmıyor olmasıdır.

ÇÖZÜM:
Export \ Import Wizard' ı kullanmadan önce SQL Server Agent Servisinin çalıştığından emin olun.

Bunun için SQL Server Configuration Manager veya Services MMC' yi kullanabilirsiniz.

"Ad hoc update to system catalogs is not supported."

HATA MESAJI:
"Ad hoc update to system catalogs is not supported."

AÇIKLAMA:
Eğer SQL Server 2005 Instance' ınızdaki "allow updates" seçeneği etkin ise, aşağıdaki örnek kodu çalıştırdığınızda bu hatayı alırsınız.

=============================
sp_configure 'Ole Automation Procedures', 1;
GO
RECONFIGURE
GO
=============================

ÇÖZÜM:
Eğer 'allow updates' seçeneğini etkin halde bırakmak istiyorsanız o zaman yukarıdaki kodu şöyle yazın:

=============================
sp_configure 'Ole Automation Procedures', 1;
GO
RECONFIGURE WITH OVERRIDE
GO
=============================

Eğer 'allow updates' seçeneğini sp_configure Stored Procedure' ünü kullanarak etkisiz hale getirirseniz, o zaman ilk çalıştırmayı deneyip hata aldığınız kodu gene aşağıdaki şekilde çalıştırabilirsiniz:

=============================
sp_configure 'Ole Automation Procedures', 1;
GO
RECONFIGURE
GO
=============================

"An error has occurred while establishing a connection to the server. When connecting to SQL Server 2005, this failure may be caused by the fact that

HATA MESAJI:
"An error has occurred while establishing a connection to the server. When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections. (provider: TCP Provider, error: 0 - No connection could be made because the target machine actively refused it.) (Microsoft SQL Server, Error: 10061)"

AÇIKLAMASI:
Bağlanmaya çalıştığınız SQL Server 2005 Instance' ına ait SQL Server servisi çalışmıyorsa bu hatayı alırsınız.

ÇÖZÜM:
SQL Server servisinizin çalıştığından emin olun. Bunun için:

- Başlat\Programlar\Microsoft SQL Server 2005\Configuration Tools' tan SQL Server Configuration Manager' ı çalıştırın ve "SQL Server 2005 Services" düğümünden ilgili Instance' a ait SQL Server servisinizin çalışıp çalışmadığını kontrol edin.

- Services MMC' den ilgili SQL Server Instance' ınıza ait SQL Server servisini kontrol edin. (Services MMC' yi başlatmak için Başlat\Çalıştır: "services.mmc" yazıp "Tamam" düğmetine tıklayın.)