Posts Tagged ‘Sql Server’
Server ‘SERVERNAME’ is not configured for RPC
Eğer linked server bağlantısı üzerinden karşı tarafta bir procedure çalıştırmaya çalışıyorsanız, butür bir hata almanız mümkündür. Korkmayın
Durum şu : Linked Server bağlantısında bir ayar değişikliği yaptığınızda problem çözülecektir.
Bu ekrandaki RPC karşı tarafta procedure çalıştırmayı, RPC Out’da bu procedure’den veri geri almayı sağlar. Eğer ikisine de ihtiyacınız varsa ikisinide aktif edebilirsiniz.
Yada bu işi kodla yapmak için :
exec sp_serveroption @server=’LSNAME’, @optname=’rpc’, @optvalue=’TRUE’
exec sp_serveroption @server=’LSNAME’, @optname=’rpc out’, @optvalue=’TRUE’
kodlarını kullanabilirsiniz. Tabi bu kodlardaki LSNAME yerine kendi linked server’ınızın adresini girmelisiniz.
SQL Server 2008′de Suspect moduna düşmüş veri tabanları
Merhaba, Sql Server 2008′de suspect moduna düşmüş bir veri tabanı ile karşılaştığımızda yapabileceğimiz bir şey var. Bugün başıma gelen bir olaydan dolayı bu durumu araştırdığımda bu konuda yazılmış güzel bir makaleye rastladım.
http://www.sqlskills.com/blogs/paul/post/CHECKDB-From-Every-Angle-EMERGENCY-mode-repair-the-very-very-last-resort.aspx adresinden bu makaleyi okuyabilirsiniz.
Benim karşılaştığım problemde sharepoint server 2010 evimdeki test sisteminde çalışmayıp veritabanına bağlanamama hatası veriyordu. İlk yaptığım sql server instance larını kontrol etmek oldu. hepsinin çalışır durumda olduğunu gördüm. sonrada sql server management studio vasıtası ile default instance ve SHAREPOINT ismindeki instance’lara bağlandım. SHAREPOINT’te bir terslik görünüyordu. [SharePoint_Config_23343a2b-8f43-45ac-8115-cccaf572c1c5] ismindeki veri tabanı suspect modda görünüyordu. bu da tabii ki problem anlamına geliyordu.
Hemen event viewer a baktım. Windows Logs altındaki application da aradığım hatayı buldum.
The log scan number (271:241:1) passed to log scan in database ‘SharePoint_Config_23343a2b-8f43-45ac-8115-cccaf572c1c5′ is not valid. This error may indicate data corruption or that the log file (.ldf) does not match the data file (.mdf). If this error occurred during replication, re-create the publication. Otherwise, restore from backup if the problem results in a failure during startup.
ve
An error occurred during recovery, preventing the database ‘SharePoint_Config_23343a2b-8f43-45ac-8115-cccaf572c1c5′ (database ID
from restarting. Diagnose the recovery errors and fix them, or restore from a known good backup. If errors are not corrected or expected, contact Technical Support.
demek oluyorki veri tabanımda istenmeyen bir durum oluşmuş ve bunun sonucunda da transaction log dosyası zarar görmüş. Hal böyle oluncada sql server bu hali ile veri tabanını tekrardan attach edemiyor. Zararın oluşma nedeni olarak beklenmedik kapanmalar gösteriliyor.
o halde ne yapacağız :
- Önce ne olur ne olmaz sistemi tekrardan bir zorlayalım. Belki bizi zorlamadan çalışır :
ALTER DATABASE [SharePoint_Config_23343a2b-8f43-45ac-8115-cccaf572c1c5] SET ONLINE;
ama işe yaramadı. Sql log dosyasında hata olduğunu tekrardan söyledi.
- O zaman işe başlayabiliriz :
ALTER DATABASE [SharePoint_Config_23343a2b-8f43-45ac-8115-cccaf572c1c5] SET EMERGENCY;
ile veri tabanımıza kurtarma moduna alırız. Tabi bu tekbaşına yeterli olmayacak, veri tabanını birde single user moduna almamız gerekiyor.
ALTER DATABASE [SharePoint_Config_23343a2b-8f43-45ac-8115-cccaf572c1c5] SET SINGLE_USER;eğer bunu yapmaz isek o zaman az sonra yazacağımız kodda bizi single user moda geçmemiz için uyaran bir sonuç alırız.
- Veri tabanımız kurtarılmayı bekliyor. O zaman daha fazla bekletmeden işimizi yapalım :
DBCC CHECKDB ([SharePoint_Config_23343a2b-8f43-45ac-8115-cccaf572c1c5], REPAIR_ALLOW_DATA_LOSS) WITH NO_INFOMSGS;
ile transaction log’daki problemler onarıldı ve veri tabanımız tekrardan online moda alındı.
- Az önce single user moduna aldığımız veri tabanını tekrardan multi user moduna alıyoruz ki, tam olarak çalışabilir hale gelsin :
ALTER DATABASE [SharePoint_Config_23343a2b-8f43-45ac-8115-cccaf572c1c5] SET MULTI_USER;
Böylece bir veri tabanı kurtarma operasyonunun daha sonuna geldik. Siz sağ, ben selamet… Geçmiş olsun.
SQL Server’da Parçalanmış Tablolar (Partition Table)
Sql Server 2005 versiyonu ile beraber parçalanmış tablo (partition table) yapısını
hayatımıza kattı. Bende bu yazımda parçalanmış tablo nedir incelemeye çalıştım.
- Parçalanmış Tablo (Partition Table) nedir?
Parçalanmış tablo, bir tablonun veri tabanında bulunan birden fazla veri tabanı
dosyasına yayılması işlemine verilen isimdir. - Parçalanmış Tablo ne işe yarar?
Bu veri tabanı dosyaları farklı disk aygıtları üzerinde bulunurlarsa, tablodan
veri okuma performansı artacaktır. Ayrıca çok fazla kullanılmayan geçmiş bilgilerinin
daha az maliyetli diskler üzerinde tutulması sağlanmış, buna rağmen verilerin
aynı tablo içerisinden ulaşılmasına da devam edilebilmiş olacaktır. Bu yöntemin
olmadığı dönemlerde, veriler ya her yıl veya belli aralıklarla, yeni açılan
veri tabanlarına taşınırdı, yada her yıl için ayrı tablo gurupları oluşturulurdu. - Parçalanmış Tablo nasıl oluşturulur?
Tabloları parçalara ayırabilmek için öncelikle bu iş için bir fonksiyon ve birde
şema oluşturmak gerekir. - Parçalama Fonksiyonu nedir?
Sql Server'ın tabloyu nasıl parçalayacağına dair bilgiyi sağlayan fonksiyona
verilen isimdir. Bir parçalama fonksiyonu şöyle yazılabilir:CREATE PARTITION FUNCTION [YearlySalesPF] (DATETIME) AS RANGE RIGHT FOR VALUES ('20070101', '20080101', '20090101', '20100101');Bu fonksiyon sayesinde tablomuz 5 parçaya ayrılacaktır. Range Right dediğimiz
için bu ayrılma işlemi aşağıdaki özelliklerde yapılacaktır.Parça 1 2 3 4 5 Aralık kolon < 01.01.2007 01.01.2007 <= kolon < 01.01.2008 01.01.2008 <= kolon < 01.01.2009 01.01.2009 <= kolon < 01.01.2010 01.01.2010 <= kolon Range left demiş olsaydık, ayrılma işlemi aşağıdaki özelliklerde yapılacaktı.
Parça 1 2 3 4 5 Aralık kolon <= 01.01.2007 01.01.2007 < kolon <= 01.01.2008 01.01.2008 < kolon <= 01.01.2009 01.01.2009 < kolon <= 01.01.2010 01.01.2010 < kolon - Parçalama Şeması Nedir?
Parçalanacak tablonun hangi dosya gruplarına ayrılacağını belirleyen bir tanımlamadır.
Bu sayede her bir parça için bir dosya grubu kullanılabilir. Parçalama şemasını
oluştururken, parçalama fonksiyonu kullanılır.CREATE PARTITION SCHEME [YearlySalesPS] AS PARTITION [YearlySalesPF] TO (Y2006FG, Y2007FG, Y2008FG, Y2009FG, Y2010FG);
- Parçalanmış Tablo Oluşturma
Parçalı tabloyu şu şekilde oluşturabiliriz :CREATE TABLE TOrder ( OrderID INT IDENTITY NOT NULL PRIMARY KEY CLUSTERED, OrderDate DATETIME NOT NULL DEFAULT (GETDATE()), CustomerID INT NOT NULL, EmployeeID INT NOT NULL ) ON YearlySalesPS(OrderDate) GO
- Parçalanmış Tablo Hakkında Bilgi Alma
Parçalanmış tablolarımız ile ilgili bilgi alabilmek için :SELECT * FROM sys.partitions WHERE OBJECT_ID = OBJECT_ID('TOrder')Sorgusunu kullanabiliriz.
Bu konu ile ilgili bilgi alabilmek için: http://www.simple-talk.com/sql/sql-server-2005/partitioned-tables-in-sql-server-2005/ adresine bakabilirsiniz.
