Hoþgeldiniz           
   
"SQL Server baþvuru kaynaðýnýz"
Skip Navigation Links
=========
Anasayfa
Makaleler
Hatalar \ Çözümler
Duyurular
Diðer
Ýpuçlarý
Yararlý Adresler
Mesaj TahtasýExpand Mesaj Tahtasý
HakkýmdaExpand Hakkýmda
Ýletiþim
Kullanýcý Adý:
Þifre:
 

Ne Mutlu Türküm Diyene!

SQL Server ile ilgili soru sormak için buraya týklayýn!


Yazýlarýmý nasýl buluyorunuz?






En Son SQL Server ile Ýlgili Okuduðum Kitaplar
- Inside Microsoft SQL Server 2005: Query Tuning and Optimization - MS Press (Ýngilizce)
- Accelerated SQL Server 2008 - Apress (Ýngilizce)
- Designing and Optimizing Data Access by Using SQL Server 2005 - MS Press (Ýngilizce)
- Microsoft SQL Server 2005 Database Solutions Design - Wiley Publishing (Ýngilizce)- Optimizing and Maintaining a Database Administration Solution by Using SQL Server 2005 - MS Press (Ýngilizce)- Designing a Database Server Infrastructure Using SQL Server 2005 - MS Press (Ýngilizce)- SQL Server 2005 Implementation and Maintenance - MS Press (Ýngilizce)
- SQL Server 2005 Administrators Companion - MS Press (Ýngilizce)


 SQL Login'in şifresi ne zaman değiştirildi?
Gün gelir lâzım olur da bir SQL Login'in şifresinin ne zaman değiştirildiğini öğrenmeniz gerekirse ne yaparsınız? SELECT LOGINPROPERTY('kullanıcı adı', 'PasswordLastSetTime') komutunu kullanıp, ilgili kullanıcının şifresinin değiştirildiği zaman bilgisini ayrıntılı olarak görebilirsiniz.
14.07.2010 17:28:12  

 
 Bir SQL Server 2005 Failover Cluster Bug' ı
SQL Server 2005 Failover Clustering kurulumundan sonra, Cluster Administrator' dan SQL Server Resource Group' taki SQL Server Resource' unun Properties->Advanced penceresinde bulunan "Affect the group" seçim kutusu boş geliyor. Halbuki bunun seçili olması gerekiyor. SQL Server 2005 SP3' te de durum aynı, bu sorun hâlâ düzeltilmiş değil. SQL Server 2000 ve 2008'de ise böyle bir sorun yok. Bu nedenle SQL Server 2005 Failover Clustering kurulumlarınızdan sonra, SQL Server Resource Group' u için "Affect the group" seçeneğini elle seçili hale getirmelisiniz.
10.06.2010 16:45:55  

 
 SQL Server Failover Clustering' te Aktif Düğüm Hangisi?
SQL Server 2005 ve üstü versiyonlarda SQL Server Failover Clustering' in aktif düğümünü, SELECT SERVERPROPERTY('ComputerNamePhysicalNetBios') komutuyla tespit edebilirsiniz.
10.06.2010 16:42:50  

 
 SQL Server 2005 \ 2008 Failover Clustering
SQL Server 2005' te tek aktif düğümlü bir Cluster kuracağımız zaman SQL Server 2005 Setup' ı sadece bir tane düğümde çalıştırıyoruz. Fakat SQL Server 2008' de bu değişti. SQL Server 2008' de, SQL Server 2008 Setup' ı her düğümde çalıştırmanız gerekiyor. İlk önce bir düğümde SQL Server 2008 Setup ana menüsünde bulunan "Installation" sayfasındaki "New SQL Server failover cluster installation" seçeneğiyle Failover Clustering kurulumunu yapıyorsunuz, daha sonra da düğüm ekleme işlemi için diğer her bir düğümde yine SQL Server 2008 Setup ana menüsünde bulunan "Installation" bölümünden "Add node to a SQL Server failover cluster" isimli bağlantıya tıklıyorsunuz. Eğer düğüm ekleme işlemlerini yapmazsanız, Failover yapmaya kalktığınızda kaç düğümünüz olursa olsun diğer düğümlere geçiş yapılamaz. Aman dikkat.
09.06.2010 19:41:39  

 
 SQL Server 2008 R2: Reporting Services
SQL Server 2008 R2' dan itibaren Reporting Services, Windows Server 2003 ve Windows Server 2003 R2 Itanium versiyonlar için desteklenmeyecek. Eğer SQL Server 2008 R2' nun Reporting Services bileşenini Itanium bir sunucuda kullanmak istiyorsanız, İşletim Sisteminizi Windows Server 2008 veya Windows Server 2008 R2 Itanium versiyonuna yükseltmeniz gerekmektedir.
23.03.2010 10:11:27  

 
 SQL Server Profiler
Profiler' daki "Duration" alanındaki değerler, SQL Server 2005 ve daha sonrası için eğer istenirse mikrosaniye veya milisaniye olarak gösterilebiliyor (Tools->Options). Eğer mikrosaniye olarak gösterilmesi için ayarlamazsanız örneğin Profiler' da "1694" gibi gördüğünüz bir değeri, bu Trace' i bir tabloya aktardığınızda "1694850" olarak göreceksiniz. Yani aslında sizin Tools->Options' tan yapacağınız ayar sadece arayüzde yeniden biçimlendirme yapar, verinin öyle kaydedilmesini sağlamaz. Veri her zaman mikrosaniye olarak kaydedilir. Bilginize ;)
05.03.2010 11:19:07  

 
 DİKKAT: SSMS - Database Properties penceresi...
SQL Server Management Studio 2008' deki Database Properties -> Files penceresini kullanarak bir veritabanının veri dosyalarında değişiklikler istediğinizde bunu bu pencereden yapmamanızı tavsiye ederim. Çünkü bu arayüzden yapılınca, SQL Server veritabanı dosyalarını Shrink etmeye çalışıyor. Bu da genelde iyi bir şey değildir. Bunun yerine, yine aynı pencereyi kullanarak istediğiniz değişiklikleri yapabilirsiniz; fakat OK tuşuna basmayın, bunun yerine pencerenin üst tarafındaki Script tuşunu kullanın ve işlemi Script' leyin ve Shrink komutlarını çıkartarak yapmak istediğiniz değişikliklere ait komutları Query Editor' de çalıştırın.
27.01.2010 16:32:13  

 
 Sorgu çalıştırma süresi
Bazen şöyle bir soru alıyorum: "Bir sorguyu Query Analyzer' da veya Query Editor' de çalıştırdığım zaman, çalışma süresi olarak en az saniyeyi görebiliyorum, süreyi milisaniye olarak nasıl görebilirim?" Eğer bir sorgunun çalışma süresi, çalışırken derlenme ve optimizasyon için ne kadar CPU zamanı harcadığı gibi bilgileri pratik olarak görmek için SET STATISTICS TIME ON komutunu kullanabilirsiniz. Ayrıca bu komut, SSMS' teki Tools\Options->Query Execution->SQL Server->Advanced bölümünden varsayılan hale de getirilebilir.
20.04.2009 19:55:33  

 
 SSMS: GO 'sayı'
Query Editor' de bir komutu bir döngüye sokmak için GO komutunu kullanabileceğinizi biliyor muydunuz? Misal: "SELECT GetDate() GO 1000" komutu, GetDate() fonksiyonunun 1000 kere çalışmasını sağlayacaktır.
07.04.2009 11:25:07  

 
 Database Snapshot' tan dönmek
Veritabanınızın Database Snapshot' ını kullanarak, herhangi bir nedenden dolayı veritabanınızı eski haline getirmek için Database Snapshot' ın alındığı ana geri dönebileceğinizi biliyor muydunuz? Örneğin, aynı günün sabahı saat 9:00' da veritabanınızın Database Snapshot' ını oluşturdunuz diyelim ve saat 10:00' da veritabanınızda toplu bir güncelleştirme yapıldı ve bunun hatalı bir güncelleştirme olduğunu anladınız fakat elinizde ne yedek var ne de SQL Server bu işlemi geri almanıza izin vermiyor. İşte bunun gibi durumlarda "RESTORE DATABASE 'veritabanı_adı' FROM DATABASE_SNAPSHOT = 'database_snapshot_adı'" komutuyla veritabanınızı saat 9:00' daki haline döndürebilirsiniz. Bu dönme işlemi boyunca ne Database Snapshot' ınız ne de veritabanınız kullanılabilir olmayacaktır, ayrıca ana veritabanınıza ait o anda sadece bir tane Database Snapshot olmalıdır; eğer birden fazla aynı veritabanına ait Database Snapshot varsa, sadece bir tane kalana kadar diğerleri silinmelidir.
23.02.2009 12:38:40  

 
 Bir Database Snapshot' ı Silmek
Normalde, kullanıcıların bağlı olduğu bir veritabanını doğrudan DROP DATABASE komutuyla silemezsiniz; fakat bu veritabanı eğer bir Database Snapshot ise, o zaman doğrudan "DROP DATABASE " gibi bir komutla kaç kullanıcı bağlı olursa olsun bu veritabanını silebilirsiniz. Burada dikkat edilmesi gereken ise, bu komutu çalıştıracak kullanıcının bu Database Snapshot' a o anda bağlantısı olmaması gerektiğidir. Aksi takdirde "Cannot drop database because it is currently in use." hatasını alırsınız.
30.01.2009 15:30:00  

 
 İpucu: Indexed View
Indexed View' lerin, Query Optimizer tarafından uygun görüldüğü takdirde SQL Server 2005 ve üst versiyonlarının Enterprise Edition' ları tarafından otomatik olarak kullanılabileceğini biliyor muydunuz? SQL Server 2005' in diğer Edition' ları için ise, Query Optimizer' ın Indexed View' leri kullanması için "NOEXPAND" Table Hint' ini kullanmanız gerekiyor.
16.12.2008 11:59:35  

 
 İpucu: DDL komutlarıyla bir nesne oluştururken...
DDL komutlarıyla (CREATE, ALTER, DROP) bir nesne oluştururken, bu nesne için bir Schema adı kullanmayı ihmal etmeyin. Eğer bir Schema adı kullanmazsanız SQL Server o nesneyi, önce bu nesneyi çağıran kullanıcının varsayılan Schema' sının altında, daha sonra da "dbo" Scheması altında arayacaktır.
16.12.2008 11:06:04  

 
 Rastgele Veri Seçimi (TABLESAMPLE)
Bir tablodan rastgele veri seçmek için FROM' dan sonra TABLESAMPLE komutunun kullanılabileceğini biliyor muydunuz? Örneğin: "SELECT * FROM Sales.SalesOrderDetail TABLESAMPLE SYSTEM (2 PERCENT)" şeklinde kullanabilirsiniz. Yalnız şunu hemen belirteyim ki bu komut oldukça istikrarsızdır. Yani siz, tablodaki kayıtların %2' sini getirmesini belirtirsiniz, ama dönecek kayıtların sayısı oldukça değişken olacaktır. Bu komutu şu şekilde de kullanabilirsiniz: "SELECT * FROM Sales.SalesOrderDetail TABLESAMPLE SYSTEM (500 rows)" ama kesinlikle net olarak 500 kayıt döndürmeyecek, 800 ile 300 arası kayıt döndürecektir. Bir başka kullanılışı ise şöyle: "SELECT * FROM Sales.SalesOrderDetail TABLESAMPLE SYSTEM (500 rows) REPEATABLE (123456)" Bu kullanımda REPEATABLE seçeneğinde bir "bigint" değeri belirtip, her seferinde aynı sonucun dönmesini sağlayabilirsiniz, ta ki veri değişmediği sürece. Eğer bir INSERT, UPDATE, DELETE veya Index Rebuilding gibi işlemler yapılırsa, REPEATABLE' da verdiğiniz değer aynı bile olsa farklı bir set dönecektir.
17.11.2008 12:32:00  

 
 SQL Server 2008: Integrated Full-Text Index Catalog
SQL Server' ın önceki versiyonlarında Full-Text Catalog, IN PATH seçeneği kullanılarak ayrı bir klasörde tutulabiliyordu. SQL Server 2008' de ise Catalog ayrı bir klasörde tutulamıyor. Bunun yerine bir FileGroup' ta, veritabanının bir parçası olarak saklanıyor. "IN PATH" seçeneği SQL Server 2008' de geriye dönük destek için hâlâ kullanılabiliyor, fakat yeni uygulamalarınızda bu seçeneği kullanmamanızı tavsiye ediyorum. Çünkü SQL Server 2008' den itibaren bu seçenek "ileriki versiyonlarda kaldırılacak özellikler" listesine girdi (Yani "Depricated" oldu). Ayrıca, eğer mümkünse Full-Text Catalog için ayrı bir FileGroup oluşturun.
28.10.2008 11:19:35  

 
 SQL Server 2008: Resource Veritabanı
SQL Server 2005' te, "master" sistem veritabanını varsayılan yerinden başka bir yere taşımanız gerektiğinde "resource" sistem veritabanını da "master" veritabanını taşıyacağınız yere taşımalıydınız. SQL Server 2008' de bu zorunluluk kaldırıldı. Artık ikisini de farklı yerlerde tutabilirsiniz. SQL Server 2008' de, "resource" veritabanının varsayılan yeri şöyle: "-sürücü-:\Program Files\Microsoft SQL Server\MSSQL-instance_no-.-instance_adı-\Binn\". Microsoft, bu veritabanının yerinin değiştirilmemesini iki nedenle öneriyor, bunlar: 1-SQL Server servis paketleri veya "hotfix" ler bu veritabanını \Binn klasöründe oluşturuyor. 2-Failover Cluster' lı bir SQL Server ortamında "resource" veritabanınının yerinin Cluster olmayan bir yerle değiştirilmesi, Failover Cluster çalışmamasına neden olacaktır.
09.10.2008 13:27:30  

 
 SQL Server 2008: Replace Fonksiyonu
SQL Server 2005' te, Replace fonksiyonunu kullandığınızda, bu fonksiyonun aldığı üç parametrenin sağındaki boşluklar otomatik olarak siliniyordu (RTRIM). Fakat SQL Server 2008' deki Replace fonksiyonunda bu boşluklar otomatik olarak silinmiyor. Bu işlemin aynen SQL Server 2005' teki gibi olmasını isteyenler Replace fonksiyonunu şu şekilde kullanabilirler: REPLACE(RTRIM(parametre1), RTRIM(parametre2), RTRIM(parametre3)).
09.10.2008 12:02:47  

 
 SQL Server' da noktalı virgül kullanımı
SQL Server' ın sıradaki değil (yani muhtemelen 2011' de çıkacak versiyon değil), ama ondan sonraki SQL Server versiyonunda (muhtemelen SQL Server 2014) T-SQL komutlarının sonuna noktalı virgül koyulması zorunlu olacak. Bunu şimdiden sizinle paylaşıyorum ki, ileriye dönük projeleriniz için noktalı virgül kullanımına şimdiden başlayın. Aksi takdirde, gelecekteki SQL Server' da uygulamanızı çalıştırırken sorun yaşarsınız. Muhtemelen "daha çook var" diyorsunuzdur, zaten benim de "ileriye dönük" ibaresini vurgulamamın nedeni buydu.
09.10.2008 11:51:41  

 
 SQL Command (SQLCMD)
SQLCMD aracı vasıtasıyla çalıştırdığınız Script' lerde veya komut satırlarında değişkenler kullanabileceğinizi biliyor muydunuz? Örneğin, "yedek_al.sql" isimli Script' inizin içinde şöyle bir yedek alma komutu olsun: "BACKUP DATABASE $(Veritabanim) TO DISK=N'D:\SQLYedekler\$(Veritabanim).bak'" Gördüğünüz gibi, buradaki değişken adı "Veritabanim". Bu değişkene atanacak değer ise, SQLCMD komutuyla "yedek_al.sql" Script dosyası çağırılırken "-v" parametresi ile atanıyor. Örnek: SQLCMD -E -i yedek_al.sql -v Veritabanim="Muhasebe".
06.10.2008 15:15:10  

 
 SQL Command (SQLCMD)
ISQL ve OSQL, SQL Server 2005' ten önce SQL Server Instance' larında Komut İstemcisinden işlem yapmak için kullanılan Komut İstemcisi araçlarıydı. SQL Server 2005 ile birlikte, tamamen yeniden yazılan SQL Command (SQLCMD) Komut İstemci aracı geliştirildi ve OSQL da tedavülden kalkma sürecine girdi ("Deprecated" oldu). SQLCMD' den önceki araçlar SQL Server Instance' larına ODBC ile bağlanıyorlar ve bu yüzden bir seferde bir Instance' a bağlanabiliyorlardı. Fakat SQLCMD aracı bağlantı için OLE DB kullanıyor ve bu sayede değişik SQL Server Instance' larına bir Script' te birden fazla bağlantı kurabiliyor. Örnek vermek gerekirse, ODBC ile bağlandığınızda bir Script içerisinde iki farklı SQL Server Instance' ından iki farklı veritabanının yedeğini alamazsınız. Fakat aynı işlem için SQLCMD kullanarak ve Script' inizde de ":CONNECT SQLServerInstanceAdı -E" komutunu da kullanarak farklı Instance' larda işlem yapabilirsiniz.
06.10.2008 14:55:43  

 
 SQL Server Agent
SQL Server 2005 ve 2008' de, bir kullanıcıyı "sysadmin" yapmadan, bu kullanıcıya iş (Job) oluşturma ve bunu yönetme hakkı verebileceğinizi biliyor muydunuz? Bunun için, bahsi geçen kullanıcıyı MSDB veritabanındaki üç rolden birine atamanız yeterli. Rolleri, yetkileri en kısıtlı olandan itibaren yazıyorum: 1) SQLAgentUserRole, 2) SQLAgent ReaderRole, 3) SQLAgentOperatorRole. Roller hakkında daha fazla bilgi için Books Online' a bakabilirsiniz: http://msdn.microsoft.com/en-us/library/ms188283.aspx
05.10.2008 20:49:24  

 
 SQL Server 2008: IntelliSense
SQL Server 2008' in CTP sürümleriyle çalışanlar bilir, SQL Server 2008 CTP5 ve CTP6' sında IntelliSense özelliği SQL Server' ın önceki sürümleri için de kullanılabiliyordu. Bunun nedeni, IntelliSense kullanımı için versiyon kontrolünün yapılmamasıydı. SQL Server 2008' in RTM sürümüyle birlikte, IntelliSense için versiyon kontrolü özelliği eklendi ve RTM versiyonundan itibaren IntelliSense özelliği sadece SQL Server 2008 Instance' larına karşı kullanılabilir hale getirildi. Buna neden olarak da, bu özelliğin SQL Server 2008 ile birlikte ilk defa kullanılması ve eski SQL Server versiyonlarında bu özellikle ilgili çeşitli sorunlar yaşanılması gösterildi.
02.10.2008 23:14:21  

 
 SQL Server 2008 Enterprise Edition
SQL Server' ın eski versiyonlarını Windows masaüstü işletim sistemlerine kurmaya çalışanlar bilir ki, SQL Server' ın Enterprise Edition' ı Windows XP veya Vista gibi işletim sistemlerinin üzerine kurulamazdı. Microsoft, bu kuralı SQL Server 2008 ile değiştirdi. SQL Server 2008 Enterprise Edition, Windows Vista veya Windows XP gibi masaüstü işletim sistemlerine kurulabiliyor!
24.09.2008 20:07:28  

 
 SQL Server Instance' ınızın (misal TCP protokolüne ait) kullandığı port numarasını öğrenmek için...
SELECT local_tcp_port,client_tcp_port,* FROM sys.dm_exec_connections WHERE session_id = @@SPID AND net_transport = 'TCP'
26.05.2008 01:29:21  

 
 "Operating system" hata kodlarının açıklaması
Diyelim ki, içinde "operating system error 3" geçen bir hata mesajı aldınız ve sayının yanında açıklaması da yok. İyi, güzel de, "3" burada ne anlama geliyor? İşte bu sayının açıklamasını görmek için Komut İstemcisini çalıştırıp şu kodu yazabilirsiniz: "NET HELPMSG 3" bunun sonucunda alacağınız açıklama mesajı da şudur: "The system cannot find the path specified".
12.05.2008 11:35:00  

 
 SQL Server veritabanı, SQL Server' ın x64 veya x86 mimarisi olmasına göre değişir mi?
Hayır. SQL Server' ın 64Bit bir sürümünden ister yedek olarak alınmış, ister ise ilişkisi koparılarak alınmış (Detach) bir veritabanı, 32Bit bir SQL Server sunucusunda açılabilir (Restore) veya iliştirilebilir. Tabii bu işlemin tam tersi de olabilir, yani 32Bit bir SQL Server' dan 64Bit bir SQL Server' a da veritabanı aktarımı yapılabilir. Bu açıdan birbirlerine tamamen uyumludurlar.
02.05.2008 00:06:10  

 
 SQL Server için Service Paketi veya yama yüklemesi sırasında gereken izin nedir?
Bir SQL Server Instance' ının versiyonunu bir SQL Server Servis Paketi veya yamasıyla yükseltmek için, yükseltme işlemi esnasında kullanacağınız Login, System Administrator (sysadmin) rolünün bir üyesi olmalıdır.
29.04.2008 21:33:48  

 
 SQL Server Log dosyası çok mu şişti?
Burada bahsettiğim şey Transaction Log dosyası değil; SQL Server' ın, SQL Server Instance' ına karşı yapılan giriş çıkışları, hataları, uyarıları vs. tuttuğu kayıt dosyasıdır. Bazen SQL Server' ınızı uzun süre (bazen aylarca...) açık tutarsınız ve bu da Kayıt dosyasının şişmesine neden olur. Kayıt dosyasını yenilemek için "sp_cycle_errorlog" veya "DBCC ERRORLOG" komutlarını kullanabilirsiniz.
28.04.2008 18:01:58  

 
 SQL Server 2005 Instance' ınıza bağlı kullanıcılarınızın IP adreslerini görmek için...
SELECT client_net_address FROM sys.dm_exec_connections
05.04.2008 11:33:01  

 
 SQL Server 2008: "Declare" ile bir değişken tanımlarken...
SQL Server 2008' de, "Declare" ile bir değişken tanımlarken aynı satırda o değişkene veri de atayabileceğiz! Bunu, SQL Server' ın önceki versiyonlarında yapamıyorduk. Ancak değişkeni tanımladıktan sonra başka bir satırda "SET" komutunu kullanarak değişkene veri atayabiliyorduk. Peki bunu SQL Server 2008' de nasıl yapacağız? Şöyle: "Declare @Ulke_Sayisi INT = (SELECT Count(*) FROM [dbo].[Ulkeler])
04.02.2008 14:10:54  

 
 Query Editor ile SSMS-Object Explorer' ın yakın dostluğu
SQL Server Management Studio' da, Object Explorer' daki öğeleri fare ile tutup Query Editor' deki metinlerinize ekleyebileceğinizi biliyor muydunuz? Meselâ SSMS' i açın ve bir veritabanı içerisindeki bir tablonun altında bulunan "Columns" öğesini fare ile tutun ve Query Editor penceresine taşıyıp ne kadar kullanışlı olabileceğini kendiniz görün!
31.01.2008 20:07:30  

 
 SQL Server Management Studio' nun dosya adı...
SQL Server 2005' te SSMS' in dosya adı "SqlWb.exe" idi, SQL Server 2008' in CTP sürümlerinde görüyoruz ki SSMS' in dosya adı "ssms.exe" olmuş. Bilginize!
18.01.2008 18:06:58  

 
 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\Common7\IDE\SqlWb.exe" -nosplash
02.12.2007 12:13:32  














 
Bu sitenin tüm haklarý, Ekrem Önsoy' a aittir.