SQL Server'a yeni bir login eklemek için sp_addlogin sp'sini kullanabilirsiniz.Syntaxı aşağıdaki gibidir:
sp_addlogin [ @loginame = ] 'login' [ , [ @passwd = ] 'password' ] [ , [ @defdb = ] 'database' ] [ , [ @deflanguage = ] 'language' ] [ , [ @sid = ] sid ] [ , [ @encryptopt = ] 'encryption_option' ]
Örnek: CETURK database ı için 'Mehmet' kullanıcı adı ve 'GÜZEL' şifreli logini aşağıdaki şekilde oluşturabiliriz:
EXEC sp_addlogin 'Mehmet','GÜZEL', 'CETURK'
Bir Veritabanı Yöneticisinin Notları #SQL #Server #DBA
Stored Procedure etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Stored Procedure etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
2007-01-10
Change Owner
MS SQL veritabanınızda bulunan bir nesnenin(tablo, view, sp .. vs) owner ını değiştirmek için sp_changeobjectowner sp'sini kullanabilirsiniz. Syntax'ı aşağıdaki gibidir:
sp_changeobjectowner [ @objname = ] 'object' , [ @newowner = ] 'owner'
sp_changeobjectowner [ @objname = ] 'object' , [ @newowner = ] 'owner'
2007-01-09
Dosya Kontrolü
Bir dosyanın olup olmadığını sp_MSexists_file ile öğrenebilirsiniz.Kullanımı : sp_MSexists_file TamPath, DosyaAdi şeklindedir.
Örnek: GUZEL.EXE adlı dosyamızın 'C:\MEHMET\ dizini altında olup olmadığını bulan bir SP yazalım:
DECLARE @DonusKodu INT
EXEC @DonusKodu = sp_MSexists_file 'C:\MEHMET\', 'GUZEL.EXE'
IF @DonusKodu = 1
PRINT 'Dosya Var'
ELSE
PRINT 'Dosya Yok'
Örnek: GUZEL.EXE adlı dosyamızın 'C:\MEHMET\ dizini altında olup olmadığını bulan bir SP yazalım:
DECLARE @DonusKodu INT
EXEC @DonusKodu = sp_MSexists_file 'C:\MEHMET\', 'GUZEL.EXE'
IF @DonusKodu = 1
PRINT 'Dosya Var'
ELSE
PRINT 'Dosya Yok'
VT Nesneleri
Veritabanı nesneleri hakkında bilgi almak için sp_help i kullanabilirsiniz. Nesne hakkındaki bu bilgiler nesneyi oluşturan kişi, tipi, oluşturulma tarihi, içerdiği alanların veri tipi, verilerin uzunluğu, NULL olup olamayacağı(table, view vs için) vs hakkında bilgi verir.
EXEC sp_help @NesneAdi şeklinde kullanılır.
Örnek: EXEC sp_help V_ODEME --V_ODEME View'ımız hakkında detaylı bilgi verir.
EXEC sp_help @NesneAdi şeklinde kullanılır.
Örnek: EXEC sp_help V_ODEME --V_ODEME View'ımız hakkında detaylı bilgi verir.
2007-01-04
Tarih Farkı
/*
İki Tarih Arasindaki Farkı gün, saat ve dakika cinsinden bulur.
*/
CREATE PROCEDURE TarihFarki
@start AS SMALLDATETIME,
@end AS SMALLDATETIME
AS
DECLARE @sure BIGINT
DECLARE @dakika INT
DECLARE @saat INT
DECLARE @gun INT
DECLARE @MSG AS VARCHAR(64)
SET @gun=0
SET @sure=DATEDIFF(MINUTE,@start, @end)
IF (@sure>=1440)
BEGIN
SET @gun=CAST((@sure/1440) AS INT)
SET @sure=@sure-@gun*1440
END
SET @dakika=@sure%60
SET @saat=CAST((@sure/60) AS INT)
SET @MSG='İki tarih arasındaki fark ' + CAST(@gun AS VARCHAR(5)) +' gün ' + CAST(@saat AS VARCHAR(5)) + ' saat ' + cast(@dakika AS VARCHAR(5)) + ' dakika'
SELECT @MSG
İki Tarih Arasindaki Farkı gün, saat ve dakika cinsinden bulur.
*/
CREATE PROCEDURE TarihFarki
@start AS SMALLDATETIME,
@end AS SMALLDATETIME
AS
DECLARE @sure BIGINT
DECLARE @dakika INT
DECLARE @saat INT
DECLARE @gun INT
DECLARE @MSG AS VARCHAR(64)
SET @gun=0
SET @sure=DATEDIFF(MINUTE,@start, @end)
IF (@sure>=1440)
BEGIN
SET @gun=CAST((@sure/1440) AS INT)
SET @sure=@sure-@gun*1440
END
SET @dakika=@sure%60
SET @saat=CAST((@sure/60) AS INT)
SET @MSG='İki tarih arasındaki fark ' + CAST(@gun AS VARCHAR(5)) +' gün ' + CAST(@saat AS VARCHAR(5)) + ' saat ' + cast(@dakika AS VARCHAR(5)) + ' dakika'
SELECT @MSG
2006-12-29
Özel MS SQL Server Eğitimi
Uzun bir süredir SQL Eğitimleri veremiyorum. İlgilenenlere duyurulur.
Benden bireysel/grup olarak SQL Server ile ilgili herhangi bir konuda özel eğitim almak isteyenler SQLEgitimi [at] mehmetguzel.com e-mail adresinden bana ulaşabilirler.
MS SQL Server Eğitim Konuları ve Ortalama Süreleri:Benden bireysel/grup olarak SQL Server ile ilgili herhangi bir konuda özel eğitim almak isteyenler SQLEgitimi [at] mehmetguzel.com e-mail adresinden bana ulaşabilirler.
Konular | Ort. Süre |
Temel SQL(DML) | 3 Saat |
Verinin sorgulanması, filtrelenmesi, gruplanması ve özetlenmesi | 2 Saat |
Tablo Tasarımı(DDL) | 2 Saat |
Birden fazla tablo ile işlemler(JOIN) | 2 Saat |
Views(Görünümler) | 2 Saat |
Triggers(Tetikleyiciler) | 3 Saat |
Stored Procedures(Saklı Yordamlar) | 3 Saat |
User Defined Functions(UDF), Jobs | 2 Saat |
Güvenlik ve Yetkilendirme | 3 Saat |
Replication, Veri Transferi(SSIS) | 3 Saat |
Backup, Restore, Attach Database | 3 Saat |
Management Studio, SQL Profiler | 2 Saat |
Toplam | 30 Saat |
SQL eğitimini kişiye özel yada grup şeklinde alabilirsiniz. Grup eğitimlerinde ücretlendirme kişiye özel eğitimlerden farklı olmaktadır. Gruplar aynı işyerinden olabildiği gibi farklı şirketlerde çalışan/öğrenci bireylerden de oluşabilir. Eğitimler genelde kursiyerlerin iş yerlerinde verilir. 5 kişi ve üzeri gruplarda gruba özel sınıf ayarlanabilir.
Eğitmen Hakkında:
1996 yılında liseyi birincilikle bitirdi. Karadeniz Teknik Üniversitesi Bilgisayar Mühendisliği bölümünden 2000 yılında mezun oldu. Sırasıyla Şuredaş, Geosoft, Panasonic Türkiye, Belbim A.Ş. firmalarında Yazılım Geliştirme Uzmanı olarak çalışan Güzel halen özel bir bankada DBA olarak profesyonel iş hayatına devam ediyor. Okul hayatında Pascal, Assembly, C, HTML, Unix kabuk shell, Delphi gibi programlama dillerini kullanan Güzel profesyonel iş hayatında Delphi, Visual Basic, ASP, ASP.NET, C# programlama dilleri ile birlikte Paradox, Access, Oracle, MS SQL Server veritabanlarını kullandı. İş hayatı ile birlikte danışmanlık hizmeti ve MS SQL Server eğitimleri verdi. Bilginin paylaştıkça arttığına inanan Güzel 1996 yılından beri çeşitli platformlarda binlerce kişiyle bilgilerini paylaştı ve paylaşmaya da devam ediyor. 2004 yılından beri gönüllü olarak CETURK(Computer Engineering TURK) Geliştirme Ekibinde bulundu. CETURK Veritabanları, Visual Basic forumlarını uzun süre yönetti. 1 yıl gönüllü olarak CETURK Forum Koordinatörlüğü görevini yürütttü.
Özellikle MS SQL Server konusunda aktif olarak bilgi paylaşımında bulunduğu bazı platformlar:
Eğitim Referansları:
- Hüseyin SEYMAN, Altun İş Bilgisayar ve Yazılım
- Nejat ALTUNBEK, 3G Otomasyon
- Yüksel GÖRGÜÇ, ETA Bilgisayar
- OSM(Otomatik Satış Makineleri) Grubu, Belbim A.Ş. (İki grup halinde eğitim verildi.)
2006-12-25
SP ile Tablo Adı Değiştirme
İstersek tablo adlarımızı SP ile de aşağıdaki gibi değiştirebiliriz:
EXEC SP_RENAME 'EskiTabloAdi', 'YeniTabloAdi'
Bir tablodaki alan adını aşağıdaki gibi değiştirebilirsiniz:
EXEC SP_RENAME 'TabloAdi.AlanAdi', 'YeniAlanAdi','COLUMN'
SP müzün sözdizimi:
SP_RENAME [@objname=] 'object_name' , [@newname=] 'new_name'[, [@objtype=] 'object_type']
EXEC SP_RENAME 'EskiTabloAdi', 'YeniTabloAdi'
Bir tablodaki alan adını aşağıdaki gibi değiştirebilirsiniz:
EXEC SP_RENAME 'TabloAdi.AlanAdi', 'YeniAlanAdi','COLUMN'
SP müzün sözdizimi:
SP_RENAME [@objname=] 'object_name' , [@newname=] 'new_name'[, [@objtype=] 'object_type']
2006-11-28
Yararlı Stored Procedure'lar
Bu dersimizde faydalı olacağını düşündüğüm ve sıkça kullanacağımız bazı Stored Procedure'lerın ne işe yaradığına değineceğim.
sp_databases : Tüm veritabanları ve uzunluklarını gösterir.
sp_MSindexspace :Tablo yada index uzunluğunu gösterir.
sp_columns_rowset : İstenilen tablodaki alan isimlerini, tiplerini, uzunluklarını ve diğer özelliklerini gösterir.
sp_gettypestring : İstenilen tablodaki alan tipini gösterir.
sp_MSDrop_Object : Belirtilen veri tabanındaki tablo, stored procedure, view veya trigger'ı siler.
sp_MSkillDb : Master altında çalışıp, istenilen veritabanını siler.
sp_who2 : Kullanıların listesi, özellikleri ve o an yaptıkları çalışmaları gösterir.
sp_RenameDb : Master altında çalışıp; veritabanı adını değiştirmenize yarar.
Örneğin:
exec sp_columns_rowset 'fatura'
burda
Stored_Procedure_Adı=sp_columns_rowset
parametre=fatura
olarak girdim.
Parametreler Girdi/Çıktı değerleri olabilir.
Kendi yazdığınız Stored Procedure'lerde birden çok parametre ekleyebilirsiniz. Diyelim ki öğrencilerin devamsızlığı için bir SP yazdınız.
CREATE PROCEDURE sp_devamsizlik
@ADI CHAR(20),
@DEVAMSIZLIK BIGINT
AS
SELECT *
FROM OGRENCI
WHERE ADI=@ADI and DEVAMSIZLIK>@DEVAMSIZLIK
GO
İsmi Mehmet olupta 20 günden fazla gelmeyen öğrenci
listesi için aşağıdaki kodu yazabilirsiniz.
exec sp_devamsizlik 'Mehmet' , '20'
Not: Tüm Stored Procedure'leri SQL Query Analyzer altında Exec Stored_Procedure_Adı [parametreler] şeklinde kullanabilirsiniz.
Bu SP lere ek olarak CETURK SQL Server forumunda yazdığım Stored Procedure İpuclarını okumanızda fayda var.
sp_databases : Tüm veritabanları ve uzunluklarını gösterir.
sp_MSindexspace :Tablo yada index uzunluğunu gösterir.
sp_columns_rowset : İstenilen tablodaki alan isimlerini, tiplerini, uzunluklarını ve diğer özelliklerini gösterir.
sp_gettypestring : İstenilen tablodaki alan tipini gösterir.
sp_MSDrop_Object : Belirtilen veri tabanındaki tablo, stored procedure, view veya trigger'ı siler.
sp_MSkillDb : Master altında çalışıp, istenilen veritabanını siler.
sp_who2 : Kullanıların listesi, özellikleri ve o an yaptıkları çalışmaları gösterir.
sp_RenameDb : Master altında çalışıp; veritabanı adını değiştirmenize yarar.
Örneğin:
exec sp_columns_rowset 'fatura'
burda
Stored_Procedure_Adı=sp_columns_rowset
parametre=fatura
olarak girdim.
Parametreler Girdi/Çıktı değerleri olabilir.
Kendi yazdığınız Stored Procedure'lerde birden çok parametre ekleyebilirsiniz. Diyelim ki öğrencilerin devamsızlığı için bir SP yazdınız.
CREATE PROCEDURE sp_devamsizlik
@ADI CHAR(20),
@DEVAMSIZLIK BIGINT
AS
SELECT *
FROM OGRENCI
WHERE ADI=@ADI and DEVAMSIZLIK>@DEVAMSIZLIK
GO
İsmi Mehmet olupta 20 günden fazla gelmeyen öğrenci
listesi için aşağıdaki kodu yazabilirsiniz.
exec sp_devamsizlik 'Mehmet' , '20'
Not: Tüm Stored Procedure'leri SQL Query Analyzer altında Exec Stored_Procedure_Adı [parametreler] şeklinde kullanabilirsiniz.
Bu SP lere ek olarak CETURK SQL Server forumunda yazdığım Stored Procedure İpuclarını okumanızda fayda var.
2006-07-13
SQL Server Yardımıyla Registryden Değer Okuma
/*
Registry'deki değerlei okumak için xp_regwrite veyahut xp_instance_regwrite extended SP leri kullanabilirsiniz. xp_regwrite söz dizimi:
*/
EXEC xp_regread
[ @rootkey =]'rootkey',
[ @key =]'key'
[, [ @value_name =]'value_name']
[, [ @value =] @value OUTPUT]
/*
İki SP nin de söz dizimi aynıdır. Aşağıdaki örnek ile SQL Serverın Backup Directory sını öğrenebilirsiniz:
*/
EXEC master.dbo.xp_regread
@rootkey='HKEY_LOCAL_MACHINE',
@key='SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\',
@value_name='BackupDirectory'
/*
Bu SP yardımıya Registry'den istediğiniz değeri okuyabileceğinizi unutmayın!
Sadece SQL Serverı ilgilendiren değerleri okumakla kendinizi sınırlamayın.
*/
Registry'deki değerlei okumak için xp_regwrite veyahut xp_instance_regwrite extended SP leri kullanabilirsiniz. xp_regwrite söz dizimi:
*/
EXEC xp_regread
[ @rootkey =]'rootkey',
[ @key =]'key'
[, [ @value_name =]'value_name']
[, [ @value =] @value OUTPUT]
/*
İki SP nin de söz dizimi aynıdır. Aşağıdaki örnek ile SQL Serverın Backup Directory sını öğrenebilirsiniz:
*/
EXEC master.dbo.xp_regread
@rootkey='HKEY_LOCAL_MACHINE',
@key='SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\',
@value_name='BackupDirectory'
/*
Bu SP yardımıya Registry'den istediğiniz değeri okuyabileceğinizi unutmayın!
Sadece SQL Serverı ilgilendiren değerleri okumakla kendinizi sınırlamayın.
*/
2006-04-25
SQL ile Cümledeki Kelimelerin Baş Harflerini Büyütme
Bir çok yerde özellikle konu başlıklarında yazılan cümlede geçen kelimelerin büyük harflerle yazılmasını isteriz. Bu hem görselliği hem de okunabilirliği artırır. Bunun yanında özel kelimeleri yada özel kısaltmaların ise (MCP, SQL, DDL, DML vs gibi) tamamı büyük harflerle yazılmış kısaltmaların değişmemesini isteriz. Eğer istedikleriniz bunlar ise istediğiniz Stored Procedure aşağıdaki gibidir:
Kod:
/*
Amaç : Cümledeki kelimelerin başlıklarını büyütüp diğer harfleri küçültme. Konu başlıklarınızı düzeltmek için çok işinize yarayacak
Yazan : Mehmet GÜZEL
Tarih : 24/04/2006
Eklenti : - Tamamen büyük harf olan kelimelerin olduğu gibi kalması
Örnek : 'MeHMeT GÜZEL' in 'Mehmet GÜZEL' e çevrilmesi gibi
SP nin kullanımına örnek:
DECLARE @mesaj VARCHAR(64)
EXEC BuyukBas 'BEN CETURKu sevMEYI sevdiM ',@mesaj OUT
SELECT @mesaj
*/
CREATE PROCEDURE BuyukBas
@Cumle VARCHAR(64),
@strMesaj VARCHAR(64) OUT
AS
DECLARE @YeniCumle VARCHAR(64),
@tmpCUMLE VARCHAR(64),
@BoslukYeri INTEGER,
@Kelime VARCHAR(32),
@YeniKelime VARCHAR(32),
@IlkHarf CHAR(1)
BEGIN
SET @YeniCumle=''
SET @Cumle=LTRIM(RTRIM(REPLACE(@Cumle,SPACE(3),SPACE(1))))
SET @Cumle=LTRIM(RTRIM(REPLACE(@Cumle,SPACE(2),SPACE(1))))
SET @BoslukYeri=1
WHILE((@BoslukYeri<>0) AND (LEN(LTRIM(RTRIM(@Cumle)))>0 ))
BEGIN
SET @tmpCUMLE=LTRIM(SUBSTRING(@Cumle,LEN(@YeniCumle),LEN(@Cumle) +1))
SET @BoslukYeri=(SELECT PATINDEX('%' + SPACE(1) + '%', @tmpCUMLE))
IF @BoslukYeri=0 SET @Kelime=@tmpCumle
ELSE SET @Kelime=LEFT(@tmpCUMLE,@BoslukYeri)
SET @IlkHarf=UPPER((SELECT LEFT(@tmpCUMLE,1)))
SET @YeniKelime=(CASE WHEN UPPER(@Kelime)=@Kelime COLLATE Turkish_CS_AS
THEN RTRIM(LTRIM(@Kelime))
ELSE @IlkHarf + RIGHT(RTRIM(@Kelime),LEN(@Kelime)-1)
END )
SET @YeniCumle=@YeniCumle +SPACE(1) + @YeniKelime
END
SET @strMesaj= LTRIM(RTRIM(@YeniCumle))
END
GO
Not: Türkçe Collation ile oluşturulmuş veritabanlarında Türkçe karakterlerin büyütülüp küçültülmesinde herhangi bir sorun yok.
Kod:
/*
Amaç : Cümledeki kelimelerin başlıklarını büyütüp diğer harfleri küçültme. Konu başlıklarınızı düzeltmek için çok işinize yarayacak
Yazan : Mehmet GÜZEL
Tarih : 24/04/2006
Eklenti : - Tamamen büyük harf olan kelimelerin olduğu gibi kalması
Örnek : 'MeHMeT GÜZEL' in 'Mehmet GÜZEL' e çevrilmesi gibi
SP nin kullanımına örnek:
DECLARE @mesaj VARCHAR(64)
EXEC BuyukBas 'BEN CETURKu sevMEYI sevdiM ',@mesaj OUT
SELECT @mesaj
*/
CREATE PROCEDURE BuyukBas
@Cumle VARCHAR(64),
@strMesaj VARCHAR(64) OUT
AS
DECLARE @YeniCumle VARCHAR(64),
@tmpCUMLE VARCHAR(64),
@BoslukYeri INTEGER,
@Kelime VARCHAR(32),
@YeniKelime VARCHAR(32),
@IlkHarf CHAR(1)
BEGIN
SET @YeniCumle=''
SET @Cumle=LTRIM(RTRIM(REPLACE(@Cumle,SPACE(3),SPACE(1))))
SET @Cumle=LTRIM(RTRIM(REPLACE(@Cumle,SPACE(2),SPACE(1))))
SET @BoslukYeri=1
WHILE((@BoslukYeri<>0) AND (LEN(LTRIM(RTRIM(@Cumle)))>0 ))
BEGIN
SET @tmpCUMLE=LTRIM(SUBSTRING(@Cumle,LEN(@YeniCumle),LEN(@Cumle) +1))
SET @BoslukYeri=(SELECT PATINDEX('%' + SPACE(1) + '%', @tmpCUMLE))
IF @BoslukYeri=0 SET @Kelime=@tmpCumle
ELSE SET @Kelime=LEFT(@tmpCUMLE,@BoslukYeri)
SET @IlkHarf=UPPER((SELECT LEFT(@tmpCUMLE,1)))
SET @YeniKelime=(CASE WHEN UPPER(@Kelime)=@Kelime COLLATE Turkish_CS_AS
THEN RTRIM(LTRIM(@Kelime))
ELSE @IlkHarf + RIGHT(RTRIM(@Kelime),LEN(@Kelime)-1)
END )
SET @YeniCumle=@YeniCumle +SPACE(1) + @YeniKelime
END
SET @strMesaj= LTRIM(RTRIM(@YeniCumle))
END
GO
Not: Türkçe Collation ile oluşturulmuş veritabanlarında Türkçe karakterlerin büyütülüp küçültülmesinde herhangi bir sorun yok.
Kaydol:
Kayıtlar (Atom)
.::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.
Site içeriği kaynak gösterilmek koşuluyla yayınlanabilir. Yazılan yazı ve yorumlar sadece yazı ve yorum sahiplerini bağlar.