init
This commit is contained in:
@@ -0,0 +1,97 @@
|
||||
-- =============================================
|
||||
-- Description: a dbo s<>m<EFBFBD>ban l<>v<EFBFBD> f<>ggv<67>nyek friss<73>t<EFBFBD>se az int<6E>zm<7A>nyi s<>m<EFBFBD>kba
|
||||
-- =============================================
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
|
||||
DROP PROCEDURE IF EXISTS [dbo].[sp_Global_CreateSchemaFunctions]
|
||||
GO
|
||||
|
||||
CREATE PROCEDURE [dbo].[sp_Global_CreateSchemaFunctions]
|
||||
@pSchemaName NVARCHAR(100), -- pl: 'KR_BEDO_Schema' | NULL eset<65>n az <20>sszes s<>m<EFBFBD>n v<>gigmegy
|
||||
@pFunctionNames XML -- pl: '<FunctionNames><FunctionName>fnGetHetNapja</FunctionName></FunctionNames>' | NULL eset<65>n az <20>sszes f<>ggv<67>nyen v<>gigmegy
|
||||
AS
|
||||
BEGIN
|
||||
|
||||
DECLARE @objectId INT
|
||||
DECLARE @functionName NVARCHAR(4000)
|
||||
DECLARE @functionDefinition NVARCHAR(MAX)
|
||||
DECLARE @schemaName NVARCHAR(100)
|
||||
DECLARE @deleteFunctionSQL NVARCHAR(4000)
|
||||
DECLARE @createFunctionSQL NVARCHAR(MAX)
|
||||
|
||||
DECLARE @schemaNames CURSOR
|
||||
IF @pSchemaName IS NOT NULL
|
||||
SET @schemaNames = CURSOR LOCAL FOR
|
||||
SELECT @pSchemaName
|
||||
ELSE
|
||||
SET @schemaNames = CURSOR LOCAL FOR
|
||||
SELECT name FROM sys.schemas
|
||||
WHERE principal_id = 1 AND name LIKE 'KR[_]%[_]Schema'
|
||||
ORDER BY name
|
||||
|
||||
DECLARE @functions CURSOR
|
||||
IF @pFunctionNames IS NOT NULL
|
||||
SET @functions = CURSOR LOCAL FOR
|
||||
SELECT DISTINCT f.object_id, f.name, m.definition
|
||||
FROM @pFunctionNames.nodes('FunctionNames/FunctionName') AS FunctionNames(FunctionName)
|
||||
INNER JOIN sys.all_objects f ON f.name = FunctionName.value('(.)[1]', 'varchar(100)')
|
||||
INNER JOIN sys.sql_modules m ON f.object_id = m.object_id
|
||||
INNER JOIN sys.schemas s ON s.schema_id = f.schema_id
|
||||
WHERE
|
||||
s.name ='dbo' AND f.type IN ('FN', 'AF', 'FS', 'FT', 'IF', 'TF')
|
||||
ELSE
|
||||
SET @functions = CURSOR LOCAL FOR
|
||||
SELECT f.object_id, f.name, m.definition
|
||||
FROM sys.all_objects f
|
||||
INNER JOIN sys.sql_modules m ON f.object_id = m.object_id
|
||||
INNER JOIN sys.schemas s ON s.schema_id = f.schema_id
|
||||
WHERE s.name ='dbo' AND f.type IN ('FN', 'AF', 'FS', 'FT', 'IF', 'TF')
|
||||
ORDER BY f.name
|
||||
|
||||
OPEN @functions
|
||||
FETCH NEXT FROM @functions INTO @objectId, @functionName, @functionDefinition
|
||||
|
||||
WHILE @@FETCH_STATUS = 0 BEGIN
|
||||
IF OBJECT_ID(@objectId) IS NULL BEGIN
|
||||
SET @functionDefinition = REPLACE(@functionDefinition, 'CREATE FUNCTION dbo.fn','CREATE FUNCTION fn')
|
||||
SET @functionDefinition = REPLACE(@functionDefinition, 'CREATE FUNCTION [dbo].fn','CREATE FUNCTION fn')
|
||||
SET @functionDefinition = REPLACE(@functionDefinition, 'dbo.fn','#schemaName#.fn')
|
||||
SET @functionDefinition = REPLACE(@functionDefinition, '[dbo].fn','#schemaName#.fn')
|
||||
SET @functionDefinition = REPLACE(@functionDefinition, 'dbo.','')
|
||||
SET @functionDefinition = REPLACE(@functionDefinition, '[dbo].','')
|
||||
|
||||
OPEN @schemaNames
|
||||
FETCH NEXT FROM @schemaNames INTO @schemaName
|
||||
|
||||
WHILE @@FETCH_STATUS = 0 BEGIN
|
||||
SET @deleteFunctionSQL = 'IF OBJECT_ID(''[' + @schemaName + '].' + @functionName + ''') IS NOT NULL
|
||||
DROP FUNCTION [' + @schemaName + '].' + @functionName
|
||||
|
||||
SET @createFunctionSQL = REPLACE(@functionDefinition, 'CREATE FUNCTION ','CREATE FUNCTION [' + @schemaName + '].')
|
||||
SET @createFunctionSQL = REPLACE(@createFunctionSQL, '#schemaName#.fn','[' + @schemaName + '].fn')
|
||||
|
||||
PRINT CAST(@objectId AS VARCHAR(10)) + ' ' + @functionName + ' ' + @schemaName
|
||||
|
||||
EXEC sp_executesql @deleteFunctionSQL
|
||||
EXEC sp_executesql @createFunctionSQL
|
||||
|
||||
FETCH NEXT FROM @schemaNames INTO @schemaName
|
||||
END
|
||||
|
||||
CLOSE @schemaNames
|
||||
END
|
||||
|
||||
FETCH NEXT FROM @functions INTO @objectId, @functionName, @functionDefinition
|
||||
END
|
||||
|
||||
CLOSE @functions
|
||||
DEALLOCATE @functions
|
||||
DEALLOCATE @schemaNames
|
||||
|
||||
END
|
||||
|
||||
GO
|
@@ -0,0 +1,96 @@
|
||||
-- =============================================
|
||||
-- Description: a dbo s<>m<EFBFBD>ban l<>v<EFBFBD> nem glob<6F>lis t<>rolt elj<6C>r<EFBFBD>sok friss<73>t<EFBFBD>se az int<6E>zm<7A>nyi s<>m<EFBFBD>kba
|
||||
-- =============================================
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
|
||||
DROP PROCEDURE IF EXISTS [dbo].[sp_Global_CreateSchemaStoredProcedures]
|
||||
GO
|
||||
|
||||
CREATE PROCEDURE [dbo].[sp_Global_CreateSchemaStoredProcedures]
|
||||
@pSchemaName NVARCHAR(100), -- pl: 'KR_BEDO_Schema' | NULL eset<65>n az <20>sszes s<>m<EFBFBD>n v<>gigmegy
|
||||
@pStoredProcedureNames XML -- pl: '<StoredProcedureNames><StoredProcedureName>sp_GetOrarend</StoredProcedureName></StoredProcedureNames>' | NULL eset<65>n az <20>sszes nem glob<6F>lis t<>rolt elj<6C>r<EFBFBD>son v<>gigmegy
|
||||
AS
|
||||
BEGIN
|
||||
|
||||
DECLARE @objectId INT
|
||||
DECLARE @storedProcedureName NVARCHAR(4000)
|
||||
DECLARE @storedProcedureDefinition NVARCHAR(MAX)
|
||||
DECLARE @schemaName NVARCHAR(100)
|
||||
DECLARE @deleteStoredProcedureSQL NVARCHAR(4000)
|
||||
DECLARE @createStoredProcedureSQL NVARCHAR(MAX)
|
||||
|
||||
DECLARE @schemaNames CURSOR
|
||||
IF @pSchemaName IS NOT NULL
|
||||
SET @schemaNames = CURSOR LOCAL FOR
|
||||
SELECT @pSchemaName
|
||||
ELSE
|
||||
SET @schemaNames = CURSOR LOCAL FOR
|
||||
SELECT name FROM sys.schemas s
|
||||
INNER join T_INTEZMENY i ON 'KR_' + i.C_AZONOSITO + '_schema' = s.name
|
||||
WHERE principal_id = 1 AND name LIKE 'KR[_]%[_]Schema'
|
||||
ORDER BY name
|
||||
|
||||
DECLARE @storedProcedures CURSOR
|
||||
IF @pStoredProcedureNames IS NOT NULL
|
||||
SET @storedProcedures = CURSOR LOCAL FOR
|
||||
SELECT DISTINCT p.object_id, p.name, m.Definition
|
||||
FROM @pStoredProcedureNames.nodes('StoredProcedureNames/StoredProcedureName') AS StoredProcedureNames(StoredProcedureName)
|
||||
INNER JOIN sys.procedures p ON p.name = StoredProcedureName.value('(.)[1]', 'varchar(100)')
|
||||
INNER JOIN sys.sql_modules m ON p.object_id = m.object_id
|
||||
INNER JOIN sys.schemas s ON s.schema_id = p.schema_id
|
||||
WHERE
|
||||
s.name ='dbo'
|
||||
ELSE
|
||||
SET @storedProcedures = CURSOR LOCAL FOR
|
||||
SELECT p.object_id, p.name, m.Definition
|
||||
FROM sys.procedures p
|
||||
INNER JOIN sys.sql_modules m ON p.object_id = m.object_id
|
||||
INNER JOIN sys.schemas s ON s.schema_id = p.schema_id
|
||||
WHERE s.name ='dbo' AND p.name NOT LIKE 'sp_Global_%'
|
||||
ORDER BY p.name
|
||||
|
||||
OPEN @storedProcedures
|
||||
FETCH NEXT FROM @storedProcedures INTO @objectId, @storedProcedureName, @storedProcedureDefinition
|
||||
|
||||
WHILE @@FETCH_STATUS = 0 BEGIN
|
||||
IF OBJECT_ID(@objectId) IS NULL BEGIN
|
||||
SET @storedProcedureDefinition = REPLACE(@storedProcedureDefinition, 'dbo.fn','#schemaName#.fn')
|
||||
SET @storedProcedureDefinition = REPLACE(@storedProcedureDefinition, 'dbo.[fn','#schemaName#.[fn')
|
||||
SET @storedProcedureDefinition = REPLACE(@storedProcedureDefinition, '[dbo].fn','#schemaName#.fn')
|
||||
SET @storedProcedureDefinition = REPLACE(@storedProcedureDefinition, '[dbo].[fn','#schemaName#.[fn')
|
||||
SET @storedProcedureDefinition = REPLACE(@storedProcedureDefinition, 'dbo.','')
|
||||
SET @storedProcedureDefinition = REPLACE(@storedProcedureDefinition, '[dbo].','')
|
||||
|
||||
OPEN @schemaNames
|
||||
FETCH NEXT FROM @schemaNames INTO @schemaName
|
||||
|
||||
WHILE @@FETCH_STATUS = 0 BEGIN
|
||||
|
||||
SET @createStoredProcedureSQL = REPLACE(@storedProcedureDefinition, 'CREATE PROCEDURE ','CREATE OR ALTER PROCEDURE [' + @schemaName + '].')
|
||||
SET @createStoredProcedureSQL = REPLACE(@createStoredProcedureSQL, '#schemaName#.fn','[' + @schemaName + '].fn')
|
||||
SET @createStoredProcedureSQL = REPLACE(@createStoredProcedureSQL, '#schemaName#.[fn','[' + @schemaName + '].[fn')
|
||||
|
||||
PRINT CAST(@objectId AS VARCHAR(10)) + ' ' + @storedProcedureName + ' ' + @schemaName
|
||||
|
||||
EXEC sp_executesql @createStoredProcedureSQL
|
||||
|
||||
FETCH NEXT FROM @schemaNames INTO @schemaName
|
||||
END
|
||||
|
||||
CLOSE @schemaNames
|
||||
END
|
||||
|
||||
FETCH NEXT FROM @storedProcedures INTO @objectId, @storedProcedureName, @storedProcedureDefinition
|
||||
END
|
||||
|
||||
CLOSE @storedProcedures
|
||||
DEALLOCATE @storedProcedures
|
||||
DEALLOCATE @schemaNames
|
||||
|
||||
END
|
||||
|
||||
GO
|
Reference in New Issue
Block a user