-
Notifications
You must be signed in to change notification settings - Fork 73
/
Copy pathContoso.ExampleTable.ChannelDatabase.sql
138 lines (111 loc) · 3.64 KB
/
Contoso.ExampleTable.ChannelDatabase.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
/**
* SAMPLE CODE NOTICE
*
* THIS SAMPLE CODE IS MADE AVAILABLE AS IS. MICROSOFT MAKES NO WARRANTIES, WHETHER EXPRESS OR IMPLIED,
* OF FITNESS FOR A PARTICULAR PURPOSE, OF ACCURACY OR COMPLETENESS OF RESPONSES, OF RESULTS, OR CONDITIONS OF MERCHANTABILITY.
* THE ENTIRE RISK OF THE USE OR THE RESULTS FROM THE USE OF THIS SAMPLE CODE REMAINS WITH THE USER.
* NO TECHNICAL SUPPORT IS PROVIDED. YOU MAY NOT DISTRIBUTE THIS CODE UNLESS YOU HAVE A LICENSE AGREEMENT WITH MICROSOFT THAT ALLOWS YOU TO DO SO.
*/
-- Create the extension table to store the custom fields.
IF (SELECT OBJECT_ID('[ext].[CONTOSO_EXAMPLETABLE]')) IS NULL
BEGIN
CREATE TABLE
[ext].[CONTOSO_EXAMPLETABLE]
(
[EXAMPLEID] BIGINT IDENTITY(1,1) NOT NULL,
[EXAMPLEINT] INT NOT NULL DEFAULT ((0)),
[EXAMPLESTRING] NVARCHAR(64) NOT NULL DEFAULT (('')),
CONSTRAINT [I_EXAMPLETABLE_EXAMPLEID] PRIMARY KEY CLUSTERED
(
[EXAMPLEID] ASC
) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
ALTER TABLE [ext].[CONTOSO_EXAMPLETABLE] WITH CHECK ADD CHECK (([EXAMPLEID]<>(0)))
END
GO
GRANT SELECT, INSERT, UPDATE, DELETE ON OBJECT::[ext].[CONTOSO_EXAMPLETABLE] TO [DataSyncUsersRole]
GO
-- Create a stored procedure CRT can use to add entries to the custom table.
IF OBJECT_ID(N'[ext].[CONTOSO_INSERTEXAMPLE]', N'P') IS NOT NULL
DROP PROCEDURE [ext].[CONTOSO_INSERTEXAMPLE]
GO
CREATE PROCEDURE [ext].[CONTOSO_INSERTEXAMPLE]
@i_ExampleInt INT,
@s_ExampleString NVARCHAR(64)
AS
BEGIN
SET NOCOUNT ON
INSERT INTO
ext.CONTOSO_EXAMPLETABLE
(EXAMPLEINT, EXAMPLESTRING)
OUTPUT
INSERTED.EXAMPLEID
VALUES
(@i_ExampleInt, @s_ExampleString)
END;
GO
GRANT EXECUTE ON [ext].[CONTOSO_INSERTEXAMPLE] TO [UsersRole];
GO
GRANT EXECUTE ON [ext].[CONTOSO_INSERTEXAMPLE] TO [DeployExtensibilityRole];
GO
-- Create the custom view that can query a complete Example Entity.
IF (SELECT OBJECT_ID('[ext].[CONTOSO_EXAMPLEVIEW]')) IS NOT NULL
DROP VIEW [ext].[CONTOSO_EXAMPLEVIEW]
GO
CREATE VIEW [ext].[CONTOSO_EXAMPLEVIEW] AS
(
SELECT
et.EXAMPLEINT,
et.EXAMPLESTRING,
et.EXAMPLEID
FROM
[ext].[CONTOSO_EXAMPLETABLE] et
)
GO
GRANT SELECT ON OBJECT::[ext].[CONTOSO_EXAMPLEVIEW] TO [UsersRole];
GO
GRANT SELECT ON OBJECT::[ext].[CONTOSO_EXAMPLEVIEW] TO [DeployExtensibilityRole];
GO
-- Create a stored procedure CRT can use to perform updates.
IF OBJECT_ID(N'[ext].[CONTOSO_UPDATEEXAMPLE]', N'P') IS NOT NULL
DROP PROCEDURE [ext].[CONTOSO_UPDATEEXAMPLE]
GO
CREATE PROCEDURE [ext].[CONTOSO_UPDATEEXAMPLE]
@bi_Id BIGINT,
@i_ExampleInt INT,
@s_ExampleString NVARCHAR(64)
AS
BEGIN
SET NOCOUNT ON
UPDATE
ext.CONTOSO_EXAMPLETABLE
SET
EXAMPLEINT = @i_ExampleInt,
EXAMPLESTRING = @s_ExampleString
WHERE
EXAMPLEID = @bi_Id
END;
GO
GRANT EXECUTE ON [ext].[CONTOSO_UPDATEEXAMPLE] TO [UsersRole];
GO
GRANT EXECUTE ON [ext].[CONTOSO_UPDATEEXAMPLE] TO [DeployExtensibilityRole];
GO
-- Create a stored procedure CRT can use to delete Example Entities.
IF OBJECT_ID(N'[ext].[CONTOSO_DELETEEXAMPLE]', N'P') IS NOT NULL
DROP PROCEDURE [ext].CONTOSO_DELETEEXAMPLE
GO
CREATE PROCEDURE [ext].CONTOSO_DELETEEXAMPLE
@bi_Id BIGINT
AS
BEGIN
SET NOCOUNT ON
DELETE FROM
ext.CONTOSO_EXAMPLETABLE
WHERE
EXAMPLEID = @bi_Id
END;
GO
GRANT EXECUTE ON [ext].CONTOSO_DELETEEXAMPLE TO [UsersRole];
GO
GRANT EXECUTE ON [ext].CONTOSO_DELETEEXAMPLE TO [DeployExtensibilityRole];
GO