You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
613 lines
14 KiB
613 lines
14 KiB
-- 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
|
|
|