Forum
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.
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