SQL creation script for comparing and synchronizing two databases in SQL Compare
Published 27 November 2013
To copy the SQL below, double-click on a line of code in the box, then press Ctrl+A followed by Ctrl+C.
USE tempdb
GO
IF EXISTS (SELECT name FROM sys.databases
WHERE name = N'WidgetProduction'
)
DROP DATABASE WidgetProduction
GO
CREATE DATABASE WidgetProduction
GO
USE WidgetProduction
GO
CREATE TABLE [dbo].[WidgetPrices] (
[RecordID] [int] IDENTITY (1, 1) NOT NULL ,
[WidgetID] [int] NULL ,
[Price] [money] NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[Widgets] (
[RecordID] [int] IDENTITY (1, 1) NOT NULL ,
[Description] [varchar] (50) NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[WidgetReferences] (
[WidgetID] [int] IDENTITY NOT NULL ,
[Reference] [varchar] (50) NULL
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[WidgetReferences] WITH NOCHECK ADD
CONSTRAINT [PK_WidgetReferences] PRIMARY KEY NONCLUSTERED
(
[WidgetID]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[WidgetPrices] WITH NOCHECK ADD
CONSTRAINT [PK_WidgetPrices] PRIMARY KEY NONCLUSTERED
(
[RecordID]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[Widgets] WITH NOCHECK ADD
CONSTRAINT [PK_Widgets] PRIMARY KEY NONCLUSTERED
(
[RecordID]
) ON [PRIMARY]
GO
SET QUOTED_IDENTIFIER ON SET ANSI_NULLS ON
GO
CREATE VIEW dbo.CurrentPrices
AS
SELECT WidgetID, Price, Description
FROM Widgets INNER JOIN
WidgetPrices ON Widgets.RecordID = WidgetPrices.WidgetID
GO
SET QUOTED_IDENTIFIER OFF SET ANSI_NULLS ON
GO
IF EXISTS (SELECT name FROM sys.databases
WHERE name = N'WidgetStaging'
)
DROP DATABASE WidgetStaging
GO
CREATE DATABASE WidgetStaging
GO
USE WidgetStaging
GO
CREATE TABLE [dbo].[WidgetPrices] (
[RecordID] [int] IDENTITY (1, 1) NOT NULL ,
[WidgetID] [int] NULL ,
[Price] [money] NULL ,
[DateValidFrom] [datetime] NULL ,
[DateValidTo] [datetime] NULL ,
[Active] [char] (1) NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[Widgets] (
[RecordID] [int] IDENTITY (1, 1) NOT NULL ,
[Description] [varchar] (50) NULL ,
[SKU] [varchar] (20) NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[WidgetReferences] (
[WidgetID] [int] NOT NULL ,
[Reference] [varchar] (50) NULL
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[WidgetReferences] WITH NOCHECK ADD
CONSTRAINT [PK_WidgetReferences] PRIMARY KEY NONCLUSTERED
(
[WidgetID]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[WidgetPrices] WITH NOCHECK ADD
CONSTRAINT [DF_WidgetPrices_DateValidFrom] DEFAULT (getdate()) FOR [DateValidFrom],
CONSTRAINT [DF_WidgetPrices_Active] DEFAULT ('N') FOR [Active],
CONSTRAINT [PK_WidgetPrices] PRIMARY KEY NONCLUSTERED
(
[RecordID]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[Widgets] WITH NOCHECK ADD
CONSTRAINT [PK_Widgets] PRIMARY KEY NONCLUSTERED
(
[RecordID]
) ON [PRIMARY]
GO
CREATE INDEX [IX_WidgetPrices] ON [dbo].[WidgetPrices]([WidgetID]) ON [PRIMARY]
GO
CREATE INDEX [IX_WidgetPrices_1] ON [dbo].[WidgetPrices]([DateValidFrom]) ON [PRIMARY]
GO
CREATE INDEX [IX_WidgetPrices_2] ON [dbo].[WidgetPrices]([DateValidTo]) ON [PRIMARY]
GO
GRANT SELECT ON [dbo].[WidgetPrices] TO [public]
GO
DENY REFERENCES , INSERT , DELETE , UPDATE ON [dbo].[WidgetPrices] TO [public] CASCADE
GO
GRANT SELECT ON [dbo].[Widgets] TO [public]
GO
DENY REFERENCES , INSERT , DELETE , UPDATE ON [dbo].[Widgets] TO [public] CASCADE
GO
ALTER TABLE [dbo].[WidgetPrices] ADD
CONSTRAINT [FK_WidgetPrices_Widgets] FOREIGN KEY
(
[WidgetID]
) REFERENCES [dbo].[Widgets] (
[RecordID]
)
GO
SET QUOTED_IDENTIFIER ON SET ANSI_NULLS ON
GO
CREATE VIEW dbo.CurrentPrices
AS
SELECT WidgetPrices.WidgetID, WidgetPrices.Price,
Widgets.Description
FROM dbo.Widgets INNER JOIN
dbo.WidgetPrices ON
dbo.Widgets.RecordID = dbo.WidgetPrices.WidgetID
WHERE dbo.WidgetPrices.Active = 'Y'
GO
SET QUOTED_IDENTIFIER OFF SET ANSI_NULLS ON
GO
GRANT SELECT ON [dbo].[CurrentPrices] TO [public]
GO
DENY INSERT , DELETE , UPDATE ON [dbo].[CurrentPrices] TO [public] CASCADE
GO
SET QUOTED_IDENTIFIER ON SET ANSI_NULLS ON
GO
CREATE PROCEDURE prcActivatePrices AS
UPDATE WidgetPrices SET Active='N' WHERE GetDate()<DateValidTo OR GetDate()>DateValidFrom
UPDATE WidgetPrices SET Active='Y' WHERE GetDate()>=DateValidFrom OR GetDate()<=DateValidFrom
GO
SET QUOTED_IDENTIFIER OFF SET ANSI_NULLS ON
GO
DENY EXECUTE ON [dbo].[prcActivatePrices] TO [public] CASCADE
GO