Project

General

Profile

Download (63 KB) Statistics
| Branch: | Revision:
1
BEGIN
2

    
3
	DECLARE @n INT
4
	DECLARE @n_cdm INT
5
	DECLARE @n_bm INT
6
	DECLARE @str_n NVARCHAR (7)
7
	DECLARE @str_n_cdm NVARCHAR (7)
8
	DECLARE @str_n_bm NVARCHAR (7)
9

    
10

    
11
------------------------------------------- Taxon -------------------------------
12

    
13
	SELECT @n_bm = COUNT(*) FROM [EM2PESI].[DBO].TAXON
14
	SELECT @n_cdm = COUNT(*) FROM [CDM_EM2PESI].[DBO].TAXON
15
	SET @n = @n_bm - @n_cdm
16

    
17
	SET @str_n_bm = Cast(@n_bm AS NVARCHAR)
18
	SET @str_n_cdm = Cast(@n_cdm AS NVARCHAR)
19
	SET @str_n = Cast(@n AS NVARCHAR)
20

    
21
	IF @n = 0 BEGIN
22
		PRINT ('Both databases have the same number of taxa = ' + @str_n_bm)
23
	END ELSE PRINT ('WARNING: Both databases DO NOT have the same number of taxa, n_bm = ' + @str_n_bm + ' and n_cdm = '+ @str_n_cdm)
24
	SELECT @n = COUNT(*)
25
		FROM [EM2PESI].[DBO].TAXON bm_t INNER JOIN
26
		[CDM_EM2PESI].[DBO].TAXON cdm_t
27
		ON (bm_t.IdInSource = cdm_t.IdInSource OR bm_t.IdInSource IS NULL AND cdm_t.IdInSource IS NULL) 
28
		    AND ISNULL(bm_t.GUID, '') = ISNULL(cdm_t.GUID, '')
29
	SET @str_n = Cast(@n AS NVARCHAR)
30
	IF @n = @n_bm BEGIN
31
		PRINT ('To each taxon from one database there is an identical taxon in the other one (IdInSource, GUID)')
32
	END ELSE PRINT ('WARNING: Only ' + @str_n + ' taxa are identical (IdInSource, GUID) in both databases')
33

    
34
		/*
35
	SELECT cdm_t.Fullname, cdm_t.IdInSource, cdm_t.GUID, 'in CDM_EM2PESI but not in EM2PESI'
36
	FROM [CDM_EM2PESI].[DBO].TAXON cdm_t
37
	WHERE NOT EXISTS
38
		(SELECT * FROM [EM2PESI].[DBO].TAXON WHERE (IdInSource = cdm_t.IdInSource OR IdInSource IS NULL AND cdm_t.IdInSource IS NULL)
39
		AND ISNULL(GUID, '') = ISNULL(cdm_t.GUID, ''))
40
	ORDER BY cdm_t.IdInSource
41

    
42
	SELECT bm_t.Fullname, bm_t.IdInSource, bm_t.GUID, 'in EM2PESI but not in CDM_EM2PESI'
43
	FROM [EM2PESI].[DBO].TAXON bm_t
44
	WHERE NOT EXISTS
45
		(SELECT * FROM [CDM_EM2PESI].[DBO].TAXON WHERE (IdInSource = bm_t.IdInSource OR IdInSource IS NULL AND bm_t.IdInSource IS NULL)
46
		AND ISNULL(GUID, '') = ISNULL(bm_t.GUID, ''))
47
	ORDER BY bm_t.IdInSource
48

    
49
	*/
50

    
51
-- Source
52
/* Does not make much sense since the source for taxa is almost always the database itself which must be created as source
53
	SELECT @n_bm = COUNT(*) FROM [EM2PESI].[DBO].TAXON WHERE SourceFk IS NOT NULL
54
	SELECT @n_cdm = COUNT(*) FROM [CDM_EM2PESI].[DBO].TAXON WHERE SourceFk IS NOT NULL
55
	SET @n = @n_bm - @n_cdm
56

    
57
	SET @str_n_bm = Cast(@n_bm AS NVARCHAR)
58
	SET @str_n_cdm = Cast(@n_cdm AS NVARCHAR)
59
	SET @str_n = Cast(@n AS NVARCHAR)
60

    
61
	IF @n = 0 BEGIN
62
		PRINT ('Both databases have the same number of taxa which have a source = ' + @str_n_bm)
63
	END ELSE PRINT ('WARNING: Both databases DO NOT have the same number of taxa that have a source, n_bm = ' + @str_n_bm + ' and n_cdm = '+ @str_n_cdm)
64

    
65
		SELECT @n = COUNT(*) -- in both databases sources exist but are different
66
			FROM [EM2PESI].[DBO].TAXON bm_t INNER JOIN
67
			[CDM_EM2PESI].[DBO].TAXON cdm_t
68
			ON bm_t.IdInSource = cdm_t.IdInSource AND ISNULL(bm_t.GUID, '') = ISNULL(cdm_t.GUID, '') INNER JOIN
69
			[EM2PESI].[DBO].SOURCE bm_s ON bm_t.SourceFk = bm_s.SourceId INNER JOIN
70
			[CDM_EM2PESI].[DBO].TAXON cdm_s ON cdm_t.SourceFk = cdm_s.SourceId
71
			WHERE bm_s.RefIdInSource <> cdm_s.RefIdInSource OR ISNULL(bm_s.OriginalDB, '') <> ISNULL(cdm_s.OriginalDB, '')
72
		SET @str_n = Cast(@n AS NVARCHAR)
73
		IF @n = 0 BEGIN
74
			PRINT ('All identical taxa that have sources have the same source')
75
		END ELSE PRINT ('WARNING: ' + @str_n + ' identical taxa have different sources')
76
	/-*
77
		SELECT cdm_t.Fullname, cdm_s.RefIdInSource as Source_CDM_EM2PESI, bm_s.RefIdInSource as Source_EM2PESI
78
		FROM [EM2PESI].[DBO].TAXON bm_t INNER JOIN
79
		[CDM_EM2PESI].[DBO].TAXON cdm_t
80
		ON bm_t.IdInSource = cdm_t.IdInSource AND ISNULL(bm_t.GUID, '') = ISNULL(cdm_t.GUID, '') INNER JOIN
81
		[EM2PESI].[DBO].SOURCE bm_s ON bm_t.SourceFk = bm_s.SourceId INNER JOIN
82
		[CDM_EM2PESI].[DBO].TAXON cdm_s ON cdm_t.SourceFk = cdm_s.SourceId
83
		WHERE bm_s.RefIdInSource <> cdm_s.RefIdInSource OR ISNULL(bm_s.OriginalDB, '') <> ISNULL(cdm_s.OriginalDB, '')
84
	*-/
85
		SELECT @n_bm = COUNT(*) -- taxa with source only in EM2PESI
86
			FROM [EM2PESI].[DBO].TAXON bm_t INNER JOIN
87
			[CDM_EM2PESI].[DBO].TAXON cdm_t
88
			ON bm_t.IdInSource = cdm_t.IdInSource AND ISNULL(bm_t.GUID, '') = ISNULL(cdm_t.GUID, '') INNER JOIN
89
			[EM2PESI].[DBO].SOURCE bm_s ON bm_t.SourceFk = bm_s.SourceId
90
			WHERE NOT EXISTS
91
				(SELECT * FROM [CDM_EM2PESI].[DBO].TAXON INNER JOIN
92
				[CDM_EM2PESI].[DBO].TAXON cdm_s ON SourceFk = SourceId
93
				WHERE cdm_s.RefIdInSource = bm_s.RefIdInSource AND cdm_s.OriginalDB = bm_s.OriginalDB
94
				AND IdInSource = bm_t.IdInSource AND ISNULL(GUID, '') = ISNULL(bm_t.GUID, ''))
95
		SET @str_n_bm = Cast(@n_bm AS NVARCHAR)
96
		IF @n_bm > 0 PRINT ('WARNING: ' + @str_n_bm + ' taxa have sources in EM2PESI but not in CDM_EM2PESI')
97
	/-*
98
		SELECT cdm_t.Fullname, bm_s.Fullname as source_EM2PESI, 'in EM2PESI but not in CDM_EM2PESI'
99
		FROM [EM2PESI].[DBO].TAXON bm_t INNER JOIN
100
		[CDM_EM2PESI].[DBO].TAXON cdm_t
101
		ON bm_t.IdInSource = cdm_t.IdInSource AND ISNULL(bm_t.GUID, '') = ISNULL(cdm_t.GUID, '') INNER JOIN
102
		[EM2PESI].[DBO].SOURCE bm_s ON bm_t.SourceFk = bm_s.SourceId
103
		WHERE NOT EXISTS
104
		(SELECT * FROM [CDM_EM2PESI].[DBO].TAXON INNER JOIN
105
		[CDM_EM2PESI].[DBO].TAXON cdm_s ON SourceFk = SourceId
106
		WHERE cdm_s.RefIdInSource = bm_s.RefIdInSource AND cdm_s.OriginalDB = bm_s.OriginalDB
107
		AND IdInSource = bm_t.IdInSource AND ISNULL(GUID, '') = ISNULL(bm_t.GUID, ''))
108
	*-/
109
		SELECT @n_cdm = COUNT(*) -- taxa with source only in CDM_EM2PESI
110
			FROM [EM2PESI].[DBO].TAXON bm_t INNER JOIN
111
			[CDM_EM2PESI].[DBO].TAXON cdm_t
112
			ON bm_t.IdInSource = cdm_t.IdInSource AND ISNULL(bm_t.GUID, '') = ISNULL(cdm_t.GUID, '') INNER JOIN
113
			[CDM_EM2PESI].[DBO].SOURCE cdm_s ON cdm_t.SourceFk = cdm_s.SourceId
114
			WHERE NOT EXISTS
115
				(SELECT * FROM [EM2PESI].[DBO].TAXON INNER JOIN
116
				[EM2PESI].[DBO].TAXON bm_s ON SourceFk = SourceId
117
				WHERE cdm_s.RefIdInSource = bm_s.RefIdInSource AND cdm_s.OriginalDB = bm_s.OriginalDB
118
				AND IdInSource = cdm_t.IdInSource AND ISNULL(GUID, '') = ISNULL(cdm_t.GUID, ''))
119
		SET @str_n_cdm = Cast(@n_cdm AS NVARCHAR)
120
		IF @n_cdm > 0 PRINT ('WARNING: ' + @str_n_cdm + ' taxa have sources in CDM_EM2PESI but not in EM2PESI')
121
	/-*
122
		SELECT cdm_t.Fullname, cdm_s.Fullname as source_CDM_EM2PESI, 'in CDM_EM2PESI but not in EM2PESI'
123
		FROM [EM2PESI].[DBO].TAXON bm_t INNER JOIN
124
		[CDM_EM2PESI].[DBO].TAXON cdm_t
125
		ON bm_t.IdInSource = cdm_t.IdInSource AND ISNULL(bm_t.GUID, '') = ISNULL(cdm_t.GUID, '') INNER JOIN
126
		[CDM_EM2PESI].[DBO].SOURCE cdm_s ON bm_t.SourceFk = cdm_s.SourceId
127
		(SELECT * FROM [EM2PESI].[DBO].TAXON INNER JOIN
128
		[EM2PESI].[DBO].TAXON bm_s ON SourceFk = SourceId
129
		WHERE cdm_s.RefIdInSource = bm_s.RefIdInSource AND cdm_s.OriginalDB = bm_s.OriginalDB
130
		AND IdInSource = cdm_t.IdInSource AND ISNULL(GUID, '') = ISNULL(cdm_t.GUID, ''))
131
	*-/
132
		IF @n = 0 AND @n_cdm = 0 AND @n_bm = 0 BEGIN
133
			PRINT ('All identical taxa have the same source')
134
		END
135

    
136
*/
137

    
138
-- Authors
139
	SELECT @n = COUNT(*)
140
		FROM [EM2PESI].[DBO].TAXON bm_t INNER JOIN
141
		CDM_EM2PESI.[DBO].TAXON cdm_t
142
		ON bm_t.IdInSource = cdm_t.IdInSource AND ISNULL(bm_t.GUID, '') = ISNULL(cdm_t.GUID, '')
143
		WHERE ISNULL(bm_t.AuthorString, '') <> ISNULL(cdm_t.AuthorString, '')
144
	SET @str_n = Cast(@n AS NVARCHAR)
145
	IF @n = 0 BEGIN
146
		PRINT ('All identical taxa have the same authors')
147
	END ELSE PRINT ('WARNING: ' + @str_n + ' identical taxa DO NOT have the same authors')
148

    
149
	/*
150
		SELECT cdm_t.TaxonId as ID_CDM, bm_t.TaxonId as ID_SQL, cdm_t.FullName as FullName_CDM, bm_t.FullName as FullName_SQL,
151
			cdm_t.AuthorString as AuthorString_CDM, bm_t.AuthorString as AuthorString_SQL
152
		FROM [EM2PESI].[DBO].TAXON bm_t INNER JOIN
153
		CDM_EM2PESI.[DBO].TAXON cdm_t
154
		ON bm_t.IdInSource = cdm_t.IdInSource AND ISNULL(bm_t.GUID, '') = ISNULL(cdm_t.GUID, '')
155
		WHERE ISNULL(bm_t.AuthorString, '') <> ISNULL(cdm_t.AuthorString, '')
156
	*/
157

    
158
-- Epithets
159
	SELECT @n = COUNT(*)
160
		FROM [EM2PESI].[DBO].TAXON bm_t INNER JOIN
161
		[CDM_EM2PESI].[DBO].TAXON cdm_t
162
		ON bm_t.IdInSource = cdm_t.IdInSource AND ISNULL(bm_t.GUID, '') = ISNULL(cdm_t.GUID, '')
163
		WHERE ISNULL(bm_t.GenusOrUninomial, '') <> ISNULL(cdm_t.GenusOrUninomial, '') OR
164
		ISNULL(bm_t.InfraGenericEpithet, '') <> ISNULL(cdm_t.InfraGenericEpithet, '') OR
165
		ISNULL(bm_t.SpecificEpithet, '') <> ISNULL(cdm_t.SpecificEpithet, '') OR
166
		ISNULL(bm_t.InfraSpecificEpithet, '') <> ISNULL(cdm_t.InfraSpecificEpithet, '')
167
	SET @str_n = Cast(@n AS NVARCHAR)
168
	IF @n = 0 BEGIN
169
		PRINT ('All identical taxa have the same epithets')
170
	END ELSE PRINT ('WARNING: ' + @str_n + ' identical taxa DO NOT have the same epithets')
171

    
172
	/*
173
	SELECT  cdm_t.GenusOrUninomial as Genus_CDM, bm_t.GenusOrUninomial as Genus_SQL,
174
			cdm_t.InfraGenericEpithet as Infragenus_CDM, bm_t.InfraGenericEpithet as Infragenus_SQL,
175
			cdm_t.SpecificEpithet  as SpecificEpithet_CDM, bm_t.SpecificEpithet as SpecificEpithet_SQL,
176
			cdm_t.InfraSpecificEpithet as Infraspec_CDM, bm_t.InfraSpecificEpithet as Infraspec_SQL
177
		FROM [EM2PESI].[DBO].TAXON bm_t INNER JOIN
178
		CDM_EM2PESI.[DBO].TAXON cdm_t
179
		ON bm_t.IdInSource = cdm_t.IdInSource AND ISNULL(bm_t.GUID, '') = ISNULL(cdm_t.GUID, '')
180
		WHERE ISNULL(bm_t.GenusOrUninomial, '') <> ISNULL(cdm_t.GenusOrUninomial, '') OR
181
		ISNULL(bm_t.InfraGenericEpithet, '') <> ISNULL(cdm_t.InfraGenericEpithet, '') OR
182
		ISNULL(bm_t.SpecificEpithet, '') <> ISNULL(cdm_t.SpecificEpithet, '') OR
183
		ISNULL(bm_t.InfraSpecificEpithet, '') <> ISNULL(cdm_t.InfraSpecificEpithet, '')
184
	*/
185

    
186
-- Names
187
	SELECT @n = COUNT(*)
188
		FROM [EM2PESI].[DBO].TAXON bm_t INNER JOIN
189
		[CDM_EM2PESI].[DBO].TAXON cdm_t
190
		ON bm_t.IdInSource = cdm_t.IdInSource AND ISNULL(bm_t.GUID, '') = ISNULL(cdm_t.GUID, '')
191
		WHERE ISNULL(bm_t.WebSearchName, '') <> ISNULL(cdm_t.WebSearchName, '') OR
192
		ISNULL(bm_t.WebShowName, '') <> ISNULL(cdm_t.WebShowName, '') OR
193
		ISNULL(bm_t.DisplayName, '') <> ISNULL(cdm_t.DisplayName, '')
194
	SET @str_n = Cast(@n AS NVARCHAR)
195
	IF @n = 0 BEGIN
196
		PRINT ('All identical taxa have the same scientific name')
197
	END ELSE PRINT ('WARNING: ' + @str_n + ' identical taxa DO NOT have the same scientific name')
198
	/*
199
	SELECT cdm_t.WebSearchName as WebSearchName_CDM_EM2PESI, bm_t.WebSearchName as WebSearchName_EM2PESI,
200
		cdm_t.WebShowName as WebShowName_CDM_EM2PESI, bm_t.WebShowName as WebShowName_EM2PESI,
201
		cdm_t.FullName as FullName_CDM_EM2PESI, bm_t.FullName as FullName_EM2PESI,
202
		cdm_t.NomRefString as NomRefString_CDM_EM2PESI, bm_t.NomRefString as NomRefString_EM2PESI,
203
		cdm_t.DisplayName as DisplayName_CDM_EM2PESI, bm_t.DisplayName as DisplayName_EM2PESI,
204
		cdm_t.GUID as GUID_CDM, bm_t.GUID as GUID_SQL
205
	FROM [EM2PESI].[DBO].TAXON bm_t INNER JOIN
206
	CDM_EM2PESI.[DBO].TAXON cdm_t
207
	ON bm_t.IdInSource = cdm_t.IdInSource AND ISNULL(bm_t.GUID, '') = ISNULL(cdm_t.GUID, '')
208
	WHERE ISNULL(bm_t.WebSearchName, '') <> ISNULL(cdm_t.WebSearchName, '') OR
209
		ISNULL(bm_t.WebShowName, '') <> ISNULL(cdm_t.WebShowName, '') OR
210
		ISNULL(bm_t.DisplayName, '') <> ISNULL(cdm_t.DisplayName, '')
211
	*/
212

    
213
-- Full Name
214
	SELECT @n = COUNT(*)
215
		FROM [EM2PESI].[DBO].TAXON bm_t INNER JOIN
216
		CDM_EM2PESI.[DBO].TAXON cdm_t
217
		ON bm_t.IdInSource = cdm_t.IdInSource AND ISNULL(bm_t.GUID, '') = ISNULL(cdm_t.GUID, '')
218
		WHERE ISNULL(bm_t.FullName, '') <> ISNULL(cdm_t.FullName, '')
219
	SET @str_n = Cast(@n AS NVARCHAR)
220
	IF @n = 0 BEGIN
221
		PRINT ('All identical taxa have the same full name')
222
	END ELSE PRINT ('WARNING: ' + @str_n + ' identical taxa DO NOT have the same full name')
223

    
224
/*
225
	SELECT cdm_t.FullName as FullName_CDM_EM2PESI, bm_t.FullName as FullName_EM2PESI,
226
		cdm_t.WebSearchName as WebSearchName_CDM_EM2PESI, bm_t.WebSearchName as WebSearchName_EM2PESI,
227
		cdm_t.WebShowName as WebShowName_CDM_EM2PESI, bm_t.WebShowName as WebShowName_EM2PESI,
228
		cdm_t.FullName as FullName_CDM_EM2PESI, bm_t.FullName as FullName_EM2PESI,
229
		cdm_t.NomRefString as NomRefString_CDM_EM2PESI, bm_t.NomRefString as NomRefString_EM2PESI,
230
		cdm_t.DisplayName as DisplayName_CDM_EM2PESI, bm_t.DisplayName as DisplayName_EM2PESI,
231
		cdm_t.GUID as GUID_CDM, bm_t.GUID as GUID_SQL
232
	FROM [EM2PESI].[DBO].TAXON bm_t INNER JOIN
233
		CDM_EM2PESI.[DBO].TAXON cdm_t
234
		ON bm_t.IdInSource = cdm_t.IdInSource AND ISNULL(bm_t.GUID, '') = ISNULL(cdm_t.GUID, '')
235
	WHERE ISNULL(bm_t.FullName, '') <> ISNULL(cdm_t.FullName, '')
236
	ORDER BY cdm_t.FullName
237
	*/
238

    
239
-- Nom Ref
240

    
241
	SELECT @n = COUNT(*)
242
		FROM [EM2PESI].[DBO].TAXON bm_t INNER JOIN
243
		CDM_EM2PESI.[DBO].TAXON cdm_t
244
		ON bm_t.IdInSource = cdm_t.IdInSource AND ISNULL(bm_t.GUID, '') = ISNULL(cdm_t.GUID, '')
245
		WHERE ISNULL(bm_t.NomRefString, '') <> ISNULL(cdm_t.NomRefString, '')
246
	SET @str_n = Cast(@n AS NVARCHAR)
247
	IF @n = 0 BEGIN
248
		PRINT ('All identical taxa have the same nomenclatural reference')
249
	END ELSE PRINT ('WARNING: ' + @str_n + ' identical taxa DO NOT have the same nomenclatural reference')
250
	/*
251
	SELECT cdm_t.FullName as FullName_CDM_EM2PESI, bm_t.FullName as FullName_EM2PESI,
252
		cdm_t.NomRefString as NomRefString_CDM_EM2PESI, bm_t.NomRefString as NomRefString_EM2PESI,
253
		cdm_t.DisplayName as DisplayName_CDM_EM2PESI, bm_t.DisplayName as DisplayName_EM2PESI,
254
		cdm_t.GUID as GUID_CDM, bm_t.GUID as GUID_SQL
255
	FROM [EM2PESI].[DBO].TAXON bm_t INNER JOIN
256
		CDM_EM2PESI.[DBO].TAXON cdm_t
257
	ON bm_t.IdInSource = cdm_t.IdInSource AND ISNULL(bm_t.GUID, '') = ISNULL(cdm_t.GUID, '')
258
	WHERE ISNULL(bm_t.NomRefString, '') <> ISNULL(cdm_t.NomRefString, '')
259
	ORDER BY cdm_t.NomRefString
260
	*/
261

    
262
-- Ranks
263
	SELECT @n = COUNT(*)
264
		FROM [EM2PESI].[DBO].TAXON bm_t INNER JOIN
265
		[CDM_EM2PESI].[DBO].TAXON cdm_t
266
		ON bm_t.IdInSource = cdm_t.IdInSource AND ISNULL(bm_t.GUID, '') = ISNULL(cdm_t.GUID, '')
267
		WHERE ISNULL(bm_t.KingdomFk, 0) <> ISNULL(cdm_t.KingdomFk, 0) OR
268
		ISNULL(bm_t.RankFk, 0) <> ISNULL(cdm_t.RankFk, 0) OR
269
		ISNULL(bm_t.RankCache, '') <> ISNULL(cdm_t.RankCache, '')
270
	SET @str_n = Cast(@n AS NVARCHAR)
271
	IF @n = 0 BEGIN
272
		PRINT ('All identical taxa have the same rank (KingdomFk, RankFk, RankCache)')
273
	END ELSE PRINT ('WARNING: ' + @str_n + ' identical taxa DO NOT have the same rank (KingdomFk, RankFk, RankCache)')
274
	/*
275
	SELECT cdm_t.Fullname, cdm_t.KingdomFk as Kingdom_CDM_EM2PESI, bm_t.KingdomFk as Kingdom_EM2PESI,
276
	cdm_t.RankFk as RankFk_CDM_EM2PESI, bm_t.RankFk as RankFk_EM2PESI,
277
	cdm_t.RankCache as Rank_CDM_EM2PESI, bm_t.RankCache as Rank_EM2PESI
278
	FROM [EM2PESI].[DBO].TAXON bm_t INNER JOIN
279
	[CDM_EM2PESI].[DBO].TAXON cdm_t
280
	ON bm_t.IdInSource = cdm_t.IdInSource AND ISNULL(bm_t.GUID, '') = ISNULL(cdm_t.GUID, '')
281
	WHERE ISNULL(bm_t.KingdomFk, 0) <> ISNULL(cdm_t.KingdomFk, 0) OR
282
	ISNULL(bm_t.RankFk, 0) <> ISNULL(cdm_t.RankFk, 0) OR
283
	ISNULL(bm_t.RankCache, '') <> ISNULL(cdm_t.RankCache, '')
284
	*/
285

    
286
-- Status
287
	SELECT @n = COUNT(*)
288
		FROM [EM2PESI].[DBO].TAXON bm_t INNER JOIN
289
		[CDM_EM2PESI].[DBO].TAXON cdm_t
290
		ON bm_t.IdInSource = cdm_t.IdInSource AND ISNULL(bm_t.GUID, '') = ISNULL(cdm_t.GUID, '')
291
		WHERE ISNULL(bm_t.NameStatusCache, '') <> ISNULL(cdm_t.NameStatusCache, '') OR
292
		ISNULL(bm_t.TaxonStatusCache, '') <> ISNULL(cdm_t.TaxonStatusCache, '')
293
	SET @str_n = Cast(@n AS NVARCHAR)
294
	IF @n = 0 BEGIN
295
		PRINT ('All identical taxa have the same status (NameStatusCache, TaxonStatusCache)')
296
	END ELSE PRINT ('WARNING: ' + @str_n + ' identical taxa DO NOT have the same status (NameStatusCache, TaxonStatusCache)')
297
	/*
298
	SELECT cdm_t.Fullname, cdm_t.NameStatusFk as NameStatusFk_CDM_EM2PESI, bm_t.NameStatusFk as NameStatusFk_EM2PESI,
299
	cdm_t.NameStatusCache as NameStatus_CDM_EM2PESI, bm_t.NameStatusCache as NameStatus_EM2PESI,
300
	cdm_t.TaxonStatusFk as TaxonStatusFk_CDM_EM2PESI, bm_t.TaxonStatusFk as TaxonStatusFk_EM2PESI,
301
	cdm_t.TaxonStatusCache as TaxonStatus_CDM_EM2PESI, bm_t.TaxonStatusCache as TaxonStatus_EM2PESI
302
	FROM [EM2PESI].[DBO].TAXON bm_t INNER JOIN
303
	[CDM_EM2PESI].[DBO].TAXON cdm_t
304
	ON bm_t.IdInSource = cdm_t.IdInSource AND ISNULL(bm_t.GUID, '') = ISNULL(cdm_t.GUID, '')
305
	WHERE ISNULL(bm_t.NameStatusCache, '') <> ISNULL(cdm_t.NameStatusCache, '') OR
306
	ISNULL(bm_t.TaxonStatusCache, '') <> ISNULL(cdm_t.TaxonStatusCache, '')
307
	*/
308

    
309
-- Types
310
	SELECT @n_bm = COUNT(*) FROM [EM2PESI].[DBO].TAXON WHERE TypeNameFk IS NOT NULL
311
	SELECT @n_cdm = COUNT(*) FROM [CDM_EM2PESI].[DBO].TAXON WHERE TypeNameFk IS NOT NULL
312
	SET @n = @n_bm - @n_cdm
313

    
314
	SET @str_n_bm = Cast(@n_bm AS NVARCHAR)
315
	SET @str_n_cdm = Cast(@n_cdm AS NVARCHAR)
316
	SET @str_n = Cast(@n AS NVARCHAR)
317

    
318
	IF @n = 0 BEGIN
319
		PRINT ('Both databases have the same number of taxa which have a type = ' + @str_n_bm)
320
	END ELSE PRINT ('WARNING: Both databases DO NOT have the same number of taxa that have a type, n_bm = ' + @str_n_bm + ' and n_cdm = '+ @str_n_cdm)
321

    
322
		SELECT @n = COUNT(*) -- in both databases types exist but are different
323
			FROM [EM2PESI].[DBO].TAXON bm_t INNER JOIN
324
			[CDM_EM2PESI].[DBO].TAXON cdm_t
325
			ON bm_t.IdInSource = cdm_t.IdInSource AND ISNULL(bm_t.GUID, '') = ISNULL(cdm_t.GUID, '') INNER JOIN
326
			[EM2PESI].[DBO].TAXON bm_pt ON bm_t.TypeNameFk = bm_pt.TaxonId INNER JOIN
327
			[CDM_EM2PESI].[DBO].TAXON cdm_pt ON cdm_t.TypeNameFk = cdm_pt.TaxonId
328
			WHERE bm_pt.IdInSource <> cdm_pt.IdInSource OR ISNULL(bm_pt.GUID, '') <> ISNULL(cdm_pt.GUID, '')
329
		SET @str_n = Cast(@n AS NVARCHAR)
330
		IF @n = 0 BEGIN
331
			PRINT ('All identical taxa that have types have the same type')
332
		END ELSE PRINT ('WARNING: ' + @str_n + ' identical taxa have different types')
333
	/*
334
		SELECT cdm_t.Fullname, cdm_pt.Fullname as Type_CDM_EM2PESI, bm_pt.Fullname as Type_EM2PESI
335
		FROM [EM2PESI].[DBO].TAXON bm_t INNER JOIN
336
		[CDM_EM2PESI].[DBO].TAXON cdm_t
337
		ON bm_t.IdInSource = cdm_t.IdInSource AND ISNULL(bm_t.GUID, '') = ISNULL(cdm_t.GUID, '') INNER JOIN
338
		[EM2PESI].[DBO].TAXON bm_pt ON bm_t.TypeNameFk = bm_pt.TaxonId INNER JOIN
339
		[CDM_EM2PESI].[DBO].TAXON cdm_pt ON cdm_t.TypeNameFk = cdm_pt.TaxonId
340
		WHERE bm_pt.IdInSource <> cdm_pt.IdInSource OR ISNULL(bm_pt.GUID, '') <> ISNULL(cdm_pt.GUID, '')
341
		ORDER BY cdm_t.Fullname
342
	*/
343
		SELECT @n_bm = COUNT(*) -- taxa with type only in EM2PESI
344
			FROM [EM2PESI].[DBO].TAXON bm_t INNER JOIN
345
			[CDM_EM2PESI].[DBO].TAXON cdm_t
346
			ON bm_t.IdInSource = cdm_t.IdInSource AND ISNULL(bm_t.GUID, '') = ISNULL(cdm_t.GUID, '') INNER JOIN
347
			[EM2PESI].[DBO].TAXON bm_pt ON bm_t.TypeNameFk = bm_pt.TaxonId
348
			WHERE NOT EXISTS
349
				(SELECT * FROM [CDM_EM2PESI].[DBO].TAXON
350
				WHERE IdInSource = bm_pt.IdInSource AND ISNULL(GUID, '') = ISNULL(bm_pt.GUID, ''))
351
		SET @str_n_bm = Cast(@n_bm AS NVARCHAR)
352
		IF @n_bm > 0 PRINT ('WARNING: ' + @str_n_bm + ' identical taxa have types in EM2PESI but not in CDM_EM2PESI')
353
	/*
354
		SELECT cdm_t.Fullname, bm_pt.Fullname as Type_EM2PESI, 'in EM2PESI but not in CDM_EM2PESI'
355
		FROM [EM2PESI].[DBO].TAXON bm_t INNER JOIN
356
		[CDM_EM2PESI].[DBO].TAXON cdm_t
357
		ON bm_t.IdInSource = cdm_t.IdInSource AND ISNULL(bm_t.GUID, '') = ISNULL(cdm_t.GUID, '') INNER JOIN
358
		[EM2PESI].[DBO].TAXON bm_pt ON bm_t.TypeNameFk = bm_pt.TaxonId
359
		WHERE NOT EXISTS
360
		(SELECT * FROM [CDM_EM2PESI].[DBO].TAXON
361
		WHERE IdInSource = bm_pt.IdInSource AND ISNULL(GUID, '') = ISNULL(bm_pt.GUID, ''))
362
		ORDER BY cdm_t.Fullname
363
	*/
364
		SELECT @n_cdm = COUNT(*) -- taxa with type only in CDM_EM2PESI
365
			FROM [EM2PESI].[DBO].TAXON bm_t INNER JOIN
366
			[CDM_EM2PESI].[DBO].TAXON cdm_t
367
			ON bm_t.IdInSource = cdm_t.IdInSource AND ISNULL(bm_t.GUID, '') = ISNULL(cdm_t.GUID, '') INNER JOIN
368
			[CDM_EM2PESI].[DBO].TAXON cdm_pt ON cdm_t.TypeNameFk = cdm_pt.TaxonId
369
			WHERE NOT EXISTS
370
				(SELECT * FROM [EM2PESI].[DBO].TAXON
371
				WHERE IdInSource = cdm_pt.IdInSource AND ISNULL(GUID, '') = ISNULL(cdm_pt.GUID, ''))
372
		SET @str_n_cdm = Cast(@n_cdm AS NVARCHAR)
373
		IF @n_cdm > 0 PRINT ('WARNING: ' + @str_n_cdm + ' identical taxa have types in CDM_EM2PESI but not in EM2PESI')
374
	/*
375
		SELECT cdm_t.Fullname, cdm_pt.Fullname as Type_CDM_EM2PESI, 'in CDM_EM2PESI but not in EM2PESI'
376
		FROM [EM2PESI].[DBO].TAXON bm_t INNER JOIN
377
		[CDM_EM2PESI].[DBO].TAXON cdm_t
378
		ON bm_t.IdInSource = cdm_t.IdInSource AND ISNULL(bm_t.GUID, '') = ISNULL(cdm_t.GUID, '') INNER JOIN
379
		[CDM_EM2PESI].[DBO].TAXON cdm_pt ON cdm_t.TypeNameFk = cdm_pt.TaxonId
380
		WHERE NOT EXISTS
381
		(SELECT * FROM [EM2PESI].[DBO].TAXON
382
		WHERE IdInSource = cdm_pt.IdInSource AND ISNULL(GUID, '') = ISNULL(cdm_pt.GUID, ''))
383
	*/
384
		IF @n = 0 AND @n_cdm = 0 AND @n_bm = 0 BEGIN
385
			PRINT ('All identical taxa have the same type')
386
		END
387

    
388
-- QualityStatus
389
	SELECT @n = COUNT(*)
390
		FROM [EM2PESI].[DBO].TAXON bm_t INNER JOIN
391
		[CDM_EM2PESI].[DBO].TAXON cdm_t
392
		ON bm_t.IdInSource = cdm_t.IdInSource AND ISNULL(bm_t.GUID, '') = ISNULL(cdm_t.GUID, '')
393
		WHERE ISNULL(bm_t.QualityStatusCache, '') <> ISNULL(cdm_t.QualityStatusCache, '')
394
	SET @str_n = Cast(@n AS NVARCHAR)
395
	IF @n = 0 BEGIN
396
		PRINT ('All identical taxa have the same quality status (QualityStatusCache)')
397
	END ELSE PRINT ('WARNING: ' + @str_n + ' identical taxa DO NOT have the same quality status (QualityStatusCache)')
398
	/*
399
	SELECT cdm_t.Fullname, cdm_t.QualityStatusCache as QualityStatus_CDM_EM2PESI, bm_t.QualityStatusCache as QualityStatus_EM2PESI
400
	FROM [EM2PESI].[DBO].TAXON bm_t INNER JOIN
401
	[CDM_EM2PESI].[DBO].TAXON cdm_t
402
	ON bm_t.IdInSource = cdm_t.IdInSource AND ISNULL(bm_t.GUID, '') = ISNULL(cdm_t.GUID, '')
403
	WHERE ISNULL(bm_t.QualityStatusCache, '') <> ISNULL(cdm_t.QualityStatusCache, '')
404
	*/
405

    
406
-- Experts
407
	SELECT @n = COUNT(*)
408
		FROM [EM2PESI].[DBO].TAXON bm_t INNER JOIN
409
		[CDM_EM2PESI].[DBO].TAXON cdm_t
410
		ON bm_t.IdInSource = cdm_t.IdInSource AND ISNULL(bm_t.GUID, '') = ISNULL(cdm_t.GUID, '')
411
		WHERE ISNULL(bm_t.ExpertName, '') <> ISNULL(cdm_t.ExpertName, '') OR
412
		ISNULL(bm_t.SpeciesExpertName, '') <> ISNULL(cdm_t.SpeciesExpertName, '')
413
	SET @str_n = Cast(@n AS NVARCHAR)
414
	IF @n = 0 BEGIN
415
		PRINT ('All identical taxa have the same experts (ExpertName, SpeciesExpertName)')
416
	END ELSE PRINT ('WARNING: ' + @str_n + ' identical taxa DO NOT have the same experts (ExpertName, SpeciesExpertName)')
417
	/*
418
	SELECT cdm_t.Fullname, cdm_t.ExpertName as ExpertName_CDM_EM2PESI, bm_t.ExpertName as ExpertName_EM2PESI,
419
	cdm_t.SpeciesExpertName as SpeciesExpertName_CDM_EM2PESI, bm_t.SpeciesExpertName as SpeciesExpertName_EM2PESI
420
	FROM [EM2PESI].[DBO].TAXON bm_t INNER JOIN
421
	[CDM_EM2PESI].[DBO].TAXON cdm_t
422
	ON bm_t.IdInSource = cdm_t.IdInSource AND ISNULL(bm_t.GUID, '') = ISNULL(cdm_t.GUID, '')
423
	WHERE ISNULL(bm_t.ExpertName, '') <> ISNULL(cdm_t.ExpertName, '') OR
424
	ISNULL(bm_t.SpeciesExpertName, '') <> ISNULL(cdm_t.SpeciesExpertName, '')
425
	*/
426

    
427
-- Citation
428
	SELECT @n = COUNT(*)
429
		FROM [EM2PESI].[DBO].TAXON bm_t INNER JOIN
430
		[CDM_EM2PESI].[DBO].TAXON cdm_t
431
		ON bm_t.IdInSource = cdm_t.IdInSource AND ISNULL(bm_t.GUID, '') = ISNULL(cdm_t.GUID, '')
432
		WHERE ISNULL(bm_t.CacheCitation, '') <> ISNULL(cdm_t.CacheCitation, '')
433
	SET @str_n = Cast(@n AS NVARCHAR)
434
	IF @n = 0 BEGIN
435
		PRINT ('All identical taxa have the same CacheCitation')
436
	END ELSE PRINT ('WARNING: ' + @str_n + ' identical taxa DO NOT have the same CacheCitation')
437
	/*
438
	SELECT cdm_t.Fullname, cdm_t.CacheCitation as CacheCitation_CDM_EM2PESI, bm_t.CacheCitation as CacheCitation_EM2PESI
439
	FROM [EM2PESI].[DBO].TAXON bm_t INNER JOIN
440
	[CDM_EM2PESI].[DBO].TAXON cdm_t
441
	ON bm_t.IdInSource = cdm_t.IdInSource AND ISNULL(bm_t.GUID, '') = ISNULL(cdm_t.GUID, '')
442
	WHERE ISNULL(bm_t.CacheCitation, '') <> ISNULL(cdm_t.CacheCitation, '')
443
	*/
444

    
445
-- Original database
446
	SELECT @n = COUNT(*)
447
		FROM [EM2PESI].[DBO].TAXON bm_t INNER JOIN
448
		[CDM_EM2PESI].[DBO].TAXON cdm_t
449
		ON bm_t.IdInSource = cdm_t.IdInSource AND ISNULL(bm_t.GUID, '') = ISNULL(cdm_t.GUID, '')
450
		WHERE ISNULL(bm_t.OriginalDB, '') <> ISNULL(cdm_t.OriginalDB, '')
451
	SET @str_n = Cast(@n AS NVARCHAR)
452
	IF @n = 0 BEGIN
453
		PRINT ('All identical taxa have the same OriginalDB')
454
	END ELSE PRINT ('WARNING: ' + @str_n + ' identical taxa DO NOT have the same OriginalDB')
455
	/*
456
	SELECT cdm_t.Fullname, cdm_t.OriginalDB as OriginalDB_CDM_EM2PESI, bm_t.OriginalDB as OriginalDB_EM2PESI
457
	FROM [EM2PESI].[DBO].TAXON bm_t INNER JOIN
458
	[CDM_EM2PESI].[DBO].TAXON cdm_t
459
	ON bm_t.IdInSource = cdm_t.IdInSource AND ISNULL(bm_t.GUID, '') = ISNULL(cdm_t.GUID, '')
460
	WHERE ISNULL(bm_t.OriginalDB, '') <> ISNULL(cdm_t.OriginalDB, '')
461
	*/
462

    
463
-- Action
464
	SELECT @n = COUNT(*)
465
		FROM [EM2PESI].[DBO].TAXON bm_t INNER JOIN
466
		[CDM_EM2PESI].[DBO].TAXON cdm_t
467
		ON bm_t.IdInSource = cdm_t.IdInSource AND ISNULL(bm_t.GUID, '') = ISNULL(cdm_t.GUID, '')
468
		WHERE ISNULL(bm_t.LastAction, '') <> ISNULL(cdm_t.LastAction, '') OR
469
		convert(smalldatetime, ISNULL(bm_t.LastActionDate, '00:00:00'))  <>
470
		convert(smalldatetime, ISNULL(cdm_t.LastActionDate, '00:00:00'))
471
	SET @str_n = Cast(@n AS NVARCHAR)
472
	IF @n = 0 BEGIN
473
		PRINT ('All identical taxa have the same last actions (LastAction, LastActionDate)')
474
	END ELSE PRINT ('WARNING: ' + @str_n + ' identical taxa DO NOT have the last actions (LastAction, LastActionDate)')
475
	/*
476
	SELECT cdm_t.Fullname, cdm_t.LastAction as LastAction_CDM_EM2PESI, bm_t.LastAction as LastAction_EM2PESI,
477
	cdm_t.LastActionDate as LastActionDate_CDM_EM2PESI, bm_t.LastActionDate as LastActionDate_EM2PESI
478
	FROM [EM2PESI].[DBO].TAXON bm_t INNER JOIN
479
	[CDM_EM2PESI].[DBO].TAXON cdm_t
480
	ON bm_t.IdInSource = cdm_t.IdInSource AND ISNULL(bm_t.GUID, '') = ISNULL(cdm_t.GUID, '')
481
	WHERE ISNULL(bm_t.LastAction, '') <> ISNULL(cdm_t.LastAction, '') OR
482
	convert(smalldatetime, ISNULL(bm_t.LastActionDate, '00:00:00')) <>
483
	convert(smalldatetime, ISNULL(cdm_t.LastActionDate, '00:00:00'))
484
	*/
485

    
486

    
487
	
488
-- Parents
489

    
490
	PRINT ' '
491
	PRINT 'PARENTS'
492
	SELECT @n_bm = COUNT(*) FROM [EM2PESI].[DBO].TAXON WHERE ParentTaxonFk IS NOT NULL
493
	SELECT @n_cdm = COUNT(*) FROM [CDM_EM2PESI].[DBO].TAXON WHERE ParentTaxonFk IS NOT NULL
494
	SET @n = @n_bm - @n_cdm
495

    
496
	SET @str_n_bm = Cast(@n_bm AS NVARCHAR)
497
	SET @str_n_cdm = Cast(@n_cdm AS NVARCHAR)
498
	SET @str_n = Cast(@n AS NVARCHAR)
499

    
500
	IF @n = 0 BEGIN
501
		PRINT ('Both databases have the same number of taxa which have a parent = ' + @str_n_bm)
502
	END ELSE PRINT ('WARNING: Both databases DO NOT have the same number of taxa that have a parent, n_bm = ' + @str_n_bm + ' and n_cdm = '+ @str_n_cdm)
503

    
504
		SELECT @n = COUNT(*) -- in both databases parents exist but are different
505
			FROM [EM2PESI].[DBO].TAXON bm_t INNER JOIN
506
			[CDM_EM2PESI].[DBO].TAXON cdm_t
507
			ON bm_t.IdInSource = cdm_t.IdInSource AND ISNULL(bm_t.GUID, '') = ISNULL(cdm_t.GUID, '') INNER JOIN
508
			[EM2PESI].[DBO].TAXON bm_pt ON bm_t.ParentTaxonFk = bm_pt.TaxonId INNER JOIN
509
			[CDM_EM2PESI].[DBO].TAXON cdm_pt ON cdm_t.ParentTaxonFk = cdm_pt.TaxonId
510
			WHERE bm_pt.IdInSource <> cdm_pt.IdInSource OR ISNULL(bm_pt.GUID, '') <> ISNULL(cdm_pt.GUID, '')
511
		SET @str_n = Cast(@n AS NVARCHAR)
512
		IF @n = 0 BEGIN
513
			PRINT ('All identical taxa that have parents have the same parent')
514
		END ELSE PRINT ('WARNING: ' + @str_n + ' identical taxa have different parents')
515
	/*
516
		SELECT  cdm_t.FullName as Child_CDM, cdm_pt.Fullname as Parent_CDM_EM2PESI, bm_t.FullName as child_sql,  bm_pt.Fullname as Parent_EM2PESI
517
		FROM [EM2PESI].[DBO].TAXON bm_t INNER JOIN
518
			[CDM_EM2PESI].[DBO].TAXON cdm_t ON bm_t.IdInSource = cdm_t.IdInSource AND ISNULL(bm_t.GUID, '') = ISNULL(cdm_t.GUID, '') INNER JOIN
519
			[EM2PESI].[DBO].TAXON bm_pt ON bm_t.ParentTaxonFk = bm_pt.TaxonId INNER JOIN
520
		[	CDM_EM2PESI].[DBO].TAXON cdm_pt ON cdm_t.ParentTaxonFk = cdm_pt.TaxonId
521
		WHERE bm_pt.IdInSource <> cdm_pt.IdInSource OR ISNULL(bm_pt.GUID, '') <> ISNULL(cdm_pt.GUID, '')
522
	*/
523
		SELECT @n_bm = COUNT(*) -- taxa with parent only in EM2PESI
524
			FROM [EM2PESI].[DBO].TAXON bm_t INNER JOIN
525
			[CDM_EM2PESI].[DBO].TAXON cdm_t
526
			ON bm_t.IdInSource = cdm_t.IdInSource AND ISNULL(bm_t.GUID, '') = ISNULL(cdm_t.GUID, '') INNER JOIN
527
			[EM2PESI].[DBO].TAXON bm_pt ON bm_t.ParentTaxonFk = bm_pt.TaxonId
528
			WHERE NOT EXISTS
529
				(SELECT * FROM [CDM_EM2PESI].[DBO].TAXON
530
				WHERE IdInSource = bm_pt.IdInSource AND ISNULL(GUID, '') = ISNULL(bm_pt.GUID, ''))
531
		SET @str_n_bm = Cast(@n_bm AS NVARCHAR)
532
		IF @n_bm > 0 BEGIN 
533
			PRINT ('WARNING: ' + @str_n_bm + ' identical taxa have parents in EM2PESI but not in CDM_EM2PESI')
534
		END ELSE PRINT ('All identical taxa that have parents in EM2PESI do have parents in CDM_EM2PESI')
535

    
536
	/*
537
		SELECT cdm_t.Fullname ChildName, bm_pt.Fullname as Parent_EM2PESI, 'in EM2PESI but not in CDM_EM2PESI'
538
		FROM [EM2PESI].[DBO].TAXON bm_t 
539
			INNER JOIN [EM2PESI].[DBO].TAXON bm_pt ON bm_t.ParentTaxonFk = bm_pt.TaxonId
540
			INNER JOIN [CDM_EM2PESI].[DBO].TAXON cdm_t ON ISNULL(bm_t.GUID, '') = ISNULL(cdm_t.GUID, '') 
541
		
542
		WHERE cdm_t.ParentTaxonFk  IS NULL AND NOT EXISTS 
543
		(SELECT * FROM [CDM_EM2PESI].[DBO].TAXON cdm_pt
544
		WHERE (cdm_pt.IdInSource = bm_pt.IdInSource OR cdm_pt.IdInSource IS NULL AND bm_pt.IdInSource IS NULL) 
545
				AND ISNULL(cdm_pt.GUID, '') = ISNULL(bm_pt.GUID, '')
546
				AND cdm_t.ParentTaxonFk = cdm_pt.TaxonId)
547
		ORDER BY cdm_t.Fullname
548

    
549
	*/
550
		SELECT @n_cdm = COUNT(*) -- taxa with parent only in CDM_EM2PESI
551
			FROM [EM2PESI].[DBO].TAXON bm_t INNER JOIN
552
			[CDM_EM2PESI].[DBO].TAXON cdm_t
553
			ON bm_t.IdInSource = cdm_t.IdInSource AND ISNULL(bm_t.GUID, '') = ISNULL(cdm_t.GUID, '') INNER JOIN
554
			[CDM_EM2PESI].[DBO].TAXON cdm_pt ON cdm_t.ParentTaxonFk = cdm_pt.TaxonId
555
			WHERE NOT EXISTS
556
				(SELECT * FROM [EM2PESI].[DBO].TAXON
557
				WHERE IdInSource = cdm_pt.IdInSource AND ISNULL(GUID, '') = ISNULL(cdm_pt.GUID, ''))
558
		SET @str_n_cdm = Cast(@n_cdm AS NVARCHAR)
559
		IF @n_cdm > 0 BEGIN 
560
			PRINT ('WARNING: ' + @str_n_cdm + ' identical taxa have parents in CDM_EM2PESI but not in EM2PESI')
561
		END ELSE PRINT('All identical taxa that have parents in CDM_EM2PESI do have parents in EM2PESI')
562
		
563
	/*
564
		SELECT bm_t.Fullname ChildName, cdm_pt.Fullname as Parent_CDM, 'in CDM_EM2PESI but not in EM2PESI'
565
		FROM [CDM_EM2PESI].[DBO].TAXON cdm_t 
566
			INNER JOIN [CDM_EM2PESI].[DBO].TAXON cdm_pt ON cdm_t.ParentTaxonFk = cdm_pt.TaxonId
567
			INNER JOIN [EM2PESI].[DBO].TAXON bm_t ON ISNULL(cdm_t.GUID, '') = ISNULL(bm_t.GUID, '') 
568
		
569
		WHERE bm_t.ParentTaxonFk  IS NULL AND NOT EXISTS 
570
		(SELECT * FROM [EM2PESI].[DBO].TAXON bm_pt
571
		WHERE (bm_pt.IdInSource = cdm_pt.IdInSource OR bm_pt.IdInSource IS NULL AND cdm_pt.IdInSource IS NULL) 
572
				AND ISNULL(bm_pt.GUID, '') = ISNULL(cdm_pt.GUID, '')
573
				AND bm_t.ParentTaxonFk = bm_pt.TaxonId)
574
		ORDER BY bm_t.Fullname
575
	*/
576
		IF @n = 0 AND @n_cdm = 0 AND @n_bm = 0 BEGIN
577
			PRINT ('All identical taxa have the same parent')
578
		END
579

    
580
-- TreeIndex
581
/* This is not checked. This field should be created by the PESI-Procedure recalculateallstoredpaths.
582
	Actually checking the parents of the same taxa is enough to ensure the compatibility of the taxonomical tree as a whole.
583
	See the Parent section
584
*/
585
	SELECT @n_bm = COUNT(*) FROM [EM2PESI].[DBO].TAXON WHERE TreeIndex IS NOT NULL
586
	SELECT @n_cdm = COUNT(*) FROM [CDM_EM2PESI].[DBO].TAXON WHERE TreeIndex IS NOT NULL
587
	SET @n = @n_bm - @n_cdm
588

    
589
	SET @str_n_bm = Cast(@n_bm AS NVARCHAR)
590
	SET @str_n_cdm = Cast(@n_cdm AS NVARCHAR)
591
	SET @str_n = Cast(@n AS NVARCHAR)
592

    
593
	IF @n = 0 BEGIN
594
		PRINT ('Both databases have the same number of taxa which have a tree index = ' + @str_n_bm)
595
	END ELSE PRINT ('WARNING: Both databases DO NOT have the same number of taxa that have a tree index, n_bm = ' + @str_n_bm + ' and n_cdm = '+ @str_n_cdm)
596
	
597
------------------------------------------- RelTaxon -------------------------------
598
	PRINT ' '
599
	PRINT 'RELATIONSHIP'
600
	
601
-- taxonomical relationships between taxa and nomenclatural relationships between names
602
	SELECT @n_bm = COUNT(*) FROM [EM2PESI].[DBO].RELTAXON
603
	SELECT @n_cdm = COUNT(*) FROM [CDM_EM2PESI].[DBO].RELTAXON
604
	SET @n = @n_bm - @n_cdm
605

    
606
	SET @str_n_bm = Cast(@n_bm AS NVARCHAR)
607
	SET @str_n_cdm = Cast(@n_cdm AS NVARCHAR)
608
	SET @str_n = Cast(@n AS NVARCHAR)
609

    
610
	IF @n = 0 BEGIN
611
		PRINT ('Both databases have the same number of relationship records = ' + @str_n_bm)
612
	END ELSE PRINT ('WARNING: Both databases DO NOT have the same number of relationship records, n_bm = ' + @str_n_bm + ' and n_cdm = '+ @str_n_cdm)
613

    
614
		SELECT @n_bm = COUNT(*) -- relationships only in EM2PESI
615
			FROM [EM2PESI].[DBO].RELTAXON bm_rt INNER JOIN
616
			[EM2PESI].[DBO].TAXON bm_t1 ON bm_rt.TaxonFk1 = bm_t1.TaxonId INNER JOIN
617
			[EM2PESI].[DBO].TAXON bm_t2 ON bm_rt.TaxonFk2 = bm_t2.TaxonId INNER JOIN
618
			[CDM_EM2PESI].[DBO].TAXON cdm_t1
619
			ON bm_t1.IdInSource = cdm_t1.IdInSource AND ISNULL(bm_t1.GUID, '') = ISNULL(cdm_t1.GUID, '') INNER JOIN
620
			[CDM_EM2PESI].[DBO].TAXON cdm_t2
621
			ON bm_t2.IdInSource = cdm_t2.IdInSource AND ISNULL(bm_t2.GUID, '') = ISNULL(cdm_t2.GUID, '')
622
			WHERE NOT EXISTS
623
			(SELECT * FROM [CDM_EM2PESI].[DBO].RELTAXON
624
			WHERE TaxonFk1 = cdm_t1.TaxonId AND TaxonFk2 = cdm_t2.TaxonId AND RelQualifierCache = bm_rt.RelQualifierCache)
625
		SET @str_n_bm = Cast(@n_bm AS NVARCHAR)
626
		IF @n_bm = 0 BEGIN
627
			PRINT ('All relationships in EM2PESI exist also in CDM_EM2PESI')
628
		END ELSE PRINT ('WARNING: ' + @str_n_bm + ' existing relationships for identical taxa in EM2PESI DO NOT exist in CDM_EM2PESI')
629
	/*
630
		SELECT bm_t1.Fullname, bm_rt.RelQualifierCache, bm_t2.Fullname, 'in EM2PESI but not in CDM_EM2PESI'
631
		FROM [EM2PESI].[DBO].RELTAXON bm_rt INNER JOIN
632
		[EM2PESI].[DBO].TAXON bm_t1 ON bm_rt.TaxonFk1 = bm_t1.TaxonId INNER JOIN
633
		[EM2PESI].[DBO].TAXON bm_t2 ON bm_rt.TaxonFk2 = bm_t2.TaxonId INNER JOIN
634
		[CDM_EM2PESI].[DBO].TAXON cdm_t1
635
		ON bm_t1.IdInSource = cdm_t1.IdInSource AND ISNULL(bm_t1.GUID, '') = ISNULL(cdm_t1.GUID, '') INNER JOIN
636
		[CDM_EM2PESI].[DBO].TAXON cdm_t2
637
		ON bm_t2.IdInSource = cdm_t2.IdInSource AND ISNULL(bm_t2.GUID, '') = ISNULL(cdm_t2.GUID, '')
638
		WHERE NOT EXISTS
639
		(SELECT * FROM [CDM_EM2PESI].[DBO].RELTAXON
640
		WHERE TaxonFk1 = cdm_t1.TaxonId AND TaxonFk2 = cdm_t2.TaxonId AND RelQualifierCache = bm_rt.RelQualifierCache)
641

    
642
		SELECT [RelTaxonQualifierFk]
643
		,[RelQualifierCache]
644
		, COUNT(*) as n
645
		FROM [CDM_EM2PESI].[dbo].[RelTaxon] rel INNER JOIN [CDM_EM2PESI].[dbo].[Taxon] t1 ON t1.TaxonId = rel.TaxonFk1
646
		INNER JOIN [CDM_EM2PESI].[dbo].[Taxon] t2 ON t2.TaxonId = rel.TaxonFk2
647
		GROUP BY RelTaxonQualifierFk, RelQualifierCache
648
		ORDER BY RelTaxonQualifierFk, COUNT(*) DESC
649

    
650
		SELECT [RelTaxonQualifierFk]
651
		,[RelQualifierCache]
652
		, COUNT(*) as n
653
		FROM [EM2PESI].[dbo].[RelTaxon]
654
		GROUP BY RelTaxonQualifierFk, RelQualifierCache
655
		ORDER BY RelTaxonQualifierFk, COUNT(*) DESC
656
		
657
		SELECT t1.QualifierId, t1.Qualifier, t1.n as n_cdm, t2.n as n_bm,  t1.n - t2.n as diff
658
		FROM (
659

    
660
			SELECT rtq.QualifierId , rtq.Qualifier,  COUNT(rel.RelTaxonId) as n
661
			FROM RelTaxonQualifier rtq LEFT OUTER JOIN [CDM_EM2PESI].[dbo].[RelTaxon] rel ON rel.RelTaxonQualifierFk = rtq.QualifierId 
662
				LEFT OUTER JOIN [CDM_EM2PESI].[dbo].[Taxon] t1 ON t1.TaxonId = rel.TaxonFk1 
663
				LEFT OUTER JOIN [CDM_EM2PESI].[dbo].[Taxon] t2 ON t2.TaxonId = rel.TaxonFk2
664
			GROUP BY QualifierId, Qualifier
665
		) t1 INNER JOIN  (
666
			SELECT rtq2.QualifierId , rtq2.Qualifier, COUNT(rel.RelTaxonId) as n
667
			FROM RelTaxonQualifier rtq2 LEFT OUTER JOIN [EM2PESI].[dbo].[RelTaxon] rel ON rel.RelTaxonQualifierFk = rtq2.QualifierId 
668
				LEFT OUTER JOIN [EM2PESI].[dbo].[Taxon] t1 ON t1.TaxonId = rel.TaxonFk1 
669
				LEFT OUTER JOIN [EM2PESI].[dbo].[Taxon] t2 ON t2.TaxonId = rel.TaxonFk2
670
				GROUP BY QualifierId, Qualifier
671
		) t2  ON t1.QualifierId  = t2.QualifierId AND t1.n <> t2.n
672
		ORDER BY t1.QualifierId DESC
673

    
674
	*/
675
		SELECT @n_cdm = COUNT(*) -- relationships only in CDM_EM2PESI
676
			FROM [CDM_EM2PESI].[DBO].RELTAXON cdm_rt INNER JOIN
677
			[CDM_EM2PESI].[DBO].TAXON cdm_t1 ON cdm_rt.TaxonFk1 = cdm_t1.TaxonId INNER JOIN
678
			[CDM_EM2PESI].[DBO].TAXON cdm_t2 ON cdm_rt.TaxonFk2 = cdm_t2.TaxonId INNER JOIN
679
			[EM2PESI].[DBO].TAXON bm_t1
680
			ON bm_t1.IdInSource = cdm_t1.IdInSource AND ISNULL(bm_t1.GUID, '') = ISNULL(cdm_t1.GUID, '') INNER JOIN
681
			[EM2PESI].[DBO].TAXON bm_t2
682
			ON bm_t2.IdInSource = cdm_t2.IdInSource AND ISNULL(bm_t2.GUID, '') = ISNULL(cdm_t2.GUID, '')
683
			WHERE NOT EXISTS
684
			(SELECT * FROM [EM2PESI].[DBO].RELTAXON
685
			WHERE TaxonFk1 = bm_t1.TaxonId AND TaxonFk2 = bm_t2.TaxonId AND RelQualifierCache = cdm_rt.RelQualifierCache)
686
		SET @str_n_cdm = Cast(@n_cdm AS NVARCHAR)
687
		IF @n_cdm = 0 BEGIN
688
			PRINT ('All relationships in CDM_EM2PESI exist also in EM2PESI')
689
		END ELSE PRINT ('WARNING: ' + @str_n_cdm + ' existing relationships for identical taxa in CDM_EM2PESI DO NOT exist in EM2PESI')
690
	/*
691
		SELECT cdm_t1.Fullname, cdm_rt.RelQualifierCache, cdm_t2.Fullname, 'in CDM_EM2PESI but not in CDM_EM2PESI'
692
		FROM [CDM_EM2PESI].[DBO].RELTAXON cdm_rt INNER JOIN
693
		[CDM_EM2PESI].[DBO].TAXON cdm_t1 ON cdm_rt.TaxonFk1 = cdm_t1.TaxonId INNER JOIN
694
		[CDM_EM2PESI].[DBO].TAXON cdm_t2 ON cdm_rt.TaxonFk2 = cdm_t2.TaxonId INNER JOIN
695
		[EM2PESI].[DBO].TAXON bm_t1
696
		ON bm_t1.IdInSource = cdm_t1.IdInSource AND ISNULL(bm_t1.GUID, '') = ISNULL(cdm_t1.GUID, '') INNER JOIN
697
		[EM2PESI].[DBO].TAXON bm_t2
698
		ON bm_t2.IdInSource = cdm_t2.IdInSource AND ISNULL(bm_t2.GUID, '') = ISNULL(cdm_t2.GUID, '')
699
		WHERE NOT EXISTS
700
		(SELECT * FROM [EM2PESI].[DBO].RELTAXON
701
		WHERE TaxonFk1 = bm_t1.TaxonId AND TaxonFk2 = bm_t2.TaxonId AND RelQualifierCache = cdm_rt.RelQualifierCache)
702
	*/
703
		IF @n_cdm = 0 AND @n_bm = 0 BEGIN
704
			PRINT ('All relationships are identical in both databases')
705
		END
706

    
707

    
708
------------------------------------------- CommonName -------------------------------
709
	PRINT ' '
710
	PRINT 'COMMON NAMES'
711

    
712
	SELECT @n_bm = COUNT(*) FROM [EM2PESI].[DBO].CommonName
713
	SELECT @n_cdm = COUNT(*) FROM [CDM_EM2PESI].[DBO].CommonName
714
	SET @n = @n_bm - @n_cdm
715

    
716
	SET @str_n_bm = Cast(@n_bm AS NVARCHAR)
717
	SET @str_n_cdm = Cast(@n_cdm AS NVARCHAR)
718
	SET @str_n = Cast(@n AS NVARCHAR)
719

    
720
	IF @n = 0 BEGIN
721
		PRINT ('Both databases have the same number of common names = ' + @str_n_bm)
722
	END ELSE PRINT ('WARNING: Both databases DO NOT have the same number of common names, n_bm = ' + @str_n_bm + ' and n_cdm = '+ @str_n_cdm)
723

    
724
		SELECT @n_bm = COUNT(*) -- common names only in EM2PESI
725
			FROM [EM2PESI].[DBO].CommonName bm_cn INNER JOIN
726
			[EM2PESI].[DBO].TAXON bm_t ON bm_cn.TaxonFk = bm_t.TaxonId INNER JOIN
727
			[CDM_EM2PESI].[DBO].TAXON cdm_t
728
			ON bm_t.IdInSource = cdm_t.IdInSource AND ISNULL(bm_t.GUID, '') = ISNULL(cdm_t.GUID, '')
729
			WHERE NOT EXISTS
730
			(SELECT * FROM [CDM_EM2PESI].[DBO].CommonName
731
			WHERE TaxonFk = cdm_t.TaxonId AND ISNULL(CommonName,'') = ISNULL(bm_cn.CommonName,'')
732
			AND ISNULL(LanguageCache,'') = ISNULL(bm_cn.LanguageCache,'')
733
			AND ISNULL(SourceNameCache,'') = ISNULL(bm_cn.SourceNameCache,'')
734
			AND ISNULL(SpeciesExpertName,'') = ISNULL(bm_cn.SpeciesExpertName,'')
735
			AND ISNULL(LastAction,'') = ISNULL(bm_cn.LastAction,'')
736
			AND ISNULL(LastActionDate,'00:00:00') = ISNULL(bm_cn.LastActionDate,'00:00:00')
737
			)
738
		SET @str_n_bm = Cast(@n_bm AS NVARCHAR)
739
		IF @n_bm = 0 BEGIN
740
			PRINT ('All common names in EM2PESI exist also in CDM_EM2PESI')
741
		END ELSE PRINT ('WARNING: ' + @str_n_bm + ' existing common names for identical taxa in EM2PESI DO NOT exist in CDM_EM2PESI')
742
	/*
743
		SELECT bm_t.Fullname, bm_cn.CommonName, bm_cn.LanguageCache,
744
		bm_cn.SourceNameCache, bm_cn.SpeciesExpertName, bm_cn.LastAction,
745
		bm_cn.LastActionDate, 'in EM2PESI but not in CDM_EM2PESI'
746
		FROM [EM2PESI].[DBO].CommonName bm_cn INNER JOIN
747
		[EM2PESI].[DBO].TAXON bm_t ON bm_cn.TaxonFk = bm_t.TaxonId INNER JOIN
748
		[CDM_EM2PESI].[DBO].TAXON cdm_t
749
		ON bm_t.IdInSource = cdm_t.IdInSource AND ISNULL(bm_t.GUID, '') = ISNULL(cdm_t.GUID, '')
750
		WHERE NOT EXISTS
751
		(SELECT * FROM [CDM_EM2PESI].[DBO].CommonName
752
		WHERE TaxonFk = cdm_t.TaxonId AND ISNULL(CommonName,'') = ISNULL(bm_cn.CommonName,'')
753
		AND ISNULL(LanguageCache,'') = ISNULL(bm_cn.LanguageCache,'')
754
		AND ISNULL(SourceNameCache,'') = ISNULL(bm_cn.SourceNameCache,'')
755
		AND ISNULL(SpeciesExpertName,'') = ISNULL(bm_cn.SpeciesExpertName,'')
756
		AND ISNULL(LastAction,'') = ISNULL(bm_cn.LastAction,'')
757
		AND ISNULL(LastActionDate,'00:00:00') = ISNULL(bm_cn.LastActionDate,'00:00:00')
758
		)
759
	*/
760
		SELECT @n_cdm = COUNT(*) -- common names only in CDM_EM2PESI
761
			FROM [CDM_EM2PESI].[DBO].CommonName cdm_cn INNER JOIN
762
			[CDM_EM2PESI].[DBO].TAXON cdm_t ON cdm_cn.TaxonFk = cdm_t.TaxonId INNER JOIN
763
			[EM2PESI].[DBO].TAXON bm_t
764
			ON bm_t.IdInSource = cdm_t.IdInSource AND ISNULL(bm_t.GUID, '') = ISNULL(cdm_t.GUID, '')
765
			WHERE NOT EXISTS
766
			(SELECT * FROM [EM2PESI].[DBO].CommonName
767
			WHERE TaxonFk = bm_t.TaxonId AND ISNULL(CommonName,'') = ISNULL(cdm_cn.CommonName,'')
768
			AND ISNULL(LanguageCache,'') = ISNULL(cdm_cn.LanguageCache,'')
769
			AND ISNULL(SourceNameCache,'') = ISNULL(cdm_cn.SourceNameCache,'')
770
			AND ISNULL(SpeciesExpertName,'') = ISNULL(cdm_cn.SpeciesExpertName,'')
771
			AND ISNULL(LastAction,'') = ISNULL(cdm_cn.LastAction,'')
772
			AND ISNULL(LastActionDate,'00:00:00') = ISNULL(cdm_cn.LastActionDate,'00:00:00')
773
			)
774
		SET @str_n_cdm = Cast(@n_cdm AS NVARCHAR)
775
		IF @n_cdm = 0 BEGIN
776
			PRINT ('All common names in CDM_EM2PESI exist also in EM2PESI')
777
		END ELSE PRINT ('WARNING: ' + @str_n_cdm + ' existing common names for identical taxa in CDM_EM2PESI DO NOT exist in EM2PESI')
778
	/*
779
		SELECT bm_t.Fullname, cdm_cn.CommonName, cdm_cn.LanguageCache,
780
		cdm_cn.SourceNameCache, cdm_cn.SpeciesExpertName, cdm_cn.LastAction,
781
		cdm_cn.LastActionDate, 'in CDM_EM2PESI but not in EM2PESI'
782
		FROM [CDM_EM2PESI].[DBO].CommonName cdm_cn INNER JOIN
783
		[CDM_EM2PESI].[DBO].TAXON cdm_t ON cdm_cn.TaxonFk = cdm_t.TaxonId INNER JOIN
784
		[EM2PESI].[DBO].TAXON bm_t
785
		ON bm_t.IdInSource = cdm_t.IdInSource AND ISNULL(bm_t.GUID, '') = ISNULL(cdm_t.GUID, '')
786
		WHERE NOT EXISTS
787
		(SELECT * FROM [EM2PESI].[DBO].CommonName
788
		WHERE TaxonFk = bm_t.TaxonId AND ISNULL(CommonName,'') = ISNULL(cdm_cn.CommonName,'')
789
		AND ISNULL(LanguageCache,'') = ISNULL(cdm_cn.LanguageCache,'')
790
		AND ISNULL(SourceNameCache,'') = ISNULL(cdm_cn.SourceNameCache,'')
791
		AND ISNULL(SpeciesExpertName,'') = ISNULL(cdm_cn.SpeciesExpertName,'')
792
		AND ISNULL(LastAction,'') = ISNULL(cdm_cn.LastAction,'')
793
		AND ISNULL(LastActionDate,'00:00:00') = ISNULL(cdm_cn.LastActionDate,'00:00:00')
794
		)
795
	*/
796
		IF @n_cdm = 0 AND @n_bm = 0 BEGIN
797
			PRINT ('All common names are identical in both databases')
798
		END
799

    
800
------------------------------------------- AdditionalTaxonSource -------------------------------
801
	PRINT ' '
802
	PRINT 'ADDITIONAL TAXON SOURCE'
803
	
804
	SELECT @n_bm = COUNT(*) FROM [EM2PESI].[DBO].AdditionalTaxonSource
805
	SELECT @n_cdm = COUNT(*) FROM [CDM_EM2PESI].[DBO].AdditionalTaxonSource
806
	SET @n = @n_bm - @n_cdm
807

    
808
	SET @str_n_bm = Cast(@n_bm AS NVARCHAR)
809
	SET @str_n_cdm = Cast(@n_cdm AS NVARCHAR)
810
	SET @str_n = Cast(@n AS NVARCHAR)
811

    
812
	IF @n = 0 BEGIN
813
		PRINT ('Both databases have the same number of additional sources = ' + @str_n_bm)
814
	END ELSE PRINT ('WARNING: Both databases DO NOT have the same number of additional sources, n_bm = ' + @str_n_bm + ' and n_cdm = '+ @str_n_cdm)
815

    
816
		SELECT @n_bm = COUNT(*) -- additional sources only in EM2PESI
817
			FROM [EM2PESI].[DBO].AdditionalTaxonSource bm_ats INNER JOIN
818
			[EM2PESI].[DBO].TAXON bm_t ON bm_ats.TaxonFk = bm_t.TaxonId INNER JOIN
819
			[CDM_EM2PESI].[DBO].TAXON cdm_t
820
			ON bm_t.IdInSource = cdm_t.IdInSource AND ISNULL(bm_t.GUID, '') = ISNULL(cdm_t.GUID, '')
821
			WHERE NOT EXISTS
822
			(SELECT * FROM [CDM_EM2PESI].[DBO].AdditionalTaxonSource
823
			WHERE TaxonFk = cdm_t.TaxonId 
824
			AND ISNULL(SourceUseCache,'') = ISNULL(bm_ats.SourceUseCache,'')
825
			AND ISNULL(SourceNameCache,'') = ISNULL(bm_ats.SourceNameCache,'')
826
			AND ISNULL(SourceDetail,'') = ISNULL(bm_ats.SourceDetail,'')
827
			)
828
		SET @str_n_bm = Cast(@n_bm AS NVARCHAR)
829
		IF @n_bm = 0 BEGIN
830
			PRINT ('All additional sources in EM2PESI exist also in CDM_EM2PESI')
831
		END ELSE PRINT ('WARNING: ' + @str_n_bm + ' existing additional sources for identical taxa in EM2PESI DO NOT exist in CDM_EM2PESI')
832
	/*
833
		SELECT bm_t.Fullname, bm_ats.SourceUseCache, bm_ats.SourceNameCache,
834
		bm_ats.SourceDetail, 'in EM2PESI but not in CDM_EM2PESI'
835
		FROM [EM2PESI].[DBO].AdditionalTaxonSource bm_ats INNER JOIN
836
		[EM2PESI].[DBO].TAXON bm_t ON bm_ats.TaxonFk = bm_t.TaxonId INNER JOIN
837
		[CDM_EM2PESI].[DBO].TAXON cdm_t
838
		ON bm_t.IdInSource = cdm_t.IdInSource AND ISNULL(bm_t.GUID, '') = ISNULL(cdm_t.GUID, '')
839
		WHERE NOT EXISTS
840
		(SELECT * FROM [CDM_EM2PESI].[DBO].AdditionalTaxonSource
841
		WHERE TaxonFk = cdm_t.TaxonId 
842
		AND ISNULL(SourceUseCache,'') = ISNULL(bm_ats.SourceUseCache,'')
843
		AND ISNULL(SourceNameCache,'') = ISNULL(bm_ats.SourceNameCache,'')
844
		AND ISNULL(SourceDetail,'') = ISNULL(bm_ats.SourceDetail,'')
845
		)
846
		ORDER BY bm_t.Fullname, bm_ats.SourceUseCache, bm_ats.SourceNameCache
847
		
848
	*/
849
		SELECT @n_cdm = COUNT(*) -- additional sources only in CDM_EM2PESI
850
			FROM [CDM_EM2PESI].[DBO].AdditionalTaxonSource cdm_ats INNER JOIN
851
			[CDM_EM2PESI].[DBO].TAXON cdm_t ON cdm_ats.TaxonFk = cdm_t.TaxonId INNER JOIN
852
			[EM2PESI].[DBO].TAXON bm_t
853
			ON bm_t.IdInSource = cdm_t.IdInSource AND ISNULL(bm_t.GUID, '') = ISNULL(cdm_t.GUID, '')
854
			WHERE NOT EXISTS
855
			(SELECT * FROM [EM2PESI].[DBO].AdditionalTaxonSource
856
			WHERE TaxonFk = bm_t.TaxonId 
857
			AND ISNULL(SourceUseCache,'') = ISNULL(cdm_ats.SourceUseCache,'')
858
			AND ISNULL(SourceNameCache,'') = ISNULL(cdm_ats.SourceNameCache,'')
859
			AND ISNULL(SourceDetail,'') = ISNULL(cdm_ats.SourceDetail,'')
860
			)
861
		SET @str_n_cdm = Cast(@n_cdm AS NVARCHAR)
862
		IF @n_cdm = 0 BEGIN
863
			PRINT ('All additional sources in CDM_EM2PESI exist also in EM2PESI')
864
		END ELSE PRINT ('WARNING: ' + @str_n_cdm + ' existing additional sources for identical taxa in CDM_EM2PESI DO NOT exist in EM2PESI')
865
	/*
866
		SELECT bm_t.Fullname, cdm_ats.SourceUseCache, cdm_ats.SourceNameCache,
867
		cdm_ats.SourceDetail, 'in EM2PESI but not in CDM_EM2PESI'
868
		FROM [CDM_EM2PESI].[DBO].AdditionalTaxonSource cdm_ats INNER JOIN
869
		[CDM_EM2PESI].[DBO].TAXON cdm_t ON cdm_ats.TaxonFk = cdm_t.TaxonId INNER JOIN
870
		[EM2PESI].[DBO].TAXON bm_t
871
		ON bm_t.IdInSource = cdm_t.IdInSource AND ISNULL(bm_t.GUID, '') = ISNULL(cdm_t.GUID, '')
872
		WHERE NOT EXISTS
873
		(SELECT * FROM [EM2PESI].[DBO].AdditionalTaxonSource
874
		WHERE TaxonFk = bm_t.TaxonId 
875
		AND ISNULL(SourceUseCache,'') = ISNULL(cdm_ats.SourceUseCache,'')
876
		AND ISNULL(SourceNameCache,'') = ISNULL(cdm_ats.SourceNameCache,'')
877
		AND ISNULL(SourceDetail,'') = ISNULL(cdm_ats.SourceDetail,'')
878
		)
879
		ORDER BY bm_t.Fullname, cdm_ats.SourceUseCache, cdm_ats.SourceNameCache
880
	*/
881
		IF @n_cdm = 0 AND @n_bm = 0 BEGIN
882
			PRINT ('All additional sources are identical in both databases')
883
		END
884

    
885
------------------------------ Image (currently exist only in ERMS) -------------------------------
886
	PRINT ' '
887
	PRINT 'IMAGES'
888
	
889
	SELECT @n_bm = COUNT(*) FROM [EM2PESI].[DBO].Image
890
	SELECT @n_cdm = COUNT(*) FROM [CDM_EM2PESI].[DBO].Image
891
	SET @n = @n_bm - @n_cdm
892

    
893
	SET @str_n_bm = Cast(@n_bm AS NVARCHAR)
894
	SET @str_n_cdm = Cast(@n_cdm AS NVARCHAR)
895
	SET @str_n = Cast(@n AS NVARCHAR)
896

    
897
	IF @n = 0 BEGIN
898
		PRINT ('Both databases have the same number of images = ' + @str_n_bm)
899
	END ELSE PRINT ('WARNING: Both databases DO NOT have the same number of images, n_bm = ' + @str_n_bm + ' and n_cdm = '+ @str_n_cdm)
900

    
901
		SELECT @n_bm = COUNT(*) -- images only in EM2PESI
902
			FROM [EM2PESI].[DBO].Image bm_i INNER JOIN
903
			[EM2PESI].[DBO].TAXON bm_t ON bm_i.TaxonFk = bm_t.TaxonId INNER JOIN
904
			[CDM_EM2PESI].[DBO].TAXON cdm_t
905
			ON bm_t.IdInSource = cdm_t.IdInSource AND ISNULL(bm_t.GUID, '') = ISNULL(cdm_t.GUID, '')
906
			WHERE NOT EXISTS
907
			(SELECT * FROM [CDM_EM2PESI].[DBO].Image
908
			WHERE TaxonFk = cdm_t.TaxonId AND ISNULL(img_thumb,'') = ISNULL(bm_i.img_thumb,'')
909
			AND ISNULL(img_url,'') = ISNULL(bm_i.img_url,'')
910
			)
911
		SET @str_n_bm = Cast(@n_bm AS NVARCHAR)
912
		IF @n_bm = 0 BEGIN
913
			PRINT ('All images in EM2PESI exist also in CDM_EM2PESI')
914
		END ELSE PRINT ('WARNING: ' + @str_n_bm + ' existing images for identical taxa in EM2PESI DO NOT exist in CDM_EM2PESI')
915
	/*
916
		SELECT bm_t.Fullname, bm_i.img_thumb, bm_i.img_url, 'in EM2PESI but not in CDM_EM2PESI'
917
		FROM [EM2PESI].[DBO].Image bm_i INNER JOIN
918
		[EM2PESI].[DBO].TAXON bm_t ON bm_i.TaxonFk = bm_t.TaxonId INNER JOIN
919
		[CDM_EM2PESI].[DBO].TAXON cdm_t
920
		ON bm_t.IdInSource = cdm_t.IdInSource AND ISNULL(bm_t.GUID, '') = ISNULL(cdm_t.GUID, '')
921
		WHERE NOT EXISTS
922
		(SELECT * FROM [CDM_EM2PESI].[DBO].Image
923
		WHERE TaxonFk = cdm_t.TaxonId AND ISNULL(img_thumb,'') = ISNULL(bm_i.img_thumb,'')
924
		AND ISNULL(img_url,'') = ISNULL(bm_i.img_url,'')
925
		)
926
	*/
927
		SELECT @n_cdm = COUNT(*) -- images only in CDM_EM2PESI
928
			FROM [CDM_EM2PESI].[DBO].Image cdm_i INNER JOIN
929
			[CDM_EM2PESI].[DBO].TAXON cdm_t ON cdm_i.TaxonFk = cdm_t.TaxonId INNER JOIN
930
			[EM2PESI].[DBO].TAXON bm_t
931
			ON bm_t.IdInSource = cdm_t.IdInSource AND ISNULL(bm_t.GUID, '') = ISNULL(cdm_t.GUID, '')
932
			WHERE NOT EXISTS
933
			(SELECT * FROM [EM2PESI].[DBO].Image
934
			WHERE TaxonFk = bm_t.TaxonId AND ISNULL(img_thumb,'') = ISNULL(cdm_i.img_thumb,'')
935
			AND ISNULL(img_url,'') = ISNULL(cdm_i.img_url,'')
936
			)
937
		SET @str_n_cdm = Cast(@n_cdm AS NVARCHAR)
938
		IF @n_cdm = 0 BEGIN
939
			PRINT ('All images in CDM_EM2PESI exist also in EM2PESI')
940
		END ELSE PRINT ('WARNING: ' + @str_n_cdm + ' existing images for identical taxa in CDM_EM2PESI DO NOT exist in EM2PESI')
941
	/*
942
		SELECT bm_t.Fullname, cdm_i.img_thumb, cdm_i.img_url, 'in CDM_EM2PESI but not in EM2PESI'
943
		FROM [CDM_EM2PESI].[DBO].Image cdm_i INNER JOIN
944
		[CDM_EM2PESI].[DBO].TAXON cdm_t ON cdm_i.TaxonFk = cdm_t.TaxonId INNER JOIN
945
		[EM2PESI].[DBO].TAXON bm_t
946
		ON bm_t.IdInSource = cdm_t.IdInSource AND ISNULL(bm_t.GUID, '') = ISNULL(cdm_t.GUID, '')
947
		WHERE NOT EXISTS
948
		(SELECT * FROM [EM2PESI].[DBO].Image
949
		WHERE TaxonFk = bm_t.TaxonId AND ISNULL(img_thumb,'') = ISNULL(cdm_i.img_thumb,'')
950
		AND ISNULL(img_url,'') = ISNULL(cdm_i.img_url,'')
951
		)
952
	*/
953
		IF @n_cdm = 0 AND @n_bm = 0 BEGIN
954
			PRINT ('All images are identical in both databases')
955
		END
956

    
957
------------------------------------------- Note -------------------------------
958
	PRINT ' '
959
	PRINT 'NOTES'
960

    
961
	SELECT @n_bm = COUNT(*) FROM [EM2PESI].[DBO].Note LEFT OUTER JOIN
962
		[EM2PESI].[DBO].NoteSource ON NoteFk = NoteId
963
	SELECT @n_cdm = COUNT(*) FROM [CDM_EM2PESI].[DBO].Note LEFT OUTER JOIN
964
		[CDM_EM2PESI].[DBO].NoteSource ON NoteFk = NoteId
965
	SET @n = @n_bm - @n_cdm
966

    
967
	SET @str_n_bm = Cast(@n_bm AS NVARCHAR)
968
	SET @str_n_cdm = Cast(@n_cdm AS NVARCHAR)
969
	SET @str_n = Cast(@n AS NVARCHAR)
970

    
971
	IF @n = 0 BEGIN
972
		PRINT ('Both databases have the same number of note * notesource results = ' + @str_n_bm)
973
	END ELSE PRINT ('WARNING: Both databases DO NOT have the same number of note * notesource results, n_bm = ' + @str_n_bm + ' and n_cdm = '+ @str_n_cdm)
974

    
975
		SELECT @n_bm = COUNT(*) -- note * notesource results only in EM2PESI
976
			FROM [EM2PESI].[DBO].Note bm_n INNER JOIN
977
			[EM2PESI].[DBO].TAXON bm_t ON bm_n.TaxonFk = bm_t.TaxonId LEFT OUTER JOIN
978
			[EM2PESI].[DBO].NoteSource bm_ns ON bm_ns.NoteFk = bm_n.NoteId INNER JOIN
979
			[CDM_EM2PESI].[DBO].TAXON cdm_t
980
			ON bm_t.IdInSource = cdm_t.IdInSource AND ISNULL(bm_t.GUID, '') = ISNULL(cdm_t.GUID, '')
981
			WHERE NOT EXISTS
982
			(SELECT * FROM [CDM_EM2PESI].[DBO].Note LEFT OUTER JOIN [CDM_EM2PESI].[DBO].NoteSource
983
			ON [CDM_EM2PESI].[DBO].Note.NoteId = [CDM_EM2PESI].[DBO].NoteSource.NoteFk
984
			WHERE TaxonFk = cdm_t.TaxonId 
985
			AND ISNULL(Note_1,'') = ISNULL(bm_n.Note_1,'')
986
			AND ISNULL(Note_2,'') = ISNULL(bm_n.Note_2,'')
987
			AND ISNULL(NoteCategoryCache,'') = ISNULL(bm_n.NoteCategoryCache,'')
988
			AND ISNULL(LanguageCache,'') = ISNULL(bm_n.LanguageCache,'')
989
			AND ISNULL(SpeciesExpertName,'') = ISNULL(bm_n.SpeciesExpertName,'')
990
			AND ISNULL(LastAction,'') = ISNULL(bm_n.LastAction,'')
991
			AND Left(ISNULL(LastActionDate,'00:00:00'),18) = Left(ISNULL(bm_n.LastActionDate,'00:00:00'),18)
992
			AND ISNULL(SourceNameCache,'') = ISNULL(bm_ns.SourceNameCache,'')
993
			AND ISNULL(SourceDetail,'') = ISNULL(bm_ns.SourceDetail,'')
994
			)
995
		SET @str_n_bm = Cast(@n_bm AS NVARCHAR)
996
		IF @n_bm = 0 BEGIN
997
			PRINT ('All note * notesource results in EM2PESI exist also in CDM_EM2PESI')
998
		END ELSE PRINT ('WARNING: ' + @str_n_bm + ' existing note * notesource results for identical taxa in EM2PESI DO NOT exist in CDM_EM2PESI')
999
	/*
1000
		Typical Problems: 
1001
		Duplicate entries during E+M SQL import for taxa using the same name object.
1002
		Missing source info by E+M SQL import
1003
		Last Action date automatically created (but wrong) by CDM import
1004
		
1005
		SELECT bm_t.Fullname, bm_n.Note_1, bm_n.Note_2, bm_n.NoteCategoryCache, bm_n.LanguageCache,
1006
		bm_n.SpeciesExpertName, bm_n.LastAction, bm_n.LastActionDate, bm_ns.SourceNameCache, bm_ns.SourceDetail,
1007
		'in EM2PESI but not in CDM_EM2PESI'
1008
		FROM [EM2PESI].[DBO].Note bm_n INNER JOIN
1009
		[EM2PESI].[DBO].TAXON bm_t ON bm_n.TaxonFk = bm_t.TaxonId LEFT OUTER JOIN
1010
		[EM2PESI].[DBO].NoteSource bm_ns ON bm_ns.NoteFk = bm_n.NoteId INNER JOIN
1011
		[CDM_EM2PESI].[DBO].TAXON cdm_t
1012
		ON bm_t.IdInSource = cdm_t.IdInSource AND ISNULL(bm_t.GUID, '') = ISNULL(cdm_t.GUID, '')
1013
		WHERE NOT EXISTS
1014
		(SELECT * FROM [CDM_EM2PESI].[DBO].Note LEFT OUTER JOIN [CDM_EM2PESI].[DBO].NoteSource
1015
		ON [CDM_EM2PESI].[DBO].Note.NoteId = [CDM_EM2PESI].[DBO].NoteSource.NoteFk
1016
		WHERE TaxonFk = cdm_t.TaxonId 
1017
		AND ISNULL(Note_1,'') = ISNULL(bm_n.Note_1,'')
1018
		AND ISNULL(Note_2,'') = ISNULL(bm_n.Note_2,'')
1019
		AND ISNULL(NoteCategoryCache,'') = ISNULL(bm_n.NoteCategoryCache,'')
1020
		AND ISNULL(LanguageCache,'') = ISNULL(bm_n.LanguageCache,'')
1021
		AND ISNULL(SpeciesExpertName,'') = ISNULL(bm_n.SpeciesExpertName,'')
1022
		AND ISNULL(LastAction,'') = ISNULL(bm_n.LastAction,'')
1023
		AND Left(ISNULL(LastActionDate,'00:00:00'),18) = Left(ISNULL(bm_n.LastActionDate,'00:00:00'),18)
1024
		AND ISNULL(SourceNameCache,'') = ISNULL(bm_ns.SourceNameCache,'')
1025
		AND ISNULL(SourceDetail,'') = ISNULL(bm_ns.SourceDetail,'')
1026
		)
1027
		ORDER BY bm_n.NoteCategoryFk, bm_t.Fullname, bm_n.Note_1
1028
	*/
1029
		SELECT @n_cdm = COUNT(*) -- note * notesource results only in CDM_EM2PESI
1030
			FROM [CDM_EM2PESI].[DBO].Note cdm_n INNER JOIN
1031
			[CDM_EM2PESI].[DBO].TAXON cdm_t ON cdm_n.TaxonFk = cdm_t.TaxonId LEFT OUTER JOIN
1032
			[CDM_EM2PESI].[DBO].NoteSource cdm_ns ON cdm_ns.NoteFk = cdm_n.NoteId INNER JOIN
1033
			[EM2PESI].[DBO].TAXON bm_t
1034
			ON bm_t.IdInSource = cdm_t.IdInSource AND ISNULL(bm_t.GUID, '') = ISNULL(cdm_t.GUID, '')
1035
			WHERE NOT EXISTS
1036
			(SELECT * FROM [EM2PESI].[DBO].Note LEFT OUTER JOIN [EM2PESI].[DBO].NoteSource
1037
			ON [EM2PESI].[DBO].Note.NoteId = [EM2PESI].[DBO].NoteSource.NoteFk
1038
			WHERE TaxonFk = bm_t.TaxonId 
1039
			AND ISNULL(Note_1,'') = ISNULL(cdm_n.Note_1,'')
1040
			AND ISNULL(Note_2,'') = ISNULL(cdm_n.Note_2,'')
1041
			AND ISNULL(NoteCategoryCache,'') = ISNULL(cdm_n.NoteCategoryCache,'')
1042
			AND ISNULL(LanguageCache,'') = ISNULL(cdm_n.LanguageCache,'')
1043
			AND ISNULL(SpeciesExpertName,'') = ISNULL(cdm_n.SpeciesExpertName,'')
1044
			AND ISNULL(LastAction,'') = ISNULL(cdm_n.LastAction,'')
1045
			AND LEFT(ISNULL(LastActionDate,'00:00:00'),18) = LEFT(ISNULL(cdm_n.LastActionDate,'00:00:00'),18)
1046
			AND ISNULL(SourceNameCache,'') = ISNULL(cdm_ns.SourceNameCache,'')
1047
			AND ISNULL(SourceDetail,'') = ISNULL(cdm_ns.SourceDetail,'')
1048
			)
1049
		SET @str_n_cdm = Cast(@n_cdm AS NVARCHAR)
1050
		IF @n_cdm = 0 BEGIN
1051
			PRINT ('All note * notesource results in CDM_EM2PESI exist also in EM2PESI')
1052
		END ELSE PRINT ('WARNING: ' + @str_n_cdm + ' existing note * notesource results for identical taxa in CDM_EM2PESI DO NOT exist in EM2PESI')
1053
	/*
1054
		SELECT bm_t.Fullname, cdm_n.Note_1, cdm_n.Note_2, cdm_n.NoteCategoryCache, cdm_n.LanguageCache,
1055
		cdm_n.SpeciesExpertName, cdm_n.LastAction, cdm_n.LastActionDate, cdm_ns.SourceNameCache, cdm_ns.SourceDetail,
1056
		'in CDM_EM2PESI but not in EM2PESI'
1057
		FROM [CDM_EM2PESI].[DBO].Note cdm_n INNER JOIN
1058
		[CDM_EM2PESI].[DBO].TAXON cdm_t ON cdm_n.TaxonFk = cdm_t.TaxonId LEFT OUTER JOIN
1059
		[CDM_EM2PESI].[DBO].NoteSource cdm_ns ON cdm_ns.NoteFk = cdm_n.NoteId INNER JOIN
1060
		[EM2PESI].[DBO].TAXON bm_t
1061
		ON bm_t.IdInSource = cdm_t.IdInSource AND ISNULL(bm_t.GUID, '') = ISNULL(cdm_t.GUID, '')
1062
		WHERE NOT EXISTS
1063
		(SELECT * FROM [EM2PESI].[DBO].Note LEFT OUTER JOIN [EM2PESI].[DBO].NoteSource
1064
		ON [EM2PESI].[DBO].Note.NoteId = [EM2PESI].[DBO].NoteSource.NoteFk
1065
		WHERE TaxonFk = bm_t.TaxonId 
1066
		AND ISNULL(Note_1,'') = ISNULL(cdm_n.Note_1,'')
1067
		AND ISNULL(Note_2,'') = ISNULL(cdm_n.Note_2,'')
1068
		AND ISNULL(NoteCategoryCache,'') = ISNULL(cdm_n.NoteCategoryCache,'')
1069
		AND ISNULL(LanguageCache,'') = ISNULL(cdm_n.LanguageCache,'')
1070
		AND ISNULL(SpeciesExpertName,'') = ISNULL(cdm_n.SpeciesExpertName,'')
1071
		AND ISNULL(LastAction,'') = ISNULL(cdm_n.LastAction,'')
1072
		AND LEFT(ISNULL(LastActionDate,'00:00:00'),18) = LEFT(ISNULL(cdm_n.LastActionDate,'00:00:00'),18)
1073
		AND ISNULL(SourceNameCache,'') = ISNULL(cdm_ns.SourceNameCache,'')
1074
		AND ISNULL(SourceDetail,'') = ISNULL(cdm_ns.SourceDetail,'')
1075
		)
1076
		ORDER BY cdm_n.NoteCategoryFk, cdm_t.Fullname,cdm_n.Note_1
1077
		
1078
	*/
1079
		IF @n_cdm = 0 AND @n_bm = 0 BEGIN
1080
			PRINT ('All note * notesource results are identical in both databases')
1081
		END
1082

    
1083
------------------------------------------- Occurrence -------------------------------
1084
	PRINT ' '
1085
	PRINT 'OCCURRENCES'
1086
	
1087
	SELECT @n_bm = COUNT(*) FROM [EM2PESI].[DBO].Occurrence LEFT OUTER JOIN
1088
		[EM2PESI].[DBO].OccurrenceSource ON OccurrenceFk = OccurrenceId
1089
	SELECT @n_cdm = COUNT(*) FROM [CDM_EM2PESI].[DBO].Occurrence LEFT OUTER JOIN
1090
		[CDM_EM2PESI].[DBO].OccurrenceSource ON OccurrenceFk = OccurrenceId
1091
	SET @n = @n_bm - @n_cdm
1092

    
1093
	SET @str_n_bm = Cast(@n_bm AS NVARCHAR)
1094
	SET @str_n_cdm = Cast(@n_cdm AS NVARCHAR)
1095
	SET @str_n = Cast(@n AS NVARCHAR)
1096

    
1097
	IF @n = 0 BEGIN
1098
		PRINT ('Both databases have the same number of occurrence * occurrencesource results = ' + @str_n_bm)
1099
	END ELSE PRINT ('WARNING: Both databases DO NOT have the same number of occurrence * occurrencesource results, n_bm = ' + @str_n_bm + ' and n_cdm = '+ @str_n_cdm)
1100

    
1101
		SELECT @n_bm = COUNT(*) -- occurrence * occurrencesource results only in EM2PESI
1102
			FROM [EM2PESI].[DBO].Occurrence bm_o INNER JOIN
1103
			[EM2PESI].[DBO].TAXON bm_t ON bm_o.TaxonFk = bm_t.TaxonId LEFT OUTER JOIN
1104
			[EM2PESI].[DBO].OccurrenceSource bm_os ON bm_os.OccurrenceFk = bm_o.OccurrenceId INNER JOIN
1105
			[CDM_EM2PESI].[DBO].TAXON cdm_t
1106
			ON bm_t.IdInSource = cdm_t.IdInSource AND ISNULL(bm_t.GUID, '') = ISNULL(cdm_t.GUID, '')
1107
			WHERE NOT EXISTS
1108
			(SELECT * FROM [CDM_EM2PESI].[DBO].Occurrence LEFT OUTER JOIN [CDM_EM2PESI].[DBO].OccurrenceSource
1109
			ON [CDM_EM2PESI].[DBO].Occurrence.OccurrenceId = [CDM_EM2PESI].[DBO].OccurrenceSource.OccurrenceFk
1110
			WHERE TaxonFk = cdm_t.TaxonId 
1111
				AND ISNULL(TaxonFullNameCache,'') = ISNULL(bm_o.TaxonFullNameCache,'')
1112
				AND ISNULL(AreaNameCache,'') = ISNULL(bm_o.AreaNameCache,'')
1113
				AND ISNULL(OccurrenceStatusCache,'') = ISNULL(bm_o.OccurrenceStatusCache,'')
1114
				AND ISNULL(Notes,'') = ISNULL(bm_o.Notes,'')
1115
				AND ISNULL(SpeciesExpertName,'') = ISNULL(bm_o.SpeciesExpertName,'')
1116
				AND ISNULL(LastAction,'') = ISNULL(bm_o.LastAction,'')
1117
				AND ISNULL(LastActionDate,'00:00:00') = ISNULL(bm_o.LastActionDate,'00:00:00')
1118
				AND ISNULL(SourceNameCache,'') = ISNULL(bm_os.SourceNameCache,'')
1119
				AND ISNULL(OldTaxonName,'') = ISNULL(bm_os.OldTaxonName,'')
1120
			)
1121
		SET @str_n_bm = Cast(@n_bm AS NVARCHAR)
1122
		IF @n_bm = 0 BEGIN
1123
			PRINT ('All occurrence * occurrencesource results in EM2PESI exist also in CDM_EM2PESI')
1124
		END ELSE PRINT ('WARNING: ' + @str_n_bm + ' existing occurrence * occurrencesource results for identical taxa in EM2PESI DO NOT exist in CDM_EM2PESI')
1125
	/*
1126
		SELECT cdm_t.TaxonId as cdmTID, bm_t.TaxonId bmTID, bm_t.Fullname, bm_o.TaxonFullNameCache, bm_o.AreaNameCache, bm_o.OccurrenceStatusCache, bm_o.Notes,
1127
		bm_o.SpeciesExpertName, bm_o.LastAction, bm_o.LastActionDate, bm_os.SourceNameCache, bm_os.OldTaxonName,
1128
		'in EM2PESI but not in CDM_EM2PESI'
1129
		FROM [EM2PESI].[DBO].Occurrence bm_o INNER JOIN
1130
		[EM2PESI].[DBO].TAXON bm_t ON bm_o.TaxonFk = bm_t.TaxonId LEFT OUTER JOIN
1131
		[EM2PESI].[DBO].OccurrenceSource bm_os ON bm_os.OccurrenceFk = bm_o.OccurrenceId INNER JOIN
1132
		[CDM_EM2PESI].[DBO].TAXON cdm_t
1133
		ON bm_t.IdInSource = cdm_t.IdInSource AND ISNULL(bm_t.GUID, '') = ISNULL(cdm_t.GUID, '')
1134
		WHERE NOT EXISTS
1135
		(SELECT * FROM [CDM_EM2PESI].[DBO].Occurrence LEFT OUTER JOIN [CDM_EM2PESI].[DBO].OccurrenceSource
1136
		ON [CDM_EM2PESI].[DBO].Occurrence.OccurrenceId = [CDM_EM2PESI].[DBO].OccurrenceSource.OccurrenceFk
1137
		WHERE TaxonFk = cdm_t.TaxonId 
1138
		AND ISNULL(TaxonFullNameCache,'') = ISNULL(bm_o.TaxonFullNameCache,'')
1139
		AND ISNULL(AreaNameCache,'') = ISNULL(bm_o.AreaNameCache,'')
1140
		AND ISNULL(OccurrenceStatusCache,'') = ISNULL(bm_o.OccurrenceStatusCache,'')
1141
		AND ISNULL(Notes,'') = ISNULL(bm_o.Notes,'')
1142
		AND ISNULL(SpeciesExpertName,'') = ISNULL(bm_o.SpeciesExpertName,'')
1143
		AND ISNULL(LastAction,'') = ISNULL(bm_o.LastAction,'')
1144
		AND ISNULL(LastActionDate,'00:00:00') = ISNULL(bm_o.LastActionDate,'00:00:00')
1145
		AND ISNULL(SourceNameCache,'') = ISNULL(bm_os.SourceNameCache,'')
1146
		AND ISNULL(OldTaxonName,'') = ISNULL(bm_os.OldTaxonName,'')
1147
		)
1148
		ORDER BY bm_t.Fullname, AreaNameCache 
1149
	*/
1150
		SELECT @n_cdm = COUNT(*) -- occurrence * occurrencesource results only in CDM_EM2PESI
1151
			FROM [CDM_EM2PESI].[DBO].Occurrence cdm_o INNER JOIN
1152
			[CDM_EM2PESI].[DBO].TAXON cdm_t ON cdm_o.TaxonFk = cdm_t.TaxonId LEFT OUTER JOIN
1153
			[CDM_EM2PESI].[DBO].OccurrenceSource cdm_os ON cdm_os.OccurrenceFk = cdm_o.OccurrenceId INNER JOIN
1154
			[EM2PESI].[DBO].TAXON bm_t
1155
			ON bm_t.IdInSource = cdm_t.IdInSource AND ISNULL(bm_t.GUID, '') = ISNULL(cdm_t.GUID, '')
1156
			WHERE NOT EXISTS
1157
			(SELECT * FROM [EM2PESI].[DBO].Occurrence LEFT OUTER JOIN [EM2PESI].[DBO].OccurrenceSource
1158
			ON [EM2PESI].[DBO].Occurrence.OccurrenceId = [EM2PESI].[DBO].OccurrenceSource.OccurrenceFk
1159
			WHERE TaxonFk = bm_t.TaxonId 
1160
				AND ISNULL(TaxonFullNameCache,'') = ISNULL(cdm_o.TaxonFullNameCache,'')
1161
				AND ISNULL(AreaNameCache,'') = ISNULL(cdm_o.AreaNameCache,'')
1162
				AND ISNULL(OccurrenceStatusCache,'') = ISNULL(cdm_o.OccurrenceStatusCache,'')
1163
				AND ISNULL(Notes,'') = ISNULL(cdm_o.Notes,'')
1164
				AND ISNULL(SpeciesExpertName,'') = ISNULL(cdm_o.SpeciesExpertName,'')
1165
				AND ISNULL(LastAction,'') = ISNULL(cdm_o.LastAction,'')
1166
				AND ISNULL(LastActionDate,'00:00:00') = ISNULL(cdm_o.LastActionDate,'00:00:00')
1167
				AND ISNULL(SourceNameCache,'') = ISNULL(cdm_os.SourceNameCache,'')
1168
				AND ISNULL(OldTaxonName,'') = ISNULL(cdm_os.OldTaxonName,'')
1169
			)
1170
		SET @str_n_cdm = Cast(@n_cdm AS NVARCHAR)
1171
		IF @n_cdm = 0 BEGIN
1172
			PRINT ('All occurrence * occurrencesource results in CDM_EM2PESI exist also in EM2PESI')
1173
		END ELSE PRINT ('WARNING: ' + @str_n_cdm + ' existing occurrence * occurrencesource results for identical taxa in CDM_EM2PESI DO NOT exist in EM2PESI')
1174
	/*
1175
		SELECT cdm_t.TaxonId as cdmTID, bm_t.TaxonId bmTID, cdm_t.Fullname, cdm_o.TaxonFullNameCache, cdm_o.AreaNameCache, cdm_o.OccurrenceStatusCache, cdm_o.Notes,
1176
		cdm_o.SpeciesExpertName, cdm_o.LastAction, cdm_o.LastActionDate, cdm_os.SourceNameCache, cdm_os.OldTaxonName,
1177
		'in CDM_EM2PESI but not in EM2PESI'
1178
		FROM [CDM_EM2PESI].[DBO].Occurrence cdm_o INNER JOIN
1179
		[CDM_EM2PESI].[DBO].TAXON cdm_t ON cdm_o.TaxonFk = cdm_t.TaxonId LEFT OUTER JOIN
1180
		[CDM_EM2PESI].[DBO].OccurrenceSource cdm_os ON cdm_os.OccurrenceFk = cdm_o.OccurrenceId INNER JOIN
1181
		[EM2PESI].[DBO].TAXON bm_t
1182
		ON bm_t.IdInSource = cdm_t.IdInSource AND ISNULL(bm_t.GUID, '') = ISNULL(cdm_t.GUID, '')
1183
		WHERE NOT EXISTS
1184
		(SELECT * FROM [EM2PESI].[DBO].Occurrence LEFT OUTER JOIN [EM2PESI].[DBO].OccurrenceSource
1185
		ON [EM2PESI].[DBO].Occurrence.OccurrenceId = [EM2PESI].[DBO].OccurrenceSource.OccurrenceFk
1186
		WHERE TaxonFk = bm_t.TaxonId 
1187
		AND ISNULL(TaxonFullNameCache,'') = ISNULL(cdm_o.TaxonFullNameCache,'')
1188
		AND ISNULL(AreaNameCache,'') = ISNULL(cdm_o.AreaNameCache,'')
1189
		AND ISNULL(OccurrenceStatusCache,'') = ISNULL(cdm_o.OccurrenceStatusCache,'')
1190
		AND ISNULL(Notes,'') = ISNULL(cdm_o.Notes,'')
1191
		AND ISNULL(SpeciesExpertName,'') = ISNULL(cdm_o.SpeciesExpertName,'')
1192
		AND ISNULL(LastAction,'') = ISNULL(cdm_o.LastAction,'')
1193
		AND ISNULL(LastActionDate,'00:00:00') = ISNULL(cdm_o.LastActionDate,'00:00:00')
1194
		AND ISNULL(SourceNameCache,'') = ISNULL(cdm_os.SourceNameCache,'')
1195
		AND ISNULL(OldTaxonName,'') = ISNULL(cdm_os.OldTaxonName,'')
1196
		)
1197
		ORDER BY bm_t.Fullname, AreaNameCache 
1198
	*/
1199
		IF @n_cdm = 0 AND @n_bm = 0 BEGIN
1200
			PRINT ('All occurrence * occurrencesource results are identical in both databases')
1201
		END
1202

    
1203

    
1204
	PRINT ('End of check')
1205

    
1206

    
1207
END
    (1-1/1)