|
|
-- Script: uddi.net.admin.sql
-- Author: [email protected]
-- Description: Administrative stored procedures
-- Note: This file is best viewed and edited with a tab width of 2.
-- =============================================
-- Section: Publisher administration
-- =============================================
-- =============================================
-- Name: ADM_findPublisher
-- =============================================
IF EXISTS (SELECT name FROM sysobjects WHERE name = 'ADM_findPublisher' AND type = 'P') DROP PROCEDURE ADM_findPublisher GO
CREATE PROCEDURE ADM_findPublisher @email nvarchar(450) = NULL, @name nvarchar(450) = NULL, @companyName nvarchar(100) = NULL WITH ENCRYPTION AS BEGIN DECLARE @RC int, @error int, @context nvarchar(4000), @contextID uniqueidentifier, @rows int
SET @contextID = NEWID()
-- Check parameters
IF (@email IS NULL) AND (@name IS NULL) AND (@companyName IS NULL) BEGIN SET @error=50009 -- E_parmError
SET @context='At least one non-null parameter must be supplied.' GOTO errorLabel END
IF @email IS NOT NULL BEGIN EXEC @RC=net_find_publisher_email @contextID, @email, @rows OUTPUT
IF @RC<>0 BEGIN SET @error=50006 -- E_subProcFailure
SET @context='' GOTO errorLabel END
IF @rows = 0 BEGIN EXEC @RC=net_find_publisher_cleanup @contextID
IF @RC<>0 BEGIN SET @error=50006 -- E_subProcFailure
SET @context='' GOTO errorLabel END
RETURN 0 END END
IF @name IS NOT NULL BEGIN EXEC @RC=net_find_publisher_name @contextID, @name, @rows OUTPUT
IF @RC<>0 BEGIN SET @error=50006 -- E_subProcFailure
SET @context='' GOTO errorLabel END
IF @rows = 0 BEGIN EXEC @RC=net_find_publisher_cleanup @contextID
IF @RC<>0 BEGIN SET @error=50006 -- E_subProcFailure
SET @context='' GOTO errorLabel END
RETURN 0 END END IF @companyName IS NOT NULL BEGIN EXEC @RC=net_find_publisher_companyName @contextID, @companyName, @rows OUTPUT
IF @RC<>0 BEGIN SET @error=50006 -- E_subProcFailure
SET @context='' GOTO errorLabel END
IF @rows = 0 BEGIN EXEC @RC=net_find_publisher_cleanup @contextID
IF @RC<>0 BEGIN SET @error=50006 -- E_subProcFailure
SET @context='' GOTO errorLabel END
RETURN 0 END END EXEC @RC=net_find_publisher_commit @contextID = @contextID, @sortByNameAsc = 1, @sortByEmailAsc = 0, @sortByCompanyNameAsc = 0
IF @RC<>0 BEGIN SET @error=50006 -- E_subProcFailure
SET @context='' GOTO errorLabel END RETURN 0
errorLabel: RAISERROR (@error, 16, 1, @context) RETURN 1 END -- ADM_findPublisher
GO
-- =============================================
-- Name: ADM_setPublisherTier
-- =============================================
IF EXISTS (SELECT name FROM sysobjects WHERE name = 'ADM_setPublisherTier' AND type = 'P') DROP PROCEDURE ADM_setPublisherTier GO
CREATE PROCEDURE ADM_setPublisherTier @PUID nvarchar(450), @tier nvarchar(256) WITH ENCRYPTION AS BEGIN DECLARE @publisherID bigint, @tModelLimit int, @businessLimit int, @serviceLimit int, @bindingLimit int, @assertionLimit int, @error int, @context nvarchar(4000)
SET @publisherID = dbo.publisherID(@PUID)
-- Validate publisherID
IF (@publisherID IS NULL) BEGIN SET @error = 60150 -- E_unknownUer
SET @context = 'Unknown publisher.' GOTO errorLabel END
-- Validate tier parameter
IF @tier NOT IN ('1','2','unlimited') BEGIN SET @error = 50009 -- E_parmError
SET @context = 'Invalid tier specified.' GOTO errorLabel END
IF @tier = '1' BEGIN SET @tModelLimit=100 SET @businessLimit=1 SET @serviceLimit=4 SET @bindingLimit=2 SET @assertionLimit=10 END ELSE BEGIN IF (@tier = '2') OR (@tier = 'unlimited') BEGIN SET @tModelLimit=NULL SET @businessLimit=NULL SET @serviceLimit=NULL SET @bindingLimit=NULL SET @assertionLimit=NULL END END UPDATE [UDO_publishers] SET
[tModelLimit] = @tModelLimit, [businessLimit] = @businessLimit, [serviceLimit] = @serviceLimit, [bindingLimit] = @bindingLimit, [assertionLimit] = @assertionLimit WHERE ([publisherID] = @publisherID) RETURN 0
errorLabel: RAISERROR (@error, 16, 1, @context) RETURN 1 END -- ADM_setPublisherTier
GO
-- =============================================
-- Name: ADM_removePublisher
-- =============================================
IF EXISTS (SELECT name FROM sysobjects WHERE name = 'ADM_removePublisher' AND type = 'P') DROP PROCEDURE ADM_removePublisher GO
CREATE PROCEDURE ADM_removePublisher @PUID nvarchar(450) WITH ENCRYPTION AS BEGIN DECLARE @publisherID bigint, @error int, @context nvarchar(4000)
SET @publisherID = dbo.publisherID(@PUID)
-- Validate publisherID
IF (@publisherID IS NULL) BEGIN SET @error = 60150 -- E_unknownUser
SET @context = 'Invalid publisherID.' GOTO errorLabel END DELETE FROM [UDO_publishers] WHERE ([publisherID] = @publisherID)
RETURN 0
errorLabel: RAISERROR (@error, 16, 1, @context) RETURN 1 END GO
-- =============================================
-- Name: ADM_setPublisherStatus
-- =============================================
IF EXISTS (SELECT name FROM sysobjects WHERE name = 'ADM_setPublisherStatus' AND type = 'P') DROP PROCEDURE ADM_setPublisherStatus GO
CREATE PROCEDURE ADM_setPublisherStatus @PUID nvarchar(450), @publisherStatus nvarchar(256) WITH ENCRYPTION AS BEGIN DECLARE @publisherID bigint, @publisherStatusID tinyint, @error int, @context nvarchar(4000) SET @publisherID = dbo.publisherID(@PUID)
-- Validate publisherID
IF (@publisherID IS NULL) BEGIN SET @error = 60150 -- E_unknownUser
SET @context = 'Unknown publisherID.' GOTO errorLabel END
-- Validate publisherStatus
SET @publisherStatusID = dbo.publisherStatusID(@publisherStatus)
IF @publisherStatusID IS NULL BEGIN SET @error = 50009 -- E_parmError
SET @context = 'Unknown publisher status ''' + @publisherStatus + '''' GOTO errorLabel END UPDATE [UDO_publishers] SET
[publisherStatusID] = @publisherStatusID WHERE ([publisherID] = @publisherID)
RETURN 0
errorLabel: RAISERROR (@error, 16, 1, @context) RETURN 1 END -- ADM_setPublisherStatus
GO
-- =============================================
-- Section: Miscellaneous
-- =============================================
-- =============================================
-- Name: ADM_execResetKeyImmediate
-- =============================================
IF EXISTS (SELECT name FROM sysobjects WHERE name = N'ADM_execResetKeyImmediate' AND type = 'P') DROP PROCEDURE ADM_execResetKeyImmediate GO
CREATE PROCEDURE ADM_execResetKeyImmediate @keyLastResetDate nvarchar(4000) = NULL OUTPUT WITH ENCRYPTION AS BEGIN DECLARE @error int, @context nvarchar(4000), @RC int, @oldKeyLastResetDate varchar(8000)
-- Get the original last reset date. We need this value to compare against our new one as an additional check
-- to make sure we successfully generated a new key.
SET @oldKeyLastResetDate = ISNULL(dbo.configValue('Security.KeyLastResetDate'),'Monday, January 01, 0001 12:00:00 AM') -- DateTime.MinValue
-- Run extended stored proc to update security key. The new values will be put into the config table.
EXEC @RC=master.dbo.xp_reset_key
-- Make sure we ran successfully.
IF @RC <> 0 BEGIN SET @error = 50006 -- E_subProcFailure
SET @context = '' GOTO errorLabel END
-- The key generation implementation in the extended stored proc is synchronous, so we should have a new
-- key value at this point.
SET @keyLastResetDate = dbo.configValue('Security.KeyLastResetDate')
-- Make sure the date is different.
IF @keyLastResetDate = @oldKeyLastResetDate BEGIN GOTO errorLabel END
-- Success.
RETURN 0
errorLabel: RETURN 1
END -- ADM_execResetKeyImmediate
GO
-- =============================================
-- Name: ADM_addServiceAccount
-- =============================================
IF EXISTS (SELECT name FROM sysobjects WHERE name = N'ADM_addServiceAccount' AND type = 'P') DROP PROCEDURE ADM_addServiceAccount GO
CREATE PROCEDURE ADM_addServiceAccount @accountName nvarchar(128) WITH ENCRYPTION AS BEGIN DECLARE @error int, @context nvarchar(4000), @RC int, @SID varbinary(85), @isDbo bit
-- Grant database server access to security account
EXEC @RC=sp_grantlogin @accountName
IF @RC <> 0 BEGIN SET @error = 50006 -- E_subProcFailure
SET @context = '' GOTO errorLabel END
SET @SID = SUSER_SID(@accountName)
-- Determine if user is dbo
SET @isDbo = 0
IF EXISTS( SELECT * FROM [sysusers] WHERE [name] = 'dbo' AND [sid] = @SID ) SET @isDbo = 1
-- Grant database access to security account
IF ( (@isDbo = 0) AND ( NOT EXISTS ( SELECT * FROM [sysusers] WHERE [sid] = @SID ) ) ) BEGIN EXEC @RC=sp_grantdbaccess @accountName IF @RC <> 0 BEGIN SET @error = 50006 -- E_subProcFailure
SET @context = '' GOTO errorLabel END END
-- Add security account to UDDIService role
IF ( (@isDbo = 0) AND ( EXISTS ( SELECT * FROM [sysusers] WHERE [sid] = @SID ) ) ) BEGIN EXEC @RC=sp_addrolemember 'UDDIService', @accountName IF @RC <> 0 BEGIN SET @error = 50006 -- E_subProcFailure
SET @context = '' GOTO errorLabel END END -- Add security account to sysadmin server role
-- EXEC @RC=sp_addsrvrolemember @accountName, 'sysadmin'
--IF @RC <> 0 --BEGIN --SET @error = 50006 -- E_subProcFailure
--SET @context = '' --GOTO errorLabel --END
RETURN 0
errorLabel: RAISERROR (@error, 16, 1, @context) RETURN 1 END -- ADM_addServiceAccount
GO
-- =============================================
-- Name: ADM_setAdminAccount
-- =============================================
IF EXISTS (SELECT name FROM sysobjects WHERE name = N'ADM_setAdminAccount' AND type = 'P') DROP PROCEDURE ADM_setAdminAccount GO
CREATE PROCEDURE ADM_setAdminAccount @accountName nvarchar(128) WITH ENCRYPTION AS BEGIN DECLARE @error int, @context nvarchar(4000), @RC int, @SID varbinary(85), @isDbo bit, @tmpString nvarchar(128), @prevAccountName sysname, @prevAccountSID varbinary(85)
-- Grant database server access to security account
EXEC @RC=sp_grantlogin @accountName
IF @RC <> 0 BEGIN SET @error = 50006 -- E_subProcFailure
SET @context = '' GOTO errorLabel END
SET @SID = SUSER_SID(@accountName)
-- Determine if user is dbo
SET @isDbo = 0
IF EXISTS( SELECT * FROM [sysusers] WHERE [name] = 'dbo' AND [sid] = @SID ) SET @isDbo = 1
-- Grant database access to security account
IF ( (@isDbo = 0) AND ( NOT EXISTS ( SELECT * FROM [sysusers] WHERE [sid] = @SID ) ) ) BEGIN EXEC @RC=sp_grantdbaccess @accountName IF @RC <> 0 BEGIN SET @error = 50006 -- E_subProcFailure
SET @context = '' GOTO errorLabel END END
-- Add security account to UDDIService role
IF ( (@isDbo = 0) AND ( EXISTS ( SELECT * FROM [sysusers] WHERE [sid] = @SID ) ) ) BEGIN EXEC @RC=sp_addrolemember 'UDDIAdmin', @accountName IF @RC <> 0 BEGIN SET @error = 50006 -- E_subProcFailure
SET @context = '' GOTO errorLabel END END -- Get the previous account
CREATE TABLE #tempTable(
[dbRole] sysname, [memberName] sysname, [memberSID] varbinary(85))
INSERT #tempTable EXEC sp_helprolemember 'UDDIAdmin'
SELECT @prevAccountName = [memberName], @prevAccountSID = [memberSID] FROM #tempTable
WHERE [memberName] <> @accountName
-- Revoke database access from old account
IF (@prevAccountName IS NOT NULL) OR (@prevAccountSID IS NOT NULL) BEGIN EXEC @RC=sp_revokedbaccess @prevAccountName IF @RC <> 0 BEGIN SET @error = 50006 -- E_subProcFailure
SET @context = '' GOTO errorLabel END END
-- Add security account to sysadmin server role
--EXEC @RC=sp_addsrvrolemember @accountName, 'sysadmin' --
--IF @RC <> 0 --BEGIN --SET @error = 50006 -- E_subProcFailure
--SET @context = '' --GOTO errorLabel --END
RETURN 0
errorLabel: RAISERROR (@error, 16, 1, @context) RETURN 1 END -- ADM_setAdminAccount
GO
-- =============================================
-- Section: AD publication
-- =============================================
-- =============================================
-- Name: net_businessEntity_bindingTemplates_get
-- =============================================
IF EXISTS (SELECT name FROM sysobjects WHERE name = N'net_businessEntity_bindingTemplates_get' AND type = 'P') DROP PROCEDURE net_businessEntity_bindingTemplates_get GO
CREATE PROCEDURE net_businessEntity_bindingTemplates_get @businessKey uniqueidentifier WITH ENCRYPTION AS BEGIN DECLARE @error int, @context nvarchar(4000), @businessID bigint
SET @businessID = dbo.businessID(@businessKey)
IF @businessID IS NULL BEGIN SET @error = 60210 SET @context = 'businessKey=' + dbo.UUIDSTR(@businessKey) GOTO errorLabel END
SELECT BT.[bindingKey], BS.[serviceKey], UT.[URLType], BT.[accessPoint], BT.[hostingRedirector] FROM [UDC_bindingTemplates] BT JOIN [UDC_URLTypes] UT ON BT.[URLTypeID] = UT.[URLTypeID] JOIN [UDC_businessServices] BS ON BT.[serviceID] = BS.[serviceID] WHERE (BS.[businessID] = @businessID)
RETURN 0
errorLabel: RAISERROR (@error, 16, 1, @context) RETURN 1 END -- net_businessEntity_bindingTemplates_get
GO
|