Kayıtlar

SQL Server Database Snapshot

Merhabalar , Database Snapshot özellikleri SQL 2005 'den itibaren bizlerin kullanımına sunulan çok sevdiğim özelliklerden birisi. Kısaca DataBase Snapshot , Veri tabanın o anda bir resmini çekmeye benzer. Veri tabanın Snapshot oluşturduğu andan itibaren elimizde read-only bir kopyasını elde etmiş oluruz. Temel amacı ise Asıl veri tabanımızda ,snapshot oluşturulduğu andan sonra, değiştirilmiş kayıtların orjinal hallerini saklayıp gerektiğinde düzeltmektir. İsterseniz örnek bir senaryo ile daha iyi anlıyalım, daha sonra da olumlu ve olumsuz yanlarından bahsedelim. CREATE DATABASE  CUSTOMER_SS_CASE1  ON  ( NAME  = CUSTOMER, FILENAME =  'C:\SQLDATA\CUSTOMER_SS_CASE1.SS' ) AS  SNAPSHOT OF CUSTOMER; Senaryomuz'da Customer veritabanın da önemli değişiklik planlıyoruz. 3 farklı case den oluşan değişikliğin ilk adımında belirtilen dosya altına Veritabanımızın o andaki snapshot'nı aldık. Şu andan itibaren yapılan tüm update,delete,insert işlemleri öncesinde ,orjinal halleri s

Lock Request time out period exceeded Error 1222

  Bu hatayı, SSMS açmaya çalışırken (Tabloları,sp,view vs. görüntülemek adına) zaman zaman karşımıza çıkabilir. Sebebi ise o anda sistemi kilitleyen ciddi olabilecek bir işin çalışması yada açık transaction bırakıp lock koyması olabilir.    Bunun için şu dmv ler ile neler oluyor bakabiliriz. select   distinct   object_name ( a . rsc_objid ), a . req_spid , b . loginame from   sys . syslockinfo  a   ( nolock )   join   sys . sysprocesses  b   ( nolock )   on  a . req_spid = b . spid where   object_name ( a . rsc_objid )   is   not   null    Bu query hangi tablo lock almış, proccesID ve LoginName, neyi tutuyor bunu görebiliriz.Daha sonra doğru proccesi bulup kill edersek sorunu çözmüş oluruz.  

SQL Server – Management Studio üzerindeki Veritabanı Listesinin Düzenlenmesi

Resim
Merhaba, SQL Server’da bir kullanıcı oluşturdunuz. Bu Kullanıcı ise Server’da ki bazı veritabanlarında yetkili bazılarında ise yetkisi bulunmuyor. Kullanıcı SQL Server Management Studio’dan Login olduğunda yetkisi olmayan veritabanlarınıda görüntülüyor olacaklar. Peki bunları düzenleyip sadece yetkisi olduğu veritabanlarının gösterilmesini nasıl sağlayabiliriz ? Örnek ile detaylandıracak olursak ; Hosting Firması işletiyorsunuz ve Müşterilerinize SQL Server Database tanımlamaları için yetki veriyorsunuz.  Aynı zamanda farklı bir müşterinizde aynı servera kullanıyorlar ve onlarında sizlerin izin verdiği yetkiler dahilinde veritabanı oluşturabiliyorlar ve birbirlerinin oluşturdukları veritabanlarını görüntüleyebiliyorlar. Peki Neden SQL Server da login olabilen bütün kullanıcılar object explorer üzerinde bütün databaseleri görüntülerler ? Cevabı aslında basit ; SQL Server her kullanıcımızın üye olduğu public adında bir rol vardır ve varsayılan olarak bu role VIEW ANY DATABASE yetk

Kullanıcılara Ms Sql Server Agent Jobs Yetkileri Dağıtma

Ms-Sql Server yönetimi yaparken tabi ki veritabanlarımız olacak. Bu veritabanlarına ait kullanıcılarımız olacak. Bu kullanıcılar da tabi ki server üzerinde yetkisiz olacaklar (genellikle). Veritabanlarının üzerinde belirli zamanlarda yapılması gereken işleri olacak. Bu işler agentla yapılacak. Tabi ki bu job’ları kullanma yetkisi istenecek. Server üzerinde sysadmin vermeden hangi hakları sql user’lara sağlarsak bu istekleri karşılayabileceğiz? Ms-Sql Server üzerinde Agent’ın msdb üzerinde verdiğimiz üç çeşit hak ile Agent Security’yi düzenleyebiliyoruz. Bu haklar şöyle: SQLAgentUserRole SQLAgentReaderRole SQLAgentOperatorRole Kısaca bu roller, User kendi joblarını oluşturma, silebilme, çalıştırabilme, düzenleme hakkıdır. Reader multiserver üzerinde bu haklara sahip olmasıdır. Operator server üzerindeki diğer jobları da yönetebilmesidir. ( Ayrıntılı bilgi için ) Bu hakları vermek için Security sekmesi açılır Login genişletilir Yetki vermek istediğimiz kullanıcı sağ tıklanır

Netstat ile ağ analizi

Resim
Bu yazımda windows ile öntanımlı gelen bir ağ izleme yazılımına değineceğim. Aslında windows ile yerleşik gelen ve başka üçüncü bir yazılım kullanmadan işlerimizi kolayca halledebileceğimiz birçok yerleşik yazılım bulunmakta. Genelde komut satırından kullanılıyor olsalar da, bu bize ciddi hız ve kolaylık kazandırıyor. Bahsettiğim bu etkileyici yazılımlardan biri de netstat Bilindiği gibi; TCP/IP iletişim tarzında iletişim, iki hostun birbiriyle paket alışverisi yapma prensibine dayanır. Yukarıda göreceğiniz üzere; netstat -an  komutuyla bilgisayarımızın bağlantıda olduğu tüm port ve ip’leri gözlemleyebiliyoruz. State (durum) kısmında bağlantıyla ilgili bilgileri de ayrıca görebiliyoruz. Listening:  Bu durum diğer hosttan bağlantı beklendiğini göstermektedir. Established :  Bağlantının sağlandığını gösterir. Close_wait :  bağlantının kapatılmasının beklendiğini göstermektedir. Time_wait:  Bağlantı sonlandırıldı fakat herhangi bir gecikmiş uygun paket olabileceği öngörüsüyle bağlan

Bir uygulamayı servis olarak çalıştırmak

Resim
Nedendir bilinmez ama bazı yazılımlar sadece uygulama tabanlı çalışır. Örneğin sunucu sistemleri üzerine kurduğunuz istemci/sunucu mantığı ile çalışan bir uygulama siz uzak masaüstünden çıkış yaptığınızda kapanacaktır ve istemciler sunucuyu bulamayacaklardır. Bir çok kere yaşadığım bu sıkıntının çözümünü paylaşmak isterim. Uygulama tabanlı çalıştırma : Bilgisayarlarımızda kullandığımız programların bir çoğu bu yolla çalışır.  Bir uygulamayı başlattığımızda o uygulama ile ilgili tüm işlemler çalışmaya başlar  ve kapama çubuğuna tıkladığımızda o uygulama ile ilgili çalışan tüm işlemler sona erer. Servis tabanlı çalıştırma : Bu yolla çalıştırdığımız uygulamaları kapama çubuğundan kapatmış olsak bile arka planda çalışmaya devam eder. Bu işlemleri görev yöneticisinden de ( Task Manager ) kontrol edebilirsiniz. Yazının konusuna dönecek olursak ; Uygulama tabanlı çalışan bir yazılımı nasıl servis tabanlı çalıştırırız ? İhtiyaç duyacağımız araçlar: Instrsrv.exe :  Servis kurar ve si

MSSql & WSUS: Database cannot be opened. Marked as suspected

Hi, the WSUS DB (MSSQL Express 2005) of a customer won’t start after a hardware failure and bluescreen. Here are the steps which recovers the database back in an usable state. The SQL Server Instance logs errors like this "Could not redo log record (183366:6166:54), for transaction ID (0:117029942), on page (1:657511), database 'SUSDB' (database ID 5). Page: LSN = (183267:2976:260), type = 2. Log: OpCode = 2, context 3, PrevPageLSN: (183366:1717:287). Restore from a backup of the database, or repair the database." in  “C:\Windows\SYSMSI\SSEE\MSSQL.2005\MSSQL\LOG\ERRORLOG”  and the database is down. First connect to the DB Instance using a named pipe c:\> sqlcmd -S np:\\.\pipe\MSSQL$MICROSOFT##SSEE\sql\query and see state of the Database. Replace SUSDB with the Databasename of your DB. Try to repair the Database. The repair attempt fails… DBCC CHECKDB ('SUSDB') WITH NO_INFOMSGS, ALL_ERRORMSGS; go Error MEssage: Database ‘SUSDB’ cannot be opened