exec sp_addarticle @publication = N'pubAdi', @article = N'TabloAdi', @source_owner = N'dbo', @source_object = N'TabloAdi', @type = N'logbased',
@description = null, @creation_script = null, @pre_creation_cmd = N'drop', @schema_option = 0x000000000803509F, @force_invalidate_snapshot = 1,
@identityrangemanagementoption = N'manual', @destination_table = N'TabloAdi', @destination_owner = N'dbo', @vertical_partition = N'false', @ins_cmd =
N'CALL sp_MSins_dboTabloAdi', @del_cmd = N'CALL sp_MSdel_dboTabloAdi', @upd_cmd = N'SCALL sp_MSupd_dboTabloAdi'
exec sp_droparticle @publication = N'pubAdi', @article = N'TabloAdi', @force_invalidate_snapshot = 1
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-11-16
2007-09-21
Tablo Adını Değiştirme(Rename Table)
sp_rename SP'u ile birçok nesnenin ismini değiştirebildiğimiz gibi herhangi bir tablonun ismini de değiştirebiliriz.
Yazım Şekli : EXEC sp_rename 'TabloAdi' , 'YeniTabloAdi'
Yazım Şekli : EXEC sp_rename 'TabloAdi' , 'YeniTabloAdi'
2007-07-30
SQL Server Adı Değiştirme
Change SQL Server Name
Bilgisayarınızın adı değiştiği zaman SQL Server'ın adı değişmeyecektir ve değişiklik çeşitli sorunlara neden olacaktır(Özellikle ismi değişen bilgisayar yada serverın SQL ine dışardan erişiyorsanız). Bu tür bir sorunun çözümü SQL Serverınızın adını da bilgisayar adıyla aynı olacak şekilde değiştirmektir. Bunu yapmak için aşağıdaki SP'leri kullanabilirsiniz:
exec sp_dropserver 'EskiServerAdi'
go
exec sp_addserver 'YeniServerAdi', 'local'
go
Değişikliği görebilmek için SQL Server servisinin restart edilmesi gerekiyor.
exec sp_dropserver 'MEHMETGUZEL'
go
exec sp_addserver 'GUZEL', 'local'
go
Not: SQL Server 2005/2008/2012/2014/2016/2017 versiyonları ile test edildi.
Bilgisayarınızın adı değiştiği zaman SQL Server'ın adı değişmeyecektir ve değişiklik çeşitli sorunlara neden olacaktır(Özellikle ismi değişen bilgisayar yada serverın SQL ine dışardan erişiyorsanız). Bu tür bir sorunun çözümü SQL Serverınızın adını da bilgisayar adıyla aynı olacak şekilde değiştirmektir. Bunu yapmak için aşağıdaki SP'leri kullanabilirsiniz:
exec sp_dropserver 'EskiServerAdi'
go
exec sp_addserver 'YeniServerAdi', 'local'
go
Değişikliği görebilmek için SQL Server servisinin restart edilmesi gerekiyor.
Örnek:
exec sp_dropserver 'MEHMETGUZEL'
go
exec sp_addserver 'GUZEL', 'local'
go
Not: SQL Server 2005/2008/2012/2014/2016/2017 versiyonları ile test edildi.
Stored Procedure Adını "SP_" ile Başlatmayınız!
SP adını "SP_" ön takısı ile başlatmak performansı düşürür çünkü SQL Server aşağıdaki sıra ile SP_ yi arar:
- Master DB,
- System SP leri "SP_" ile başlar. Eğer var olan bir system SP'u ile aynı adı taşıyan bir SP oluşturursanız SQL Server sistem SP'unu çalıştıracaktır.
Bu tür dezavantajlardan dolayı SP oluştururken stored procedure isimlerini "SP_" ile başlatmayın!
2007-07-24
Tüm SP'lere Execute Yetkisi
SQL Server 2005 te 'Mehmet' kullanıcısı için tüm SP lere Execute yetkisini vermek için aşağıdaki T-SQL kodunu çalıştırıp çıkan sonucu copy-paste yapıp çalıştırın:
DECLARE @strUserName sysname
SET @strUserName = 'Mehmet'
SELECT 'Grant exec on [' + Routine_Schema + '].[' + Routine_Name + '] TO [' + @strUserName + ']' FROM Information_Schema.Routines WHERE Routine_Type = 'Procedure'
DECLARE @strUserName sysname
SET @strUserName = 'Mehmet'
SELECT 'Grant exec on [' + Routine_Schema + '].[' + Routine_Name + '] TO [' + @strUserName + ']' FROM Information_Schema.Routines WHERE Routine_Type = 'Procedure'
2007-05-09
sp_configure
SQL server'ın konfigürasyon bilgilerini verir ve üzerlerinde değişiklik yapmamızı sağlar.
Örnek: sp_configure 'user connections', 11
Bu komut ile bu SQL Server'dan aynı anda 11 user yararlanabilir.
Örnek: sp_configure 'remote query timeout', 0
Server 'dan servera remote query timeout süresini 0 ile sınırsız yapmış olduk. remote query timeout süresi default olarak 600 sn(10 dakika)'dır.
Örnek: sp_configure 'user connections', 11
Bu komut ile bu SQL Server'dan aynı anda 11 user yararlanabilir.
Örnek: sp_configure 'remote query timeout', 0
Server 'dan servera remote query timeout süresini 0 ile sınırsız yapmış olduk. remote query timeout süresi default olarak 600 sn(10 dakika)'dır.
2007-03-27
Agent'ı Otomatik Çalıştırma
SQL Server Service Manager'daki “Auto-Start Service When OS Starts" seçeneğini aşağıdaki gibi SP yardımıyla değiştirebilirsiniz:
//Agent ı otomatik çalışmasını sağlama
exec msdb..sp_set_sqlagent_properties @auto_start = 1
//Agent ı otomatik çalışmamasını sağlama
exec msdb..sp_set_sqlagent_properties @auto_start = 0
//Agent ı otomatik çalışmasını sağlama
exec msdb..sp_set_sqlagent_properties @auto_start = 1
//Agent ı otomatik çalışmamasını sağlama
exec msdb..sp_set_sqlagent_properties @auto_start = 0
2007-02-15
Örnek SP
DECLARE @parcano varchar(32)
/*
Bu SP ile UrunAltSirket tablosundaki Alt Sirket kodlarını alıp PARCA tablosundaki
AltSirketKodu nu update edeceğiz.
*/
//Tanımlamalarımızı yapıyoruz.
DECLARE @AltSirket varchar(3)
DECLARE @var int
DECLARE @say int
//Cursorumuzu tanımlıyoruz
DECLARE crUrun CURSOR FOR
SELECT parcano, AltSirketKodu
FROM UrunAltSirket
//Cursorumuzu açıyoruz
OPEN crUrun
FETCH NEXT FROM crUrun INTO @parcano, @AltSirket
SET @say=0
//Cursorumuzdeki verileri döngüye sokup bu veriler üzerinden işlem yapıyoruz
WHILE @@FETCH_STATUS=0
BEGIN
//Ürünümüzün ürün tablosunda olup olmadığını kontrol ediyoruz
SET @var=(SELECT COUNT(parcano) FROM PARCA WHERE parcano=@parcano)
IF @VAR>0
BEGIN
SET @Say=@Say+1
PRINT @say
//Ürünün alt şirket kodunu update ediyoruz
UPDATE PARCA
SET AltSirketKodu=@AltSirket
WHERE parcano=@parcano
END
//Cursoru bir sonraki bloğa kaydırıyoruz
FETCH NEXT FROM crUrun INTO @parcano, @AltSirket
END
CLOSE crUrun //Cursorumuzu kapattık
DEALLOCATE crUrun //Cursorumuzu sildik
2007-01-24
sp_special_columns
Bu SP ile bir tabloda unique olan alan adları ve bunlara ait bilgileri alabilirsiniz.
Syntax
sp_special_columns [@name=] 'name' [,[owner=] 'owner'] [,[@qualifier=] 'qualifier'] [,[@col_type=] 'col_type'] [,[@scope=] 'scope'] [,[@nullable=] 'nullable'] [,[@ODBCVer=] 'ODBCVer']
Syntax
sp_special_columns [@name=] 'name' [,[owner=] 'owner'] [,[@qualifier=] 'qualifier'] [,[@col_type=] 'col_type'] [,[@scope=] 'scope'] [,[@nullable=] 'nullable'] [,[@ODBCVer=] 'ODBCVer']
sp_server_info
sp_server_info SP ile SQL Serverınız hakkında birçok bilgiye ulaşabilirsiniz. İlişkili Veritabanı Sisteminin adı, versiyonu, collation tipi, index için kullanılacabilecek maksimum alan sayısı vs gibi bilgilere ulaşabilirsiniz.
Syntax
sp_server_info [[@attribute_id =] 'attribute_id']
Syntax
sp_server_info [[@attribute_id =] 'attribute_id']
2007-01-22
sp_pkeys ve sp_fkeys
Bir tablodaki primary key yada keyleri sp_pkeys, foreign keyleri ise sp_fkeys SP leri ile alabilirsiniz.
Syntax
sp_pkeys [ @table_name = ] 'name' [ , [ @table_owner = ] 'owner' ] [ , [ @table_qualifier = ] 'qualifier' ]
Syntax
sp_fkeys [ @pktable_name = ] 'pktable_name' [ , [ @pktable_owner = ] 'pktable_owner' ] [ , [ @pktable_qualifier = ] 'pktable_qualifier' ] { , [ @fktable_name = ] 'fktable_name' } [ , [ @fktable_owner = ] 'fktable_owner' ] [ , [ @fktable_qualifier = ] 'fktable_qualifier' ]
Örnek:
--Primary key için
EXEC sp_pkeys 'SIPARIS'
--Foreign key için
EXEC sp_fkeys 'SIPARIS'
Syntax
sp_pkeys [ @table_name = ] 'name' [ , [ @table_owner = ] 'owner' ] [ , [ @table_qualifier = ] 'qualifier' ]
Syntax
sp_fkeys [ @pktable_name = ] 'pktable_name' [ , [ @pktable_owner = ] 'pktable_owner' ] [ , [ @pktable_qualifier = ] 'pktable_qualifier' ] { , [ @fktable_name = ] 'fktable_name' } [ , [ @fktable_owner = ] 'fktable_owner' ] [ , [ @fktable_qualifier = ] 'fktable_qualifier' ]
Örnek:
--Primary key için
EXEC sp_pkeys 'SIPARIS'
--Foreign key için
EXEC sp_fkeys 'SIPARIS'
sp_columns
Çoğumuz ah keşke şu tablomda bulunan alan adlarını ve bu alan adlarına ait tanımlamaları bir şekilde öğrensek dediğimiz oldu. Bunu system tablolarından yada kataloglar sayesinde zahmetli bir şekilde istediğimiz bilgiye ulaştık. MS SQL Server'da bu işi yapan sp_columns adlı SP miz var.
Syntax
sp_columns [ @table_name = ] object [ , [ @table_owner = ] owner ] [ , [ @table_qualifier = ] qualifier ] [ , [ @column_name = ] column ] [ , [ @ODBCVer = ] ODBCVer ]
sp_columns SP si ile aşağıdaki alanlara iat bilgiler elde edilebilir:
TABLE_QUALIFIER
TABLE_OWNER
TABLE_NAME
COLUMN_NAME
DATA_TYPE
TYPE_NAME
PRECISION
LENGTH
SCALE
RADIX
NULLABLE
REMARKS
COLUMN_DEF
SQL_DATA_TYPE
SQL_DATETIME_SUB
CHAR_OCTET_LENGTH
ORDINAL_POSITION
IS_NULLABLE SS_DATA_TYPE
Örnek: SIPARIS tablomuzda bulunan alan adları ve alan adlarının özelliklerini aşağıdaki komut ile alabiliriz.
EXEC sp_columns 'SIPARIS
Syntax
sp_columns [ @table_name = ] object [ , [ @table_owner = ] owner ] [ , [ @table_qualifier = ] qualifier ] [ , [ @column_name = ] column ] [ , [ @ODBCVer = ] ODBCVer ]
sp_columns SP si ile aşağıdaki alanlara iat bilgiler elde edilebilir:
TABLE_QUALIFIER
TABLE_OWNER
TABLE_NAME
COLUMN_NAME
DATA_TYPE
TYPE_NAME
PRECISION
LENGTH
SCALE
RADIX
NULLABLE
REMARKS
COLUMN_DEF
SQL_DATA_TYPE
SQL_DATETIME_SUB
CHAR_OCTET_LENGTH
ORDINAL_POSITION
IS_NULLABLE SS_DATA_TYPE
Örnek: SIPARIS tablomuzda bulunan alan adları ve alan adlarının özelliklerini aşağıdaki komut ile alabiliriz.
EXEC sp_columns 'SIPARIS
sp_tables
Çoğu zaman merak ederiz: Veritabanımızda bulunan tablo adlarımızı nasıl alabiliriz diye. İşte veritabanında hangi tabloların olduğunu merak eden arkadaşlar için sp_tables adlı SP miz var. sp_tables ile tablo adlarının yanında tablonun tipine(SYSTEM TABLE, TABLE, VIEW) de erişebiliriz.
Syntax
Örnek 1: Veritabanındaki tüm tablo adlarını listeleyelim.
exec sp_tables
Örnek 2: Veritabanımızda bulunan SIPARIS adlı tablomuzu listeleyelim.
Örnek 3: Sadece veritabanımızda tabloları listeleyelim:
Örnek 4: Sadece veritabanımızda viewları listeleyelim:
Örnek 5: Sadece veritabanımızda sistem tablolarını listeleyelim:
Syntax
sp_tables [ [ @table_name = ] 'name' ] [ , [ @table_owner = ] 'owner' ]
[ , [ @table_qualifier = ] 'qualifier' ] [ , [ @table_type = ] "type" ]
Örnek 1: Veritabanındaki tüm tablo adlarını listeleyelim.
exec sp_tables
Örnek 2: Veritabanımızda bulunan SIPARIS adlı tablomuzu listeleyelim.
exec sp_tables 'SIPARIS'
Örnek 3: Sadece veritabanımızda tabloları listeleyelim:
exec sp_tables @table_type="'TABLE'"
Örnek 4: Sadece veritabanımızda viewları listeleyelim:
exec sp_tables @table_type="'VIEW'"
Örnek 5: Sadece veritabanımızda sistem tablolarını listeleyelim:
exec sp_tables @table_type="'SYSTEM TABLE'"
sp_databases
sp_databases SP miz ile SQL Server altında bulunan veritabanlarının adları ve büyüklükleri hakkında bilgi alabiliriz.
Syntax
sp_databases
Syntax
sp_databases
sp_stored_procedures
Daha önce SP isimlerinin listesini basit bir SQL ile halletmiştim. Şimdi ise yazdığım SQL in yerine MS SQL Server'da bu iş için yazılmış olan sp_stored_procedures ile de halledebiliriz:
Syntax
sp_stored_procedures [[@sp_name =] 'name'] [,[@sp_owner =] 'owner'] [,[@sp_qualifier =] 'qualifier']
Parametre olarak herhangi bir şey girmezseniz o aktif veritabanında bulunan tüm SP isimleri hakkında bilgi verir.
Syntax
sp_stored_procedures [[@sp_name =] 'name'] [,[@sp_owner =] 'owner'] [,[@sp_qualifier =] 'qualifier']
Parametre olarak herhangi bir şey girmezseniz o aktif veritabanında bulunan tüm SP isimleri hakkında bilgi verir.
2007-01-20
sp_table_privileges
Tablo erişimi ile ilgili izinleri görebilmek için kullanılır.
Syntax:
sp_table_privileges [ @table_name_pattern = ] 'table_name_pattern' [ , [ @table_owner_pattern = ] 'table_owner_pattern' ] [ , [ @table_qualifier = ] 'table_qualifier' ]
SIPARIS tablomla ilgili izinlere bakmak istersem SP mizi aşağıdaki gibi çalıştırırız:
EXEC sp_table_privileges siparis
Syntax:
sp_table_privileges [ @table_name_pattern = ] 'table_name_pattern' [ , [ @table_owner_pattern = ] 'table_owner_pattern' ] [ , [ @table_qualifier = ] 'table_qualifier' ]
SIPARIS tablomla ilgili izinlere bakmak istersem SP mizi aşağıdaki gibi çalıştırırız:
EXEC sp_table_privileges siparis
Sonuç çıktısı aşağıdaki gibi olur:
TABLE_QUALIFIER | TABLE_OWNER | TABLE_NAME | GRANTOR | GRANTEE | PRIVILEGE | IS_GRANTABLE |
ithalat | dbo | SIPARIS | dbo | dbo | DELETE | YES |
ithalat | dbo | SIPARIS | dbo | dbo | INSERT | YES |
ithalat | dbo | SIPARIS | dbo | dbo | REFERENCES | YES |
ithalat | dbo | SIPARIS | dbo | dbo | SELECT | YES |
ithalat | dbo | SIPARIS | dbo | dbo | UPDATE | YES |
2007-01-19
SP_LOCK
Aktif locklar hakkında bilgiyi raporlamaya yarar. Parametre kısmına process ID leri girerek processler hakkında bilgi alabilirsiniz. Herhangi bir parametre girmezseniz lock olan tüm processler listelenir.
Syntax:
sp_lock [[@spid1 =] 'spid1'] [,[@spid2 =] 'spid2']
Syntax:
sp_lock [[@spid1 =] 'spid1'] [,[@spid2 =] 'spid2']
2007-01-10
Add Linked Server
Dağıtık sorgular yazabilmek için SQL Serverlarınızı bir birbirine bağlayabilirsiniz. Bunun için sp_addlinkedserver sp'sini kullanabilirsiniz.
Söz dizimi:
sp_addlinkedserver [@server=] 'server' [, [@srvproduct=] 'product_name'] [, [@provider=] 'provider_name'] [, [@datasrc=] 'data_source'] [, [@location=] 'location'] [, [@provstr=] 'provider_string'] [, [@catalog=] 'catalog']
Örnek: CETURK adlı SQL Serverımızı kendi serverımıza link edelim:
USE master
EXEC sp_addlinkedserver 'CETURK', N'SQL Server'
Dipnot: Bu sp yi kullanabilmek için sysadmin ve setupadmin server rollerinizin olması lazım.
Söz dizimi:
sp_addlinkedserver [@server=] 'server' [, [@srvproduct=] 'product_name'] [, [@provider=] 'provider_name'] [, [@datasrc=] 'data_source'] [, [@location=] 'location'] [, [@provstr=] 'provider_string'] [, [@catalog=] 'catalog']
Örnek: CETURK adlı SQL Serverımızı kendi serverımıza link edelim:
USE master
EXEC sp_addlinkedserver 'CETURK', N'SQL Server'
Dipnot: Bu sp yi kullanabilmek için sysadmin ve setupadmin server rollerinizin olması lazım.
MD5 ile Şifreleme
İstediğiniz bilgileri şifrelemek için XP_MD5 Extended Stored Procedure kullanabilirsiniz.(xp_md5.dll dosyasını CodeProject'en indirebilirsiniz.)
xp_md5.dll dosyasını aşağıdaki gibi manuel olarak ekleyebilirsiniz(bu ekleme xp_md5 Extended Stored procedure nı oluşturur):
USE master;
EXEC sp_addextendedproc 'xp_md5', 'xp_md5.dll'
İşinize yarayacak şekilde xp_md5 içerecek bir User Defined Function oluşturabilirsiniz:
Tanımladığımız User Define Function u aşağıdaki gibi kullanabilirsiniz:
SELECT dbo.fn_md5('Hello world!')
Yukardaki ifadenin çıktısı : 86fb269d190d2c85f6e0468ceca42a20 olur.
Bunun yerine direk olarak xp_md5 Extended Stored Procedure nı da aşağıdaki şekilde kullanabilirsiniz:
EXEC master.dbo.xp_md5 'Hello world!'
Bu ifadenin çıktısı da: 86fb269d190d2c85f6e0468ceca42a20 olur.
xp_md5.dll dosyasını aşağıdaki gibi manuel olarak ekleyebilirsiniz(bu ekleme xp_md5 Extended Stored procedure nı oluşturur):
USE master;
EXEC sp_addextendedproc 'xp_md5', 'xp_md5.dll'
İşinize yarayacak şekilde xp_md5 içerecek bir User Defined Function oluşturabilirsiniz:
CREATE FUNCTION [dbo].[fn_md5] (@string VARCHAR(8000))
RETURNS CHAR(32)
AS
BEGIN
DECLARE @hash CHAR(32)
EXEC master.dbo.xp_md5 @string, @hash OUTPUT RETURN @hash
END
Tanımladığımız User Define Function u aşağıdaki gibi kullanabilirsiniz:
SELECT dbo.fn_md5('Hello world!')
Yukardaki ifadenin çıktısı : 86fb269d190d2c85f6e0468ceca42a20 olur.
Bunun yerine direk olarak xp_md5 Extended Stored Procedure nı da aşağıdaki şekilde kullanabilirsiniz:
EXEC master.dbo.xp_md5 'Hello world!'
Bu ifadenin çıktısı da: 86fb269d190d2c85f6e0468ceca42a20 olur.
Kullanıcı Silme
Var olan bir logini silmek için ise sp_droplogin sp'ü kullanabilirsiniz.
Syntax:
sp_droplogin [ @loginame = ] 'login'
Örnek: SQL Server'dan Mehmet loginname ni silelim:
EXEC sp_droplogin 'Mehmet'
Kısıtlama: Sadece sysadmin and securityadmin sunucu rollerine sahip olan kullanıcılar sp_droplogin sp'ünü kullanabilir.
Not: Silinmek istenen login herhangi bir database de map edilmişse sp_droplogin ile silinemez. Önce sp_dropuser ile kullanıcı silinmeli ardından login sp_droplogin ile silinmeli.
Syntax:
sp_droplogin [ @loginame = ] 'login'
Örnek: SQL Server'dan Mehmet loginname ni silelim:
EXEC sp_droplogin 'Mehmet'
Kısıtlama: Sadece sysadmin and securityadmin sunucu rollerine sahip olan kullanıcılar sp_droplogin sp'ünü kullanabilir.
Not: Silinmek istenen login herhangi bir database de map edilmişse sp_droplogin ile silinemez. Önce sp_dropuser ile kullanıcı silinmeli ardından login sp_droplogin ile silinmeli.
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.