-- Script: uddi.v2.update_rc1_to_rc2.sql -- Description: Updates a UDDI Services RC1 database to RC2 -- Note: This file is best viewed and edited with a tab width of 2. -- ============================================= -- Section: Stored Procedure fixes -- ============================================= -- ============================================= -- Name: net_serviceProjection_repl_save -- Fix: uddi bug 2454 -- ============================================= IF EXISTS (SELECT * FROM sysobjects WHERE name = 'net_serviceProjection_repl_save' and type = 'P') DROP PROCEDURE net_serviceProjection_repl_save GO CREATE PROCEDURE net_serviceProjection_repl_save @serviceKey uniqueidentifier, @businessKey uniqueidentifier, @businessKey2 uniqueidentifier, @lastChange bigint WITH ENCRYPTION AS BEGIN DECLARE @RC int, @error int, @context nvarchar(4000) SET @RC = 0 -- IMPORTANT: This sproc should only ever be called for replication. As per IN 60, we have to process service projection -- change records even if they refer to business services that no longer exist. Both businesses referenced -- by the service projection must exist. -- businessKey validation must occur during save since its not always known at validate time IF NOT EXISTS(SELECT * FROM [UDC_businessEntities] WHERE [businessKey] = @businessKey) BEGIN SET @error = 60210 -- E_invalidKey SET @context = 'businessKey = ' + dbo.UUIDSTR(@businessKey) GOTO errorLabel END -- -- Commenting out the following check to comply with IN60 as per UDDI bug 2454 -- Which states that service projections that refer to a deleted service must be successfully saved -- From this we can imply that service projections that refer to a deleted business must also be successfully saved -- --IF NOT EXISTS(SELECT * FROM [UDC_businessEntities] WHERE [businessKey] = @businessKey2) --BEGIN --SET @error = 60210 -- E_invalidKey --SET @context = 'businessKey = ' + dbo.UUIDSTR(@businessKey2) --GOTO errorLabel --END -- Add service projection if it doesn't already exist IF NOT EXISTS(SELECT * FROM [UDC_serviceProjections] WHERE ([businessKey] = @businessKey) AND ([serviceKey] = @serviceKey)) BEGIN INSERT [UDC_serviceProjections]( [businessKey], [serviceKey], [businessKey2], [lastChange]) VALUES( @businessKey, @serviceKey, @businessKey2, @lastChange) END RETURN 0 errorLabel: RAISERROR (@error, 16, 1, @context) RETURN 1 END -- net_serviceProjection_repl_save GO -- ============================================= -- Name: VS_AWR_businesses_get -- ============================================= IF EXISTS (SELECT name FROM sysobjects WHERE name = 'VS_AWR_businesses_get' AND type = 'P') DROP PROCEDURE VS_AWR_businesses_get GO CREATE PROCEDURE VS_AWR_businesses_get @businessName nvarchar(450) WITH ENCRYPTION AS BEGIN DECLARE @typesTModelKey uniqueidentifier, @wsdlKeyValue nvarchar(255), @services cursor, @serviceID bigint, @serviceKey uniqueidentifier, @businessID bigint, @businessName2 nvarchar(450), @businessKey uniqueidentifier, @serviceName nvarchar(450) -- -- Get a list of tModel keys for tModels categorized as a wsdlSpec -- SET @typesTModelKey = 'C1ACF26D-9672-4404-9D70-39B756E62AB4' SET @wsdlKeyValue = 'wsdlSpec' DECLARE @wsdlTModelKeys TABLE ( [tModelKey] uniqueidentifier) INSERT @wsdlTModelKeys SELECT DISTINCT TM.[tModelKey] FROM [UDC_tModels] TM JOIN [UDC_categoryBag_TM] CB ON TM.[tModelID] = CB.[tModelID] WHERE (CB.[tModelKey] = @typesTModelKey) AND (CB.[keyValue] = @wsdlKeyValue) -- -- Setup temporary table for staging results -- DECLARE @results TABLE( [businessName] nvarchar(450), [businessKey] uniqueidentifier, [serviceName] nvarchar(450), [serviceKey] uniqueidentifier) -- -- Cursor through every service that: -- 1. Has a tModelInstance that references a wsdlTModelKey -- 2. Is owned by a business that meets the name search criteria -- Build results from this list of services -- SET @services = CURSOR LOCAL READ_ONLY FORWARD_ONLY FOR SELECT BS.[serviceID], BS.[serviceKey], BS.[businessID] FROM [UDC_businessServices] BS JOIN [UDC_bindingTemplates] BT ON BS.[serviceID] = BT.[serviceID] JOIN [UDC_tModelInstances] TMI ON BT.[bindingID] = TMI.[bindingID] WHERE (TMI.[tModelKey] IN (SELECT [tModelKey] FROM @wsdlTModelKeys)) AND (BS.[businessID] IN (SELECT DISTINCT BN.[businessID] FROM [UDC_names_BE] BN WHERE (BN.[name] LIKE @businessName + '%'))) OPEN @services FETCH NEXT FROM @services INTO @serviceID, @serviceKey, @businessID WHILE @@FETCH_STATUS = 0 BEGIN -- -- Retrieve the name of the business that owns the service -- SET @businessName2 = (SELECT TOP 1 BN.[name] FROM [UDC_names_BE] BN WHERE (BN.[businessID] = @businessID)) -- -- Retrieve the key of the business that owns the service -- SET @businessKey = dbo.businessKey(@businessID) -- -- Retrieve the name of the service -- SET @serviceName = (SELECT TOP 1 SN.[name] FROM [UDC_names_BS] SN WHERE (SN.[serviceID] = @serviceID)) -- -- Add results to results table -- INSERT @results VALUES( @businessName2, @businessKey, @serviceName, @serviceKey) FETCH NEXT FROM @services INTO @serviceID, @serviceKey, @businessID END CLOSE @services -- -- Return results -- SELECT * FROM @results END GO -- ============================================= -- Section: New Stored Procedures -- ============================================= -- ============================================= -- Name: net_taxonomyValues_get -- ============================================= IF EXISTS (SELECT name FROM sysobjects WHERE name = N'net_taxonomyValues_get' AND type = 'P') DROP PROCEDURE net_taxonomyValues_get GO CREATE PROCEDURE net_taxonomyValues_get @tModelKey uniqueidentifier AS BEGIN DECLARE @error int, @context nvarchar(4000), @taxonomyID bigint SET @taxonomyID = dbo.taxonomyID(@tModelKey) IF @taxonomyID IS NULL BEGIN SET @error = 60210 SET @context = 'uuid:' + dbo.UUIDSTR(@tModelKey) GOTO errorLabel END SELECT [keyValue], [parentKeyValue], [keyName], [valid] FROM [UDT_taxonomyValues] WHERE ([taxonomyID] = @taxonomyID) ORDER BY [parentKeyValue], [keyValue] RETURN 0 errorLabel: RAISERROR (@error, 16, 1, @context) RETURN 1 END GO -- ============================================= -- Name: net_bindingTemplate_get_batch -- ============================================= IF EXISTS (SELECT * FROM sysobjects WHERE name = 'net_bindingTemplate_get_batch' and type = 'P') DROP PROCEDURE net_bindingTemplate_get_batch GO CREATE PROCEDURE net_bindingTemplate_get_batch @bindingKey uniqueidentifier, @serviceKey uniqueidentifier OUTPUT, @URLTypeID tinyint OUTPUT, @accessPoint nvarchar(4000) OUTPUT, @hostingRedirector uniqueidentifier OUTPUT WITH ENCRYPTION AS BEGIN DECLARE @error int, @context nvarchar(4000) SELECT @serviceKey = dbo.serviceKey([serviceID]), @URLTypeID = [URLTypeID], @accessPoint = [accessPoint], @hostingRedirector = [hostingRedirector] FROM [UDC_bindingTemplates] WHERE ([bindingID] = dbo.bindingID(@bindingKey)) IF @@ROWCOUNT = 0 BEGIN SET @error = 60210 -- E_invalidKey SET @context = 'bindingKey = ' + dbo.UUIDSTR(@bindingKey) GOTO errorLabel END -- Retrieve the contained objects EXEC net_bindingTemplate_descriptions_get @bindingKey EXEC net_bindingTemplate_tModelInstanceInfos_get @bindingKey RETURN 0 errorLabel: RAISERROR (@error, 16, 1, @context) RETURN 1 END -- net_bindingTemplate_get_batch GO -- ============================================= -- Name: net_bindingTemplate_tModelInstanceInfo_get_batch -- ============================================= IF EXISTS (SELECT * FROM sysobjects WHERE name = 'net_bindingTemplate_tModelInstanceInfo_get_batch' and type = 'P') DROP PROCEDURE net_bindingTemplate_tModelInstanceInfo_get_batch GO CREATE PROCEDURE net_bindingTemplate_tModelInstanceInfo_get_batch @instanceID bigint WITH ENCRYPTION AS BEGIN EXEC net_bindingTemplate_tModelInstanceInfo_descriptions_get @instanceID EXEC net_bindingTemplate_instanceDetails_descriptions_get @instanceID EXEC net_bindingTemplate_instanceDetails_overviewDoc_descriptions_get @instanceID RETURN 0 END -- net_bindingTemplate_tModelInstanceInfo_get_batch GO -- ============================================= -- Name: net_businessEntity_get_batch -- ============================================= IF EXISTS (SELECT * FROM sysobjects WHERE name = 'net_businessEntity_get_batch' and type = 'P') DROP PROCEDURE net_businessEntity_get_batch GO CREATE PROCEDURE net_businessEntity_get_batch @businessKey uniqueidentifier, @operatorName nvarchar(450) OUTPUT, @authorizedName nvarchar(4000) OUTPUT WITH ENCRYPTION AS BEGIN DECLARE @error int, @context nvarchar(4000) SELECT @operatorName = dbo.publisherOperatorName([publisherID]), @authorizedName = ISNULL([authorizedName],dbo.publisherName([publisherID])) FROM [UDC_businessEntities] WHERE [businessKey] = @businessKey IF @@ROWCOUNT = 0 BEGIN SET @error = 60210 SET @context = 'businessKey = ' + dbo.UUIDSTR(@businessKey) GOTO errorLabel END -- Retrieve the contained objects EXEC net_businessEntity_descriptions_get @businessKey EXEC net_businessEntity_names_get @businessKey EXEC net_businessEntity_discoveryURLs_get @businessKey EXEC net_businessEntity_contacts_get @businessKey EXEC net_businessEntity_IdentifierBag_get @businessKey EXEC net_businessEntity_CategoryBag_get @businessKey EXEC net_businessEntity_BusinessServices_get @businessKey RETURN 0 errorLabel: RAISERROR (@error, 16, 1, @context) RETURN 1 END -- net_businessEntity_get_batch GO -- ============================================= -- Name: net_businessInfo_get_batch -- ============================================= IF EXISTS (SELECT * FROM sysobjects WHERE name = 'net_businessInfo_get_batch' and type = 'P') DROP PROCEDURE net_businessInfo_get_batch GO CREATE PROCEDURE net_businessInfo_get_batch @businessKey uniqueidentifier, @getServiceInfos bit WITH ENCRYPTION AS BEGIN -- Retrieve the contained objects needed for a BusinessInfo EXEC net_businessEntity_descriptions_get @businessKey EXEC net_businessEntity_names_get @businessKey IF @getServiceInfos = 1 BEGIN EXEC net_businessEntity_BusinessServices_get @businessKey END RETURN 0 END -- net_businessEntity_get_batch GO -- ============================================= -- Name: net_businessEntity_contact_get_batch -- ============================================= IF EXISTS (SELECT * FROM sysobjects WHERE name = 'net_businessEntity_contact_get_batch' and type = 'P') DROP PROCEDURE net_businessEntity_contact_get_batch GO CREATE PROCEDURE net_businessEntity_contact_get_batch @contactID bigint WITH ENCRYPTION AS BEGIN -- Get all contained objects in a contact EXEC net_contact_descriptions_get @contactID EXEC net_contact_phones_get @contactID EXEC net_contact_emails_get @contactID EXEC net_contact_addresses_get @contactID END -- net_businessEntity_contact_get_batch GO -- ============================================= -- Name: net_businessService_get_batch -- ============================================= IF EXISTS (SELECT * FROM sysobjects WHERE name = 'net_businessService_get_batch' and type = 'P') DROP PROCEDURE net_businessService_get_batch GO CREATE PROCEDURE net_businessService_get_batch @serviceKey uniqueidentifier, @businessKey uniqueidentifier OUTPUT WITH ENCRYPTION AS BEGIN DECLARE @error int, @context nvarchar(4000) SELECT @businessKey = dbo.businessKey([businessID]) FROM [UDC_businessServices] WHERE [serviceKey] = @serviceKey IF @@ROWCOUNT = 0 BEGIN SET @error = 60210 -- E_invalidKey SET @context = 'serviceKey = ' + dbo.UUIDSTR(@serviceKey) GOTO errorLabel END -- Retrieve the contained objects EXEC net_businessService_descriptions_get @serviceKey EXEC net_businessService_names_get @serviceKey EXEC net_businessService_bindingTemplates_get @serviceKey EXEC net_businessService_categoryBag_get @serviceKey RETURN 0 errorLabel: RAISERROR (@error, 16, 1, @context) RETURN 1 END -- net_businessService_get_batch GO -- ============================================= -- Name: net_serviceInfo_get_batch -- ============================================= IF EXISTS (SELECT * FROM sysobjects WHERE name = 'net_serviceInfo_get_batch' and type = 'P') DROP PROCEDURE net_serviceInfo_get_batch GO CREATE PROCEDURE net_serviceInfo_get_batch @serviceKey uniqueidentifier, @businessKey uniqueidentifier OUTPUT WITH ENCRYPTION AS BEGIN DECLARE @error int, @context nvarchar(4000) SELECT @businessKey = dbo.businessKey([businessID]) FROM [UDC_businessServices] WHERE [serviceKey] = @serviceKey IF @@ROWCOUNT = 0 BEGIN SET @error = 60210 -- E_invalidKey SET @context = 'serviceKey = ' + dbo.UUIDSTR(@serviceKey) GOTO errorLabel END -- Retrieve the contained objects EXEC net_businessService_names_get @serviceKey RETURN 0 errorLabel: RAISERROR (@error, 16, 1, @context) RETURN 1 END -- net_businessService_get_batch GO -- ============================================= -- Name: net_tModel_get_batch -- ============================================= IF EXISTS (SELECT * FROM sysobjects WHERE name = 'net_tModel_get_batch' and type = 'P') DROP PROCEDURE net_tModel_get_batch GO CREATE PROCEDURE net_tModel_get_batch @tModelKey uniqueidentifier, @operatorName nvarchar(450) OUTPUT, @authorizedName nvarchar(4000) OUTPUT, @name nvarchar(450) OUTPUT, @overviewURL nvarchar(4000) OUTPUT WITH ENCRYPTION AS BEGIN DECLARE @error int, @context nvarchar(4000) SELECT @operatorName = dbo.publisherOperatorName([publisherID]), @authorizedName = ISNULL([authorizedName],dbo.publisherName([publisherID])), @name = [name], @overviewURL = [overviewURL] FROM [UDC_tModels] WHERE ([tModelKey] = @tModelKey) IF @@ROWCOUNT = 0 BEGIN SET @error = 60210 -- E_invalidKey SET @context = 'tModelKey = ' + dbo.addURN(@tModelKey) GOTO errorLabel END -- Get contained objects EXEC net_tModel_descriptions_get @tModelKey EXEC net_tModel_overviewDoc_descriptions_get @tModelKey EXEC net_tModel_identifierBag_get @tModelKey EXEC net_tModel_categoryBag_get @tModelKey RETURN 0 errorLabel: RAISERROR (@error, 16, 1, @context) RETURN 1 END -- net_tModel_get_batch GO -- ============================================= -- Section: Security -- ============================================= GRANT EXEC ON net_taxonomyValues_get to UDDIAdmin, UDDIService GRANT EXEC ON net_bindingTemplate_get_batch TO UDDIAdmin, UDDIService GRANT EXEC ON net_bindingTemplate_tModelInstanceInfo_get_batch TO UDDIAdmin, UDDIService GRANT EXEC ON net_businessEntity_get_batch TO UDDIAdmin, UDDIService GRANT EXEC ON net_businessInfo_get_batch TO UDDIAdmin, UDDIService GRANT EXEC ON net_businessEntity_contact_get_batch TO UDDIAdmin, UDDIService GRANT EXEC ON net_businessService_get_batch TO UDDIAdmin, UDDIService GRANT EXEC ON net_serviceInfo_get_batch TO UDDIAdmin, UDDIService GRANT EXEC ON net_serviceProjection_repl_save TO UDDIAdmin, UDDIService GRANT EXEC ON net_tModel_get_batch TO UDDIAdmin, UDDIService GRANT EXEC ON VS_AWR_businesses_get TO UDDIAdmin, UDDIService GO -- ============================================= -- Section: Update Version(s) -- ============================================= EXEC net_config_save 'Site.Version', '5.2.3664.0' -- TODO: Update this to proper RC2 site.version EXEC net_config_save 'Database.Version', '2.0.0001.2' GO