May 20, 2008
@ 02:07 PM

Refactoring işlemi kodlama üzerinde oldukça sık yapılan ve hayat kurtarabilen bir yapıdır. Refactoring işlemini ise Sql Server üzerinde yapmak için

Microsoft® Visual Studio Team System 2008 Database Edition Power Tools

aracını indirin. Bu aracı indirdikten sonra artık Visual Studio sayesinde veritabanlarınız üzerinde refactoring işlemi yapabilirsiniz ? Peki Nasıl ?

Yeni bir Sql Server 2005 Wizard projesi oluşturun.

Projeyi oluşturduktan sonra karşınıza sizi bir sihirbaz karşılayacak. Bu sihirbaz sayesinde projenizi özelleştirebilirsiniz. Yalnız burada birkaç önemli nokta var. Bunlardan ilki  Project Properties adımından Organize My project by schema seçeneğini seçmeniz ve Import Database Schema adımından ise çalıştığını database'i seçmenizdir. Eğer database seçmezseniz yeni bir database projesi oluşturacak, seçerseniz mevcut database üzerinde çalışacaksınız.

Schema View penceresinden üzerinde çalışmak istediğiniz veritabanı nesnelerini artık rahatça yönetebilirsiniz. Nesnenin üzerinde sağ tıklayıp refactor menüsü içerisinden farklı işlemler yapabilirsiniz. Bu işlemin güzel bir yanı örneğin bir tablo üzerinde yeniden isimlendirme işlemi yapmak isterseniz gerekli function, sp gibi nesnelerdeki isimlerde rename yapılıyor ve işleminizi başarılı bir şekilde sonlandırıyorsunuz.

Daha sonra yapılacak işlemler için Preview seçeneğini işaretleyerek yapılacak işlemlerinin tümünü görebilirsiniz.

 

İşleminiz tamamlandıktan sonra test edip kullanabilirsiniz. Örneğin ben bu örnek içerisinde DatabaseLog tablosunun ismini VeritabaniLog olarak değiştirdim. Sql Server Management Studio ile bu işlemi yapsaydık sadece tablo ismi değişecekti fakat Power Tool kurulumu sonrası bu tablonun kullanıldığı her nesne değiştirildi. Örneğin ddlDatabaseTriggerLog trigger'ı içerisindeki Insert cümleciğinde değişiklik yapıldı.

CREATE TRIGGER [ddlDatabaseTriggerLog]

ON DATABASE

FOR DDL_DATABASE_LEVEL_EVENTS

AS

BEGIN

SET NOCOUNT ON;

DECLARE @data XML;

DECLARE @schema sysname;

DECLARE @object sysname;

DECLARE @eventType sysname;

SET @data = EVENTDATA();

SET @eventType = @data.value('(/EVENT_INSTANCE/EventType)[1]', 'sysname');

SET @schema = @data.value('(/EVENT_INSTANCE/SchemaName)[1]', 'sysname');

SET @object = @data.value('(/EVENT_INSTANCE/ObjectName)[1]', 'sysname')

IF @object IS NOT NULL

PRINT ' ' + @eventType + ' - ' + @schema + '.' + @object;

ELSE

PRINT ' ' + @eventType + ' - ' + @schema;

IF @eventType IS NULL

PRINT CONVERT(nvarchar(max), @data);

INSERT [dbo].[VeritabaniLog]

(

[PostTime],

[DatabaseUser],

[Event],

[Schema],

[Object],

[TSQL],

[XmlEvent]

)

VALUES

(

GETDATE(),

CONVERT(sysname, CURRENT_USER),

@eventType,

CONVERT(sysname, @schema),

CONVERT(sysname, @object),

@data.value('(/EVENT_INSTANCE/TSQLCommand)[1]', 'nvarchar(max)'),

@data

);

END;


 
Categories: Sql Server | Team System