MS SQL Server etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
MS SQL Server etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

2011-07-02

SQL Server'da Görevler Ayrılığı (Separation of Duties)

Güvenlik giderek kurumlar için daha da çok önem kazanmaktadır. Bu doğrultuda kurumlar önemli verilerini korumak amacıyla kullanıcı ve yöneticilerin yetkilerini minimum seviyeye çekmek istemektedirler.

En basit ifadesiyle görevler ayrılığı ilkesi kurum için tehditleri ve güvenlik açıklarını önlemek üzere kullanıcıların yetkilerini düzenlemektir. Görevler ayrılığı ilkesini benimseyen kurumlar, tüm yetkilere sahip SQL Server DBA kullanıcılarının yetkilerini de düzenlemeye ihtiyaç duymaktadırlar.

SQL Server 2008 R2 yasal uyumluluk ve güvenlik uygulamalarını gerçekleştirmek üzere gerekli olan tüm araçları bünyesinde sunmaktadır. Görevler Ayrılığı ilkesinin gereksinimlerini uygulayarak verilerin korunmasını sağlarken, DBA kullanıcılarının da verimli çalışmaya devam edebilmeleri için neler yapılması gerektiğine dair sunduğumuz makale için: SQL Server Seperation of Duties

Kaynak: Microsoft TechNet

2011-05-02

Microsoft SQL Server 2005/2008 Failover Clustering Workshop

Batuhan Yıldız'ın konuşmacı olacak katılacağı Microsoft SQL Server 2005/2008 Failover Clustering Workshop'unda olacağım.

Level: Up to 300
Tarih: 3-5 Mayıs 2011
Yer: Bellevue Residence, Aydın Sokak. No:7 Levent, 34340

Gündem:
Module 1: SQL Server High Availability Solutions
Module 2: Clustering Windows Server 2008 R2
Module 3: Configuring the Distributed Transaction Coordinator (MSDTC)
Module 4: Planning to Cluster SQL Server 2008
Module 5: Implementing a SQL Server 2008 Failover Cluster
Module 6: Rolling Upgrades and Updates to SQL Server 2008
Module 7: Maintaining and Troubleshooting a Clustered Instance of SQL Server 2008

2011-04-03

Tablodaki Bir Kayıtın Kapladığı Yeri Bulma

Herhangi bir tablonuzdaki bir kayıtın(row) ne kadar yer kapladığını(size) merak ediyorsanız aşağıdaki SQL ile bunu alabilirsiniz:

select sum(max_length) As ColumnSize
from sys.columns sc
where object_id=object_id('Musteri')


Bir veritabanındaki tüm tabloların row size'ını ise aşağıdaki SQL ile alabilirsiniz:

select object_name(object_id),
sum(max_length) As ColumnSize
from sys.columns sc
group by object_name(object_id)

2011-03-27

Fragmente Indeksleri Rebuild Etme

İndekslerin fragmente olması istenmeyen bir durumdur. Fragmente olan indexlerin belirli periyotlarda rebuild/reorganize edilmesi gerekir.

Veritabanızda fragmente oranı %30 un üzerinde üzerinde olan indeksleri bulup rebuild eden T-SQL kod aşağıdaki gibidir:

declare @SQLstmt varchar(max)

set @SQLstmt =''
select @SQLstmt =@SQLstmt + 'alter index ' + i.name + ' on ' + object_name(s.object_id ) + ' rebuild with(online=on);--pagecount:' + cast(s.page_count as varchar(16)) + '
'
from sys.dm_db_index_physical_stats(db_id(db_name()),null,null,null,null) s
inner join sys.indexes i on s.object_id=i.object_id and s.index_id=i.index_id
where s.avg_fragmentation_in_percent>30
and s.index_id>0
order by s.page_count

exec(@SQLstmt )

Dilerseniz aynı işlemi dinamik tek bir SQL cümlesi yerine cursor ile de halledebilirsiz.

2011-03-24

SQL Server Profiler Template Dosyaları Nerde Tutulur?

SQL Server Profiler uygulamasında oluşturmuş olduğumuz template'ler diskinizin belli bir lokasyonunda tutulur. Bu lokasyonlar SQL Server 2005 ve SQL Server 2008 için aşağıdaki gibidir:


SQL Server Profiler 2008 için template dizini:
C:\Documents and Settings\KullaniciKodunuz\Application Data\Microsoft\SQL Profiler\10.0\Templates\Microsoft SQL Server\100


SQL Server Profiler 2005 için template dizini:
C:\Documents and Settings\KullaniciKodunuz\Application Data\Microsoft\SQL Profiler\9.0\Templates\Microsoft SQL Server\90

2011-03-23

İş Kritik Uygulamalar için Performans Semineri

Tarih: 28 Mart 2011 Pazartesi
Saat : 09.00 - 16.15
Yer  : Microsoft İstanbul Ofisi

İş kritik uygulamalar konusunda çalışan veri platformu mimarları için düzenlenecek seminer serisinin ilki “İş Kritik Uygulamalar için Performans” konusuyla gerçekleştirilecek.

İş kritik uygulamaların performansı kurumların arzu ettikleri hizmet seviyelerini müşteri ve iş ortaklarına sağlayabilmeleri açısından yüksek önem taşır. Bu seminerde özellikle iş kritik uygulamalarınızın üzerinde çalıştığı SQL Server veritabanlarının izlenmesi ve performans iyileştirmesi konularına yer verilecektir.

Seminer Microsoft SQL Server geliştirme ekibinde de çalışmış, konusunda 15 yılı aşkın tecrübesi bulunan Ramesh Meyyappan tarafından İngilizce verilecektir.

Gündem

09.00 - 09:30 Karşılama ve İkram
09.30 - 10.45 Monitoring and Tuning CPU, memory & Disk utilization to reduce Total Cost of Ownership (TCO) - Part I
10.45 - 11.00 Kahve Arası
11.00 - 12.15 Monitoring and Tuning CPU, memory & Disk utilization to reduce Total Cost of Ownership (TCO) - Part II
12.15 - 13.00 Öğle Yemeği
13.00 - 14.15 Monitoring and Tuning Query Execution and Locking Part I
14.15 - 14.45 Ara
14.45 - 16.00 Monitoring and Tuning Query Execution and Locking - Part II
16.00 - 16.15 Soru ve Cevap

2011-03-14

SQL Azure'da Limitler ve Kısıtlamalar









SQL Azure'da aşağıdaki limit ve kısıtlamalar söz konusu olup; SQL Azure geçmeyi düşünenlerin bu limit ve kısıtlamaları göz ardı etmemesi gerekir:


  1. SQL Azure veritabanlarına OLEDB ile erişim desteklenmiyor.
  2. Sadece TCP/IP protokolu ile erişim destekleniyor, diğer protokoller ile erişim desteklenmiyor.
  3. SQL Azure ile SQL Server browser desteklenmiyor.
  4. SQL Azure ile Attach ve Restore komutları desteklenmiyor.
  5. SQL Server Agent yada joblar desteklenmiyor.
  6. SQL Azure'da Distributed Transaction desteklenmiyor.
  7. Database Collation olarak sadece SQL_LATIN1_GENERAL_CP1_CI_AS ı destekliyor; diğer collation lar desteklenmiyor. Diğer collation'ları tablo alanı bazında destekliyor.
  8. SQL Azure da oluşturduğunuz her tabloda clustered index'in olması zorunlu(SQL Azure heap ı desteklemiyor) yoksa insert'leriniz hata alır.
  9. Her SQL Azure Server maksimum 150 veritabanını destekliyor(master veritabanı + 149 kullanıcı veritabanı). 
  10. SQL Azure için her bir veritabanı için maximum size 50 GB ile sınırlı.
  11. SQL Azure'da Windows Authentication desteklenmiyor.
  12. SQL Azure'da veritabanları arası geçiş yapan USE komutu kullanılamıyor.
  13. SQL Azure'da Transactional Replication desteklenmiyor.
  14. SQL Azure'da Database Mirroring desteklenmiyor.
  15. SQL Azure'da Log Shipping desteklenmiyor
  16. Azure platformunda SSIS servisi kullanılamıyor.
  17. SQL Azure'da sadece Management Studio'nun  SQL Server 2008 R2 sürümü ile erişilebiliniyor. Daha eski versiyonlardaki Management Studio'lar ile erişemiyorsunuz.
  18. SQL Azure, SQL Server 2008 deki tüm T-SQL leri desteklemiyor. Desteklenmeyen T-SQL'lere http://msdn.microsoft.com/en-us/library/ee336253.aspx  adresinden ulaşabilirsiniz. 
Kaynaklar:
  1. Comparing SQL Server with SQL Azure
  2. Guidelines and Limitations in SQL Azure

2011-03-08

SQL Server Üzerinde Denetim ve Güvenlik Semineri

17 Mart 2011 Perşembe günü 10:00-11:00 saatleri arasında gerçekleştirilecek web seminerinde SQL Server üzerinde, özellikle veritabanı yöneticileri için denetim ve güvenlik yöntemlerinin ele alınacağı, SQL Server’in güvenlik mekanizması, loglama mekanizması, server ve veritabanı denetimi yöntemlerinin ayrıntılı bir biçimde incelenecektir. Osman ÇOKAKOĞLU'nun sunacağı web seminerine katılmak isteyenler Microsoft'un Canlı Web Yayınları Etkinlikleri sayfasından kayıt olabilirler.

2011-03-05

Tempdb Veritabanını Taşıma

Moving Tempdb
Sistem veritabanlarından tempdb veritabanı SQL Server servisi her start olduğunda tekrardan oluşur. Tempdb'yi taşımak için:
  1. tempdb veritabanının data ve log dosyalarının lokasyonunu değiştirmek gerekir
  2. SQL Server servisinin restart edilmesi gerekir.
Örneğin:  tempdb veritabanını D:\MSSQL dizinine taşımak için aşağıdaki SQL kodlarını çalıştırıp, SQL Server servisini restart etmek gerekir:

use master
go
alter database tempdb modify file (name = tempdev, filename = 'D:\MSSQL\tempdb.mdf')
go
alter database tempdb modify file (name = templog, filename = 'D:\MSSQL\templog.ldf')
go

2011-03-03

Password'u Boş Olan SQL Kullanıcılarını Bulma

SQL Server 2005/2008 de password u boş olan SQL kullanıcılarını aşağıdaki SQL ile bulabilirsiniz:

select name
from sys.sql_logins
where pwdcompare('', password_hash) = 1


Yine aynı şekilde şifresi abc olan SQL kullanıcıların listesini aşağıdaki SQL ile alabilirsiniz:

declare @password sysname
set @password ='abc'
select name
from sys.sql_logins
where pwdcompare(@password, password_hash) = 1

@password değişkenini zayıf şifreleri içerecek şekilde genişletirseniz sisteminizde zayıf/tamin edilebilir şifreleri olan SQL kullanıcıların listesini alıp bu şifrelerin güçlü şifreler ile değiştirilmesini sağlayabilirsiniz.

Güvenlik için veritabanı sunucularınızda bulunan tüm SQL kullanıcılarınız için password policy uygulamayı unutmayın!

2011-02-27

Sistem View'lerinin Kodunu Alma

SQL Server'da bulunan sistem view'lerinin kodlarını OBJECT_DEFINITION() function'ı ile alabilirsiniz. Örneğin sys.databases system view ının içeriğini aşağıdaki kod ile alabilirsiniz:

SELECT OBJECT_DEFINITION(OBJECT_ID('sys.databases'));

2011-02-20

Tüm Kullanıcı Veritabanlarında Kullanıcı Oluşturma

Benim gibi var olan bir logini tüm kullanıcı veritabanlarında oluşturma ihtiyacınız olmuşsa aşağıdaki t-sql kod işinize yarayacaktır:

declare @username nvarchar(128)='SQLUser',
@SQLcommand varchar(8000)

set @SQLcommand =
'if db_id(''?'')>4
begin
USE ?
if not exists(select 1 from sys.sysusers where name=''' + @username + ''' ) create user [' + @username + '] for login [' + @username + ']
end
'
exec sp_msforeachdb @SQLcommand

2011-01-26

SQL Server Servisinin Başlangıç Tarihini Bulma

SQL Server servisi her start olduğunda tempdb yeniden oluşturulur. Bu yüzden tempdb veritabanının oluşma tarihi bize SQL Server servisinin başlama tarihini verir. SQL Server servisim ne zamandan beri açık diye merak edenler aşağıdaki sorgu ile cevaplarını bulabilirler:

select create_date
from sys.databases
where name = 'tempdb'

Aynı sonuca dm_os_sys_info DMV'sini kullanarak aşağıdaki kod ile de  ulaşabilirsiniz:

select sqlserver_start_time
from sys.dm_os_sys_info

2010-12-26

SQL Server Authentication Mode

SQL Server iki farklı şekilde bağlantıları kabul eder. Bunlar:

Windows Authentication

Bu modda sadece Windows login'leri ile SQL Server'a erişilebilir. Windows Authentication, Kerberos güvenlik protokolünü kullanır.


Mixed Mode Authentication(mixed)

Bu moddaki bir SQL Server'a hem Windows authentication hem de SQL Server authentication ile erişilebilir.

SQL Server kurulurken default olarak windows authentication mode'da kurulur. SQL Server'ınızı dilerseniz kurulum esnasında mixed mode(Windows and SQL Server Authentication Mode) olarak ayarlayabilirsiniz.

Aşağıdaki dört farklı yöntemde SQL Server'ınızın hangi Authentication Mode'a olduğunu öğrenebilirsiniz:

  • SSMS Kullanarak :

    SQL Server Management Studio  Object Explorer'da , server adının üzerinde sağı tıklayarak, Properties'den  Security sayfasında SQL Server Authentication  modunu öğrenebilirsiniz.
  • ServerProperty ile
    serverproperty() fonksiyona IsIntegratedSecurityOnly parametresini verererek SQL Server'ın Authentication  modunu öğrenebilirsiniz:

    SELECT CASE SERVERPROPERTY('IsIntegratedSecurityOnly')
    WHEN 1 THEN 'Windows Authentication Mode'
    WHEN 0 THEN 'Mixed Mode'
    END as [Authentication Mode]
  • xp_instance_regread Extended Stored Procedure ile
    LoginMode'ı registry'den okuyarak SQL Server'ın Authentication modunu öğrenebilirsiniz:

    DECLARE @AuthenticationMode INT

    EXEC master.dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE',N'Software\Microsoft\MSSQLServer\MSSQLServer', N'LoginMode', @AuthenticationMode OUTPUT

    SELECT CASE @AuthenticationMode
    WHEN 1 THEN 'Windows Authentication Mode'
    WHEN 2 THEN 'Mixed Mode'
    ELSE 'Unknown'
    END as [Authentication Mode]
  • xp_logininfo Extended Stored Procedure ile
    EXEC master.sys.xp_loginconfig 'login mode'

2010-12-24

Tempdb Veritabanı Hakkında

Tempdb veritabanı:
  • SQL Server servisi restart olduğunda tekrardan oluşur.
  • Model veritabanını kullanarak oluşur.
  • Veritabanının recovery modelini daima SIMPLE olarak set edin.
  • Checkpoint yoktur.
  • Backup'ını alamazsınız.
  • Data için sadece bir filegroup olmalı ve logları bir log  dosyasında tutun.

2010-12-21

Unused Tables Since SQL Server Restarted

SQL Server servisinin en son restart edildiği zamandan itibaren kullanılmayan tabloları veren script aşağıdaki gibidir:

select object_schema_name(t.object_id) + '.' + t.name as TableName
from sys.dm_db_index_usage_stats i right outer join
sys.tables t on (t.object_id = i.object_id)
group by object_schema_name(t.object_id) + '.' + t.name
having sum(isnull(i.user_seeks,0)+isnull(i.system_seeks,0)+isnull(i.user_scans,0)+ isnull(i.system_scans,0)
+ isnull(i.user_lookups,0) + isnull(i.system_lookups,0)+ isnull(i.user_updates,0)+ isnull(i.system_updates,0))=0
order by object_schema_name(t.object_id) + '.' + t.name

2010-12-18

MS SQL Server 2005 SP4 RTM Yayınlandı

Microsoft SQL Server 2005 SP4 yayınladı. SQL Server 2005 Service Pack 4'i http://www.microsoft.com/downloads/en/details.aspx?FamilyID=b953e84f-9307-405e-bceb-47bd345baece&displaylang=en adresinden indirebilirsiniz.

SQL Server 2005 Service Pack 4'te giderilen hataların listesini http://support.microsoft.com/kb/2463332 adresinden detaylı olarak inceleyebilirsiniz.

Microsoft, SQL Server 2005 SP4 ile güzel bir versiyon numarası seçmiş; versiyon numarası 9.00.5000.00 oluyor.

2010-11-30

Veritabanınızın Log Dosyasını Küçültme

SIMPLE recovery modda olan veritabanınızın aşırı şişen log dosyasını küçültmek için  aşağıdaki adımları uygulayabilirsiniz:
  1. Veritabanı FULL recovery moda alınır,
  2. Veritabanının FULL backup'ı alınır,
  3. Veritabanın Transaction Log Backup'ı alınır,
  4. Veritabanın Log dosyası shrink edilir.
Not: Transaction Log Backup'ı alan bir maintenance plan tanımlarsanız log dosyanız çok fazla büyümez. Ayrıca aldığınız bu transaction log backuplarınızı belirli periyotlarda silen bir maintenance plan ile diskinizin dolmasını engelleyebilirsiniz.

2010-11-11

Index Fragmentation

Bir tablo yada view'daki index ve data fragmantasyonunu sys.dm_db_index_physical_stats DMV'si ile alabilirsiniz.

Örnek-1: Test adlı veritabanımızdaki musteri adlı tablomuzun fragmantasyonu aşağıdaki SQL kodu ile alabiliriz:

select * from sys.dm_db_index_physical_stats(db_id('Test'),object_id('musteri'),null,null,null)

Örnek-2: Test adlı veritabanımızdaki tüm tablo ve view'lerimizin fragmantasyonu aşağıdaki SQL kodu ile alabiliriz:

select * from sys.dm_db_index_physical_stats(db_id('Test'),null,null,null,null)

Örnek-3: Tüm veritabanlarımızdaki tüm tablo ve view'lerimizin fragmantasyonu aşağıdaki SQL kodu ile alabiliriz:

select * from sys.dm_db_index_physical_stats(null,null,,null,null,null)

Fragmente oranı %30 dan büyük olan indexlerinizi rebuild etmenizi; %10-%30 arasında olan indexlerinizi ise reorganize etmenizi tavsiye ederim.

2010-11-04

Tüm Kullanici Veritabanlarının Boyutlarını Almak

Bir instance üzerinde bulunan tüm kullanici veritabanlarının boyutlarını aşağıdaki SQL kodu ile alabilirsiniz:

select db_name(database_id) DatabaseName,sum(size)*8/1024 DatabaseSizeMB
from sys.master_files
where database_id>4
group by db_name(database_id)

.::YASAL UYARI::.

©2004-2024 Mehmet GÜZEL, www.mehmetguzel.net

Site içeriği kaynak gösterilmek koşuluyla yayınlanabilir. Yazılan yazı ve yorumlar sadece yazı ve yorum sahiplerini bağlar.