Anasayfa » Forum

Veri Tabanını G...
 
Bildirimler

Veri Tabanını Güncelleme  

  RSS
AliErdoğan
(@AliErdogan)
Üye

Merhabalar Kolay Gelsin. 

 

Sizlerden şöyle bir konu hakkında yardım almak istiyorum.

 

Bir c# uygulamam var ve suan yaklasık 15 kullanıcısı var bu kullanıcıılara duzenlı olarak guncellemeler sunmaya calısıyorum ve suan da guncellemeleri surum surum manuel olarak dagıtıyorum 

Fakat her guncelleme ıle verı tabanında da degısımler meydana gelıyor ve ben bu degısımlerı yıne manuel olarak yapmak zorunda kalıyorum cok vakıt alıyor Bu işlemleri daha kolay ve rahat nasıl yapabilirim.

 

Örneğin v1.1 sürümünde satıs tablomda 3 column varken v1.2 ile column sayım 5 oldu gibi. veya guncelleme ile mevcut splerde değişim olurken 2 tane sp create edildi vs. Veri tabanımdaki tabloları,triggerları , sp leri nasıl eşitleyebilirim. 

 

Veri tabanları her kullanıcı da local de tutuluyor.

Alıntı
Gönderildi : 25/10/2017 13:50
Volkan Alkılıç
(@volkanalkilic)
Üye

Selam,

Eğer ORM kullanıyorsanız entity framework gibi bir çok ORM migration işlemlerini otomatik yapabilmektedir. Ancak native SQL kullanıyorsanız veri tabanı şemasını manuel güncellemeniz gerekir. Bunun için her dağıtımda güncel veri tabanına ait DDL (Data Definition Language) scriptleri oluşturup uygulamanızın ilk çalışmasında execute edebilirsiniz. Aşağıda örnek bir script paylaşıyorum, ayrıca bu linkten faydalı kaynaklara ulaşabilirsiniz:  https://www.google.com.tr/search?q=How+to+generate+DDL+for+SQL+Server+tables

 

USE [AMS_BETA]
GO

GO

IF (EXISTS(SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[KpiDefinition]') AND type ='U'))
BEGIN
DROP TABLE [dbo].[KpiDefinition]
END

GO

SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[KpiDefinition] (
[Oid] uniqueidentifier NOT NULL ROWGUIDCOL,
[TargetObjectType] nvarchar(100) NULL,
[Changed] datetime NULL,
[KpiInstance] uniqueidentifier NULL,
[Name] nvarchar(100) NULL,
[Active] bit NULL,
[Criteria] nvarchar(max) NULL,
[Expression] nvarchar(max) NULL,
[GreenZone] float(53) NULL,
[RedZone] float(53) NULL,
[Range] nvarchar(100) NULL,
[Compare] bit NULL,
[RangeToCompare] nvarchar(100) NULL,
[MeasurementFrequency] int NULL,
[MeasurementMode] int NULL,
[Direction] int NULL,
[ChangedOn] datetime NULL,
[SuppressedSeries] nvarchar(100) NULL,
[EnableCustomizeRepresentation] bit NULL,
[OptimisticLockField] int NULL,
[GCRecord] int NULL
) ON [PRIMARY]
TEXTIMAGE_ON [PRIMARY]
WITH(DATA_COMPRESSION = NONE)
GO

EXECUTE [sp_tableoption]
@TableNamePattern = N'[dbo].[KpiDefinition]',
@OptionName = 'vardecimal storage format',
@OptionValue = 'OFF'
GO

EXECUTE [sp_tableoption]
@TableNamePattern = N'[dbo].[KpiDefinition]',
@OptionName = 'large value types out of row',
@OptionValue = 'OFF'
GO

ALTER TABLE [dbo].[KpiDefinition] SET(LOCK_ESCALATION = TABLE)

GO

EXECUTE [sp_tableoption]
@TableNamePattern = N'[dbo].[KpiDefinition]',
@OptionName = 'table lock on bulk load',
@OptionValue = 'OFF'
GO

GO

IF (EXISTS(SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[FK_KpiDefinition_KpiInstance]') AND type ='F'))
BEGIN
ALTER TABLE [dbo].[KpiDefinition]
DROP CONSTRAINT [FK_KpiDefinition_KpiInstance]
END

GO

ALTER TABLE [dbo].[KpiDefinition]
ADD CONSTRAINT [FK_KpiDefinition_KpiInstance] FOREIGN KEY ([KpiInstance])
REFERENCES [dbo].[KpiInstance] ([Oid])
NOT FOR REPLICATION
GO

CevapAlıntı
Gönderildi : 27/10/2017 01:45
Paylaş: