Serdar BAYRAK

Yönetici

SQL Server Database Administrator

  • Toplam 46 Yazı
  • Toplam 4 Yorum

Full-Text Search Part-II

SQL Server 4 ay önce

Full-Text Index Fragmentation and Crawl Full-Text Index kullanırken kontrol edilmesi gereken 2 bilgi vardır. Bunlardan biri fragmentation diğeri ise Crawl bilgisi. Fragmentation Bilgisine aşağıdaki scriptinden ulaşılabilir; WITH FragmentationDetails AS ( SELECT table_id, COUNT(*) AS FragmentsCount, CONVERT(DECIMAL(9,2), SUM(data_size/(1024.*1024.))) AS IndexSizeMb, CONVERT(DECIMAL(9,2), MAX(data_size/(1024.*1024.))) AS largest_fragment_mb FROM sys.fulltext_index_fragments GROUP BY table_id ) SELECT DB_NAME() AS DatabaseName, ftc.fulltext_catalog_id AS CatalogId, ftc.[name] AS CatalogName, fti.change_tracking_state AS ChangeTrackingState, fti.object_id AS BaseObjectId, QUOTENAME(OBJECT_SCHEMA_NAME(fti.object_id)) + '.' + QUOTENAME(OBJECT_NAME(fti.object_id)) AS BaseObjectName, f.IndexSizeMb AS IndexSizeMb, f.FragmentsCount AS FragmentsCount, f.largest_fragment_mb AS IndexLargestFragmentMb, f.IndexSizeMb – f.largest_fragment_mb AS IndexFragmentationSpaceMb, CASE WHEN f.IndexSizeMb = 0 THEN 0 ELSE 100.0 * (f.IndexSizeMb – f.largest_fragment_mb) / f.IndexSizeMb END AS IndexFragmentationPct FROM sys.fulltext_catalogs ftc JOIN sys.fulltext_indexes fti ON fti.fulltext_catalog_id = ftc.fulltext_catalog_id JOIN FragmentationDetails f ON f.table_id = fti.object_id ; Full-text crawl olduğunda veri akışı sağlanmaz ve aramalarda veriyi bulamayabilirsiniz. Aramanın devam etmesi için aşağıdaki script çalıştırılmalı. ALTER FULLTEXT INDEX ON CatalogName SET CHANGE_TRACKING MANUAL; ALTER FULLTEXT INDEX […]

Cannot Drop the Database ‘xxxDB’ Because It Is Being Used for Replication

SQL Server 4 ay önce

Bu Yazıda Transactional Replcation kullanılan database’in başka bir ortamda StandBy/Read-Only Mod’da Restore ettikten sonra drop edilmek istendiğinde Replikasyondan kaynaklı kaldırılamamasının çözümünü yapacağız. Bu işlemi yaparken profesyonel danışmandan hizmet alınarak kontrollü bir biçimde yapılması gerekmektedir. Aşağıdaki işlemler hata almadan önce sırasıyla yapılan adımları içermektedir. Görsel 1: Database’in drop edilmesi Görsel 2: Database’in script ile drop edilmesi sonrası karşılaşılan hata Database Drop etmek istediğimizde ‘Cannot Drop the Database ‘YourDBName’ Because It Is Being Used for Replication’ hatası ile karşılaşıyoruz.   Görsel 3: Drop edilmek istenen database’in sahip olduğu Publication’un silinmesi Görsel 4: Publication’ı kaldırma sonra alınan hata   Yukarıda alınan hata StandBy/Read-only mod da çalışan Database üzerinden herhangi bir write işlemi yapılamayacağından kaldırma işleminde yukarıdaki veya başka bir yazma operasyonunda benzer hatalar ile karşılaşılacaktır.   Çözüm: StandBy/Read-Only modda olan Database norecovery moda veya recovery moda alınarak açıldıktan sonra kaldırılabilir.

Transactional Replication’da Publication’dan Subscription kaldırma

SQL Server 4 ay önce

Bu başlık altında SQL Server Transaction Replication’da var olan Publication altından Subscription çıkarma adımlarını göreceğiz. Bu adımı yapılma sebepleri arasında subsription olarak kullanılan sunucunun artık hizmet vermemesinden kaynaklı olarak veyahut başka bir sebepten dolayı bu sunucunun Transaction Replication’dan çıkarma ihtiyacı sonucunda subscription’dan çıkarma adımlarına bakacağız. Bu işlemi yapmadan önce kesinlikle uzmanından profesyonel destek alınız. Sistemin yoğun olduğu saatlerde bu işlemlerşi yapmayınız. 1.Publication (Sistemde kullanılan Publication 3 adet Subscription’a sahip).Aşağıdaki bilgiye Publication olan Server üzerinden görebilirsiniz. kab veri tabanı bizim replication olmasını istediğimiz database. Görsel 1: Publication   2.Distribution (Buradaki joblar sayesinde dataların Snapshot’u alınarak Subscription’a aktarılır.) Görsel 2: Distribution Jobs     3.Subscription (Transactional Replication’da dataların aktarıldığı ortam.) Görsel 3: Replication Sunucusunda Database İşlem olarak kab publication içinde varolan 3 adet subscription’lardan 1 tanesini çıkaracağız. İlk adımımız olan ve kaldırmak istediğimiz subscription üzerine gelip sağ click ve delete diyoruz. Görsel 4: Subscription Delete   İkinci adımda önümüze açılan pop-up ekranından […]

Transactional Replication’da Publication’a Yeni Subscription Ekleme

SQL Server 5 ay önce

Bu yazımızda, SQL Server Transactional Replication ile beslenen databaselerin nasıl oluştuğunu, varolan publications’a, subscription eklemenin adım adım nasıl yapıldığını, karşımıza çıkan hataları ve monitoring etmeyi öğreneceğiz. SQL Server Transactional Replication, ldf içinden logları okuyarak çalıştığı için bu işlemleri yapmadan önce bu konuda çok dikatli olunmalı ve profesyonel destek alınmalıdır. Transactional Replication Kurulumu için önceden kaleme aldığımız Adım Adım Transactional Replication Kurulumu adlı makaleyi okuyabilirsiniz. Bizler bu işlemleri yaparken AlwaysOn mimarisine sahip 2 node’lu ortama, 3. Node eklediğimizde yapılması gereken replikasyon adımlarını inceleyeceğiz.   1.Adım: Publication oluşturma (Bu adım bizde daha önceden var olduğu için bu adımı geçiyoruz.) Görsel 1: SQL Server Transaction Publication bilgisi   2.Adım: Varolan Publication’a, yeni Subscription ekleme seçeneği seçilerek Next diyoruz. Görsel 2: Yeni Subscription Ekleme seçeneği seçilir. 3.Adım: Hangi Database ve hangi Publication’a Subscription eklenecek ise o Database altındaki publication seçilir. Publisher bilgisi AlwaysOn sistemlerinde primary’den yapılması gerekir. Bu yüzden Publisher bilgisini seçerken dikkat edilmelidir. […]

Silinen veya Düşen Availability Group’u (AG) Yeniden Aynı İsim ile Ekleme

SQL Server 5 ay önce

Bu başlıkta, AlwaysOn mimarisinde yönetilen SQL Server’larda Availability Group’un silinmesi veya Secondary Makine’den kaldırılması sonucu ortadan kalkması ve Database’lerin Restoring Mode’a geçmesi durumunun çözümü üzerine konuşacağız. Bu durum genellikle kriz ortamı yaratmakta ve yanlış işlemler sonrası daha büyük felaketlere sebebiyet vermektedir. Aşağıdaki adımları izlerken dikkatli davranmanızı ve uzmanlardan yardım almanızı tavsiye ederiz. Bu işlemi yapmadan daha önce bu bilgilerin ekran görüntüsünü ve bilgisini bir yere lütfen not ediniz.   Görsel 1: test_ag remove edeceğimiz Availability Group (AG) Görsel 2: Remove Edilen Availability Group (AG)   Görsel 3: test_ag SSMS altında Availability Group (AG)’larda görünmüyor.   select name from sys.availability_groups scripti ile AG’nin olup olmadığını kontrol edebilir siniz. Görsel 4: 1.adım : test_ag eski ismi aynı isimde Availability Group (AG) altında yeni AG oluşturma   Görsel 5: 2.Adım: test_ag eski ismi aynı isimde Availability Group (AG) altında yeni AG oluşturma Görsel 6: 3.Adım: test_ag eski ismi aynı isimde Availability Group (AG) […]

Error Message 19405

SQL Server 5 ay önce

Error 19405: SQL Server AlwaysOn Replica Eklerken Alınan Hata Bu yazıda SQL Server AlwaysOn sisteminde yer alan Node’lar birini Eklerken karşılaştığımız hatanın çözümüne ilişkin konuşacağız. Hata: Msg 19405, Level 16, State 17, Line 49 Failed to create, join or add replica to availability group ‘blabla_AG’, because node ‘’BLABLATEST1’ is a possible owner for both replica ‘BLABLATEST1\TEST’ and ‘BLABLA\TESTSQL’. If one replica is failover cluster instance, remove the overlapped node from its possible owners and try again. Bu problemle karşılaştığımız ortamda 2 Node Failover Cluster Instance 1 Node ise Always On Mimarisinde çalışmakadır. Toplamda Failover Cluster Manager içeerisinde 3 adet Node bulunmaktadır. Genelde bu hata yukarıda bahsi geçen kullanımlarda daha çok karşılaşılmaktadır. AlwaysOn altında çalışan databaseler ya 1. Makine’de Primary 3. Makine’de Secondary. Ya 2.Makine’de Primary 3. Makine’de Secondary ya da 3.Makine’de Primary diğer 2 Makine’den birinde Secondary olarak çalışmaktadır. 1.Makine’de Primary olan database’in replikasına 3.makineyi eklemek isterken yukarıdaki hata ile […]

Always On Mimarisinde Restore Etmeden SQL Server Kurulumu

SQL Server 5 ay önce

Bu yazımızda AlwaysOn Mimarisinde olan 2 sunucudan secondary makine üzerinde olan database’leri yeniden restore etmeden Windows Format sonrası tekrar AlwayOn’a bağlarken yapılması gereken senaryoları adım adım işleyeceğiz.   Adım: Sunucu içinde yer alan tüm Cluster Bilgileri Alınır (Ekran Görüntüleri ile Roles ve Nodes bilgileri dâhil). Varsa Witness Share File veya Disk Quarum bilgileri alınır. Buradaki amaç herhangi bir beklenmeyen durumda tüm bilgileri tekrar girip cluster’ı ayağa kaldırmak.   Adım: Sunucu içinde kullanmış olduğunuz Disklerin Bilgisini almak. Aşağıdaki komut ile diske ait ihtiyaç olabilecek bilgileri bir csv uzantılı bir dosyaya yazdırabilirsiniz. Bu bilgileri almamızın sebebi, biz sql server yapımızda root and mount disk yapısı kullandığımız için root diske bağlanacak olan mount diskler offline moda çekilecek ve sonrasında tekrar bağlantı yapıldığında doğru diskleri doğru yere bağlamak için bu bilgiler önemlidir.   get-disk | select disknumber,uniqueid,FriendlyName,Size | Sort-Object -Property DiskNumber > H:\DiskInf\Disks_All.csv Adım: Sql Server kullanıcı bilgilerini sp_help_revlogin komutu ile bir notepad.txt dosyası […]

Error 4014 EventId

SQL Server 6 ay önce

Bu yazıda SQL Server Error Loglarına düşen hata ilgili bilgi paylaşımı yapacağız. Event viewer Application logları, SQL Server Error loglarınında bilgisini topladığı için bu hataya ilişkin bilgiye Event viewer üzerinden de görüntülenebilecektir.   Error (Event ID: 4014): A fatal error occurred while reading the input stream from the network. The session will be terminated (input error: 0, output error: 0).   Event Viewer => Windows Logs=> Application; SQL Server Error Logs (Error 4014, Severity:20, State:11);   Bu hatanın loglara düşmesinde birden çok sebep olabilir. Bu hatanın düştüğü durumlarda kullanıcılar bazı sorunlar yaşayabilir. Sistemde yığılmalar meydana gelebilir ve Network Latency’ler meydana gelebilir. Teml sebep olarak bu hatanın düşmesine network katmanından gelen sessionların ISS katmanı ile veri tabanı katmanı arasında paket kayıplarından meydana gelmektedir. Büyük paketler içindeki sessionlar kendisine ait bilgiyi kaybettiğinde drop olabilmektedir. Yaşanabilecek olası sonuçların kök sebeplerine baktığımızda karşımıza bazı problemler çıkmaktadır. Bunlardan bazıları; SQL Server’da Implicit transaction’ların açık olması, […]

Windows RDP ile Giriş Yapan Kullanıcıların IP Bilgisini Öğrenme

Yazılım 6 ay önce

Bu yazımızda, RDP ile bağlantı yapılan kullanıcı ve IP bilgileri nasıl bulunur bilgilerini öğreneceğiz. Özellikle veri tabanlarını yönetmek için çoğu Database Administrator bu yöntemi kullanılır. Bazı kullanıcılar local üzerinden TCP ile bağlantı yaparken bazıları da mRemoteG gibi istediği tüm sunucuları bir arada göreceği arayüz ile RDP yaparak sunuculara erişebilirler. Çoğu zaman büyük ekranda çalışabilme imkanı sunması, third party program hatası yaşanmaması ve sunucu kaynakları takibi için Windows’un kendi Remote Desktop (RDP) kullanmak daha doğru bir tercih olabilir. Remote Connection log bilgileri güvenlik katmanı yöneticileri için büyük öneme sahiptir. Bu log bilgilerine  Search > Event Viewer > Applications and Services Logs > TerminalServices-RemoteConnectionManager > Operational altında tutulmaktadır. Windows’ta bu loglar Default olarak 1MB’a kadar tutulmaktadır. Eğer bu loglar 1MB üzerine çıkarsa Windows en eski logları silip yeni connection loglarını oluşturmaktadır. Aşağıda sizlerle paylaşmış olduğumuz 2 script’ten ilki RDP Yapılan sunucu üzerine hangi IP ve hangi kullanıcı ile yapıldığı bilgisine erişebilirsiniz. İkinci […]

CDC Özelliğini Kullanan Veritabanının Restore Edilme Senaryoları

SQL Server 7 ay önce

Bu yazımızda, cdc özelliğine sahip veri tabanlarının, aynı ve farklı Instance üzerinde aynı ve farklı isimlerle oluşturulması sonrası bu özelliğin, oluşturulan database’lerde aktif olarak devam etmesi ilgili işlemleri uygulayacağız. Aynı zamanda bu konu ile ilgili karşılaşılan hatanın çözümü üzerine konuşacağız. Konu hakkında daha detaylı bilgi almak için CHANGE DATA CAPTURE NEDİR? adlı makaleyi okumanızı tavsiye ederim. — İlk adımımız olan cdc'nin açık olduğu veri tabanlarını buluyoruz. select name,is_cdc_enabled from sys.databases   — CDC_TestDB Database oluşturulur. CREATE DATABASE [CDC_TestDB] ON  PRIMARY ( NAME = N'CDC_TestDB', FILENAME = N'F:\CDC_TestDB.mdf' , SIZE = 5120KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ) LOG ON ( NAME = N'CDC_TestDB_Log', FILENAME = N'F:\CDC_TestDB_log.ldf' , SIZE = 3840KB , MAXSIZE = 2048GB , FILEGROWTH = 10%) GO   use [CDC_TestDB]; go — tablo oluşturma create table Personel ( perID int constraint PK_Personel primary key Identity(1,1) ,perName varchar(20) ) –CDC_TestDB database üzerinde CDC Aktif Etme USE [CDC_TestDB] […]