Kategori arşivi: MSSQL

SqlServer Restart Required Hatası

Sql server yüklemesinde bilgisayarı yeniden başlatmanızı isteyebilir ve bu hata bilgisayarı yeniden başlatmanıza rağmen düzelmeyebiliyor, çözüm için aşağıdaki adımları izleyin


This almost worked for me (using Vista) but everytime I rebooted some temporary files kept showing up in my "PendingFileRenameOperations". What did work for me though was
running Regedit, finding the key "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager" then deleting the value of "PendingFileRenameOperations".

I then exited regedit, ran my sql server 2k8 express edition setup (without rebooting) and it installed without an issue.

Hope that helps.

alıntı: https://social.msdn.microsoft.com/Forums/sqlserver/en-US/988ab9e3-26ce-48da-ad61-c458f5c9c539/setup-of-sql-server-2008-restart-required-but-i-have-restarted?forum=sqlsetupandupgrade

Truncate İle Tablo İçeriğini Temizlemek

sql-server-truncate

Truncate komutu bir tablonun içeriğini primary keyler ile birlikte sıfırlamak için kullanılır.

Bunu yaparak primary key değerini sıfırlamış olursunuz.

Primary key sütununda bulunan değerler her satıra eşsiz bir numara vermek için de kullanılabilir, bu sayede veriye hem daha hızlı erişmiş oluruz hem de update, delete gibi işlemlerde o satıra direk olarak erişme imkanımız olur

Bu yüzden primary key sıfırlarken dikkatli olmanız gerekir, eğer başka bir tabloda, sıfırladığınız tabloya join olarak referans vermiş iseniz, primary key iniz tekrar edeceğinden program içerisinde karışıklık yaratabilir.

Bu yüzden truncate kullanımında mümkünse o tabloyla ilişkili bütünt tablolara da aynı işlemi yapmak en mantıklısıdır.


DELETE FROM tabloismi

şeklindeki sorgularda genellikle Id bilgisini tuttuğumuz primary key değerleri sıfırlanmaz, bunun için aşağıdaki gibi tabloyu truncate etmemiz gerekir.

Örnek olarak PersonelListesi isimli tabloda bu işlemi yapalım


TRUNCATE TABLE PersonelListesi

SQL Kullanıcı Kaydı Tekrarı Önlemek

sql kullanıcı kontrol tekrar önlemek

Veritabanında bulunan kullanıcı listemize ait kullanıcıların kayıt tekrarını önleyerek aynı kullanıcının birden fazla kez kaydolmasını önleyebilir, ayrıca kullanıcı adının eşsiz olmasını sağlayabiliriz.

Bu işlemin tsql ile nasıl yapılacağını aşağıda örnekledim

Kullanıcı kaydını kullanıcı adı değerine göre kontrol ettik, örnekten yola çıkarak başka değerlerle de kontrol yapabilirsiniz.

İlk önce kullanacağımız değişkenleri tanımlıyoruz

Daha sonra belirtilen kullanıcı adına sahip başka bir kullanıcının kullaniciListesi tablosunda var olup olmadığını sorguluyoruz, eğer yoksa yeni bir kayıt olarak insert yapıyoruz ve yeni kaydın primary key değerini “IslemSonucu” isimli değişkene aktarıyoruz

Eğer daha önce aynı isimde bir kullanıcı tabloya kayıt yapılmışsa IslemSonucu değişkenine sıfır değeri veriyoruz

En son da IslemSonucu değişkenini select yapıyoruz, böylece tek seferde hem kayıt kontrolü, eğer uygunsa da kayıt yapmış oluyoruz

Veritabanı tarafında böyle bir script hazırladıktan sonra program tarafında şöyle bir mantık kurmalıyız

Eğer bu scriptten dönen sonuç sıfır ise bu kullanıcı adına daha önce kayıt açılmış, yani buna göre uyarı vermeliyim vs..

Eğer scriptten dönen sonuç sıfırdan büyükse yeni kullanıcıyı oluşturdum, id si de budur. artık bu id ile o kullanıcının bilgilerini mi gösteririm, oturum mu açtırırım veya başka işlemler mi yaparım, bu tamamen bana kalmıştır.

Bu kontrolü veritabanında yapmanın avantajı bir kaç kez program-veritabanı arasında gidiş-geliş yapmadan tek seferde sorunu çözebilmek.

Bu hem uygulamanın daha hızlı çalışmasını sağlar, hem de kod karmaşasını önler.

Veritabanı ile çalışan uygulamalar yazarken ne programa fazla yüklenin ne de sql e, ikisini dengeli kullanın.

Bu şekilde iki tarafta da kod temizliği, veri trafiğinin az olması gibi avantajlarınız olur.


declare @KullaniciAdi as varchar(max) =  'deneme'
declare @Sifre as varchar(max) = '1234'
declare @MailAdresi as varchar(max) = 'deneme@deneme.com'
declare @IslemSonucu as int

if(not exists(
select top 1 KullaniciId from KullaniciListesi where KullaniciAdi = @KullaniciAdi
)) begin
insert into KullaniciListesi (KullaniciAdi, MailAdresi, Sifre) values (@KullaniciAdi, @MailAdresi, @Sifre)
set @IslemSonucu = @@IDENTITY
end else begin
set @IslemSonucu = 0
end
select @IslemSonucu as IslemSonucu