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

2022-02-09

Linked Server Kullanan Stored Procedure, View, Trigger, Function vs. Listesi

Veritabanı bazında linked server kullanan Stored Procedure, View, Trigger, Funtion vs bilgilere ve bunların kullandığı linked server, veritabanı adı, şema adı ve tablo adını aşağıdaki sorgu ile bulabilirsiniz:

SELECT DISTINCT 
DB_NAME() AS DatabaseName,
OBJECT_SCHEMA_NAME (ed.referencing_id) AS SchemaName,
OBJECT_NAME (ed.referencing_id) AS ObjectName,
ed.referenced_Server_name AS LinkedServerName,
ed.referenced_database_name AS LinkedServerDatabaseName,
ed.referenced_schema_name AS LinkedServerSchemaName,
ed.referenced_entity_name As LinkedServerTableName
FROM sys.sql_expression_dependencies ed WITH (NOLOCK)
WHERE referenced_database_name IS NOT NULL
AND  referenced_Server_name IS NOT NULL 

2021-12-07

Bir Tablo Hangi SQL Modullerde Hangi Kolon Adları ile Nasıl Geçiyor?

 Bir tablonun hangi kolonları hangi SP lerde  select içerisinde mi update içerisinde mi geçiyor gibi sorunun cevabı için aşağıdaki T-SQL faydalı olabilir:

use [VeritabanıAdı]

go
select  '['+ object_schema_name(p.object_id) + '].[' +object_name(p.object_id) + ']' as ProcedureName,   re.referenced_minor_name  as ColumnName,
 re.is_selected,
 re.is_updated
from  sys.sql_modules  p  
cross apply sys.dm_sql_referenced_entities ( '['+ object_schema_name(p.object_id) + '].[' +object_name(p.object_id) + ']', 'OBJECT') re
where re.referenced_schema_name='Şema Adı' and re.referenced_entity_name='Tablo Adı' 

2021-01-13

Aranılan Bir İfadenin Geçtiği Tüm Stored Procedure, View, Function, Trigger vs. Listesini Bulma

/*

Bir ifadenin hangi veritabanındaki, hangi stored procedure, view, function, trigger vs. gibi modüllerde geçtiğini aşağıdaki script ile bulabilirsiniz. Script veritabanı ve şemaadı.nesne adına göre liste döndürür.

*/

exec sp_msforeachdb '
use [?]
select ''?'' as DatabaseName,object_schema_name(object_id) + ''.'' + object_name(object_id)
from    sys.sql_modules
where definition like ''%ARANILACAK İFADE%''
'

-- Script SQL Server 2017 ile test edildi.

2018-10-15

Tüm Kullanıcı Veritabanlarındaki sys.sql_modules Kod Satır Sayısını Bulma

Merhaba,

Tüm kullanıcı veritabanlarındaki  procedure, replication-filter-procedure, view, trigger, function, inline table-valued function, table-valued-function satır sayısınını aşağıdaki T-SQL ile bulabilirsiniz:

2013-01-15

Kullanılmayan Stored Procedure Bulma

SQL Server servisinin başlatıldığı tarihten bu yana kullanılmayan stored procedure'leri aşağıdaki sorgu ile bulabilirsiniz:

2012-12-26

Silinen Bir SQL Modülünün Kodunu Geri Kurtarma

İki tarih arasında sildiğiniz trigger, stored procedure, view, function'ın kodunu aşağıdaki T-SQL kodu ile alabilirsiniz:

declare @StartDate Datetime='2012-01-01',
@EndDate Datetime='2013-01-01'

select convert(varchar(max),substring([rowlog contents 0],33,len([rowlog contents 0]))) as [script]
from fn_dblog(null,null)
where [operation]='lop_delete_rows' and [context]='lcx_mark_as_ghost'
and [allocunitname]='sys.sysobjvalues.clst'
and [transaction id] in (select distinct [transaction id] from    sys.fn_dblog(null, null)
where context ='LCX_NULL'
and operation ='LOP_BEGIN_XACT'
and [transaction name]='DROPOBJ'
and  convert(nvarchar(11),[Begin Time]) between @StartDate AND @EndDate)
and substring([RowLog Contents 0],33,len([RowLog Contents 0]))<>0

Not: T-SQL kod SQL Server 2012 ile test edildi.

2011-12-31

SQL Server 2012 Upgrade: Unutulmaması Gerekenler!

SQL Ser ver 2005/2008 veritabanlarınızı SQL Server 2012 versiyonuna yükseltirken aşağıdaki adımları unutmamanızı tavsiye ederim:

2011-12-28

SQL Server 2008 Backup Compression ile Yer ve Zamandan Tasarruf Sağlayın

Veritabanlarınızın boyutu zamanla büyüyorsa veritabanı yedeklerinizin boyutu da zamanla büyüyecektir. Büyüyen yedek boyutları sadece büyümekle kalmayıp yedekleme sürelerini  ve network trafiğinizdeki yoğunluğu da artıracaktır.

2011-12-11

SQL Server 2008 SP2 Kurulabilir Kontrolü

SQL Server 2008 SP2 kurulumunda SQL Server 2008 SP2 Kurulum Hatası ve Çözümü adlı yazımda da bahsettiğim hata ile karşılaşmamak için Database Default Location ın var olup olmadığının kontrolünün yapılması gerekir.

2011-09-19

Şema Adını Değiştirme (Change Schema Name)

SQL Server'da herhangi bir nesnenin şema adını aşağıdaki kod ile değiştirebilirsiniz:

ALTER
SCHEMA [SchemaName_New] TRANSFER [SchemaName_Old].[ObjectName]

Not:  Şeması değiştirilen nesneye ait tüm yetkiler uçacağından şemayı değiştirmeden yetkilere ait scriptleri çıkarmanızı tavsiye ederim.

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-17

Aktif Tüm SQL Joblarını Disable Etme

Geçenlerde bir veritabanı sunucusunda bulunan tüm aktif jobları pasif yapma ihtiyacım oldu. Bu ihtiyacımı aşağıdaki gibi T-SQL kodu yazarak giderdim:
declare @cmd varchar(max)=''

select @cmd=@cmd + 'exec msdb.dbo.sp_update_job @job_id=N' + '''' + cast(job_id as varchar(36)) + '''' + ', @enabled=0' + char(13)+char(10)+ 'go' + char(13) + char(10)
from msdb.dbo.sysjobs
where enabled=1

exec(@cmd)

Umarım bu T-SQL kodu sizin de işinize yarar.

-- Kodlar SQL Server 2008  ile test edilmiştir. Koddaki değişken atamaları SQL Server 2008 ve sonrası sürümleri gerektirir.

2010-12-14

Useful Undocumented Stored Procedures

sp_MSindexspace: İndeks boyutunu KB olarak döndürür.

Syntax: 
sp_MSindexspace [ @tablename = ] 'tablename', [ @index_name = ] 'index_name'

Örnek: 
EXEC sp_MSindexspace @tablename = 'Musteri'


sp_MStablespace: Tablo boyutunu KB olarak döndürür.

Syntax:
sp_MStablespace [ @name = ] 'name', [ @id = ] 'id'

Örnek:
EXEC sp_MStablespace @name = 'Personel'


sp_objectfilegroup: Objenin datafilegroup'unu döndürür.

Syntax:sp_objectfilegroup [ @objid = ] 'objid'

Örnek:USE TestDB
GO
DECLARE @id INT
SET @id = OBJECT_ID('TestDB.dbo.TestTablo')
EXEC sp_objectfilegroup @objid = @id

2010-08-15

SQL Server Servislerinin Durumunu Kontrol Etme

SQL Server servislerinizin durumunu  xp_servicecontrol stored procedure'ü ile öğrenebilirsiniz. SQL Server'a ait servislerin çalışma durumuna aşağıdaki şekilde öğrenebilirsiniz:

EXEC xp_servicecontrol N'querystate',N'MSSQLServer'
EXEC xp_servicecontrol N'querystate',N'SQLServerAGENT'
EXEC xp_servicecontrol N'querystate',N'msdtc'
EXEC xp_servicecontrol N'querystate',N'sqlbrowser'
EXEC xp_servicecontrol N'querystate',N'MSSQLServerOLAPService'
EXEC xp_servicecontrol N'querystate',N'ReportServer'

2009-08-25

SQL Server ile Bilgisayar Adını Bulma

SQL Server üzerinden xp_getnetname sp'ü ile server ismini alabilirsiniz. Bu sp yararlı bir undocumented extended sp olup; aşağıdaki gibi kullanabilirsiniz:

EXEC master.dbo.xp_getnetname

2009-08-19

Disklerdeki Boş Yer Büyüklüğünü Bulma

Server'ınıza bağlı disklerdeki boş yeri SQL Server üzerinden aşağıdaki sp ile bulabilirsiniz:

EXEC master.dbo.xp_fixeddrives

2008-05-24

sp_helptext

Merhaba Değerli Okuyucular,

Bugün SQL Server'ı kullanırken işimize çok yaracak bir SP ye değineceğim: sp_helptext. sp_helptext ile bir rule, default, unencrypted stored procedure(sp), user defined function(udf), trigger, veya view'ın text içeriğini görüntüleyebilirsiniz. Böyle yararlı bir sp olmadığı zaman tek tek ilgili nesneleri bulup scriptlerini almak ne kadar zahmetli olduğunu yaşayan arkadaşlara anlatmama gerek yok ama yaşamayan arkadaşlar zorluğu yaşadıktan sonra bana hak vereceklerdir.

sp_helptext in syntax'ı aşağıdaki gibidir:

sp_helptext [ @objname = ] 'name'

Şimdi bir örnek ile olayı daha iyi kavrayalım. spKonuyaPuanVer sp sinin içeriğini görüntülemek için

sp_helptext 'spKonuyaPuanVer '

yazmamış yeterli olacak. Bu komutun sonucunda ilgili SP nin text içeriği ekrana dökülür. SQL Server'da bir nesnenin SQL kodunu mu merak ediyorsunuz buyrun size sp_helptext. Tabi bu sp ile SQL Server'ın system sp, view ve diğer bileşenlerinin kodunu da görüntüleyebilirsiniz. Böylelikle merak ettiğiniz herhangi bir nesnenin nasıl kodlanğını görme şansınız olacak.

Geçen haftalarda sorduğum sorunun cevabı olan sp_databases SP nin kodunu böylelikle vermiş olayım:) Bunun için

sp_helptext 'sp_databases'

kodunu yazmamız yeterli olacak. Bu scriptin sonucundan sp_databases sp nin içeriğini aşağıdaki gibi alırız.

create proc sp_databases
as
set nocount on
declare @name sysname
declare @SQL nvarchar(600)
/* Use temporary table to sum up database size w/o using group by */
create table #databases (
DATABASE_NAME sysname NOT NULL,
size int NOT NULL
)

declare c1 cursor for
select name from master.dbo.sysdatabases
where has_dbaccess(name) = 1 -- Only look at databases to which we have access

open c1
fetch c1 into @name

while @@fetch_status >= 0
begin
select @SQL = 'insert into #databases
select N'''+ @name + ''', sum(size)
from ' + QuoteName(@name) + '.dbo.sysfiles'
/* Insert row for each database */
execute (@SQL) fetch c1 into @name
end
deallocate c1

select DATABASE_NAME,
DATABASE_SIZE = size*8,/* Convert from 8192 byte pages to K */
REMARKS = convert(varchar(254),null) /* Remarks are NULL */
from #databases
order by 1

2008-03-18

Tablolardaki Kayıt Sayısını ve Fiziksel Büyüklüğü Bulmak

Veritabanınızda bulundan tüm tabloların kayıt sayısını ve bu tabloların fiziksel olarak kapladığı yeri KB cisinden aşağıdaki T-SQL cümlecikleri ile bulabilirsiniz:

SET NOCOUNT ON

IF EXISTS(SELECT * FROM TempDb.dbo.SysObjects WHERE NAME = '##Space_Used') DROP TABLE ##Space_Used

CREATE TABLE ##Space_Used (
name nvarchar(128),
rows char(11),
reserved varchar(18),
data varchar(18),
index_size varchar(18),
unused varchar(18)
)

DECLARE @User_Table_Name varchar(200)

DECLARE User_Tables_Cursor CURSOR FOR
SELECT Name
FROM Dbo.SysObjects
WHERE XTYPE = 'U'

OPEN User_Tables_Cursor

FETCH NEXT FROM User_Tables_Cursor INTO @User_Table_Name
WHILE @@FETCH_STATUS = 0
BEGIN
INSERT INTO ##Space_Used
EXEC sp_spaceused @User_Table_Name

FETCH NEXT FROM User_Tables_Cursor INTO @User_Table_Name
END

CLOSE User_Tables_Cursor
DEALLOCATE User_Tables_Cursor

SELECT
TableName=LEFT(Name, 50),
"RowCount"=Rows,
Phys_Size_KB = CONVERT(int, LEFT(Reserved, PATINDEX('% KB', Reserved) - 1))
FROM ##Space_Used
ORDER BY Phys_Size_KB DESC

IF EXISTS(SELECT * FROM TempDb.dbo.SysObjects WHERE NAME = '##Space_Used') DROP TABLE ##Space_Used


Kaynak: SQLServerCentral

2008-02-15

SQL Server 2005'te CLR Enable

SQL Server 2005 e CLR default olarak OFF gelir. Aşağıdaki T-SQL kodu ile CLR'ı enable yapabilirsiniz:

EXEC sp_configure 'clr enabled', 1;
RECONFIGURE WITH OVERRIDE;
GO


Aynı şekide CLR yetkisini tekrardan OFF konuma getirmek için aşağıdaki kodu kullanabilirsiniz:

EXEC sp_configure 'clr enabled', 0;
RECONFIGURE WITH OVERRIDE;
GO


Tüm bu değişiklikleri görsel olarak ta Başlat-> Programlar-> MS SQL 2005->Configuration Tools ->SQL Surface Area Configuration adımından da değiştirebilirsiniz(MSSQLServer->Database Engine->CLR Integration).

2008-01-18

Suspect Moddaki SQL Server Veritabanını Kurtarma

Restore SQL Server 2005 Suspect Database

Birkaç gün önce suspect olmuş bir SQL Server 2005 veritabanını kurtarmak için epey uğraştım. Kurtarmaya çalıştığım veritabanı replikasyon için oluşturulan Distribution veritabanı idi. Ne veritananına erieşbiliyordum ne de üzerinde birazdan bahsettiğim komutları çalıştırabiliyordum. Data dosyası CRC hataları ile doluydu ve tüm uğraşlarım sonucu replikasyon ayarlarını uçurup yeniden yapmak zorunda kaldım:( Benzer durumlar ile karşılaşacak arkadaşlar aşağıdaki komutları denemeden veritabanınızı gözden çıkarmayın.

Suspect durumuna düşmüş bir SQL Server veritabanınızı; veri kayıplarını da gözönüne alarak aşağıdaki komutları ard arda çalıştırarak kurtarabilirsiniz:

EXEC SP_RESETSTATUS 'VeritabaniAdi';

ALTER DATABASE VeritabaniAdi SET EMERGENCY

DBCC CHECKDB(
'VeritabaniAdi')

ALTER DATABASE VeritabaniAdi SET SINGLE_USER WITH ROLLBACK IMMEDIATE

DBCC CHECKDB ('VeritabaniAdi', REPAIR_ALLOW_DATA_LOSS)

ALTER DATABASE VeritabaniAdi SET MULTI_USER

T-SQL Kod Kaynağı: CodeProject

.::YASAL UYARI::.

©2004-2023 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.