---------------------------------------------------------- Listing 1 ---------------------------------------------------------- USE master GO IF EXISTS (SELECT * FROM sysobjects WHERE name = 'sp_DBAWorkMaster') DROP PROCEDURE dbo.sp_DBAWorkMaster GO IF EXISTS (SELECT * FROM sysobjects WHERE name = 'sp_DBAWorkFormat') DROP PROCEDURE dbo.sp_DBAWorkFormat GO IF EXISTS (SELECT * FROM sysobjects WHERE name = 'sp_CreateTriggerCI') DROP PROCEDURE dbo.sp_CreateTriggerCI GO IF EXISTS (SELECT * FROM sysobjects WHERE name = 'sp_CreateTriggerCU') DROP PROCEDURE dbo.sp_CreateTriggerCU GO IF EXISTS (SELECT * FROM sysobjects WHERE name = 'sp_CreateProcedureCI') DROP PROCEDURE dbo.sp_CreateProcedureCI GO IF EXISTS (SELECT * FROM sysobjects WHERE name = 'sp_CreateProcedureCU') DROP PROCEDURE dbo.sp_CreateProcedureCU GO IF EXISTS (SELECT * FROM sysobjects WHERE name = 'sp_CreateProcedureCD') DROP PROCEDURE dbo.sp_CreateProcedureCD GO IF EXISTS (SELECT * FROM sysobjects WHERE name = 'sp_CreateProcedureCS') DROP PROCEDURE dbo.sp_CreateProcedureCS GO IF EXISTS (SELECT * FROM sysobjects WHERE name = 'sp_CreateProcedureKD') DROP PROCEDURE dbo.sp_CreateProcedureKD GO IF EXISTS (SELECT * FROM sysobjects WHERE name = 'sp_CreateProcedureKS') DROP PROCEDURE dbo.sp_CreateProcedureKS GO IF EXISTS (SELECT * FROM sysobjects WHERE name = 'sp_CreateFunctionKS') DROP PROCEDURE dbo.sp_CreateFunctionKS GO IF EXISTS (SELECT * FROM sysobjects WHERE name = 'sp_CreateAllObjects') DROP PROCEDURE dbo.sp_CreateAllObjects GO IF EXISTS (SELECT * FROM sysobjects WHERE name = 'sp_DeleteAllObjects') DROP PROCEDURE dbo.sp_DeleteAllObjects GO IF EXISTS (SELECT * FROM sysobjects WHERE name = 'sp_ReviewAllObjects') DROP PROCEDURE dbo.sp_ReviewAllObjects GO -- Create Routines GO CREATE PROCEDURE dbo.sp_DBAWorkMaster AS SET NOCOUNT ON DECLARE @Return int DECLARE @Retain int DECLARE @Status int SET @Status = 0 -- CREATE TABLE #DBAK (Name varchar(40), Work tinyint IDENTITY(1,1)) -- CREATE TABLE #DBAM (Mask varchar(10), Work tinyint IDENTITY(1,1)) INSERT #DBAK VALUES ('*ID') -- 1 INSERT #DBAK VALUES ('CreateUser') -- 2 INSERT #DBAK VALUES ('CreateDate') -- 3 INSERT #DBAK VALUES ('ModifyUser') -- 4 INSERT #DBAK VALUES ('ModifyDate') -- 5 INSERT #DBAK VALUES ('DetectWork') -- 6 INSERT #DBAK VALUES ('RecordMask') -- 7 INSERT #DBAM VALUES ('trgGRAI') -- 01 INSERT #DBAM VALUES ('trgGRAU') -- 02 INSERT #DBAM VALUES ('trgGRAD') -- 03 INSERT #DBAM VALUES ('trgGRCI') -- 04 INSERT #DBAM VALUES ('trgGRCU') -- 05 INSERT #DBAM VALUES ('trgGRCD') -- 06 INSERT #DBAM VALUES ('uspGRCI') -- 07 INSERT #DBAM VALUES ('uspGRCU') -- 08 INSERT #DBAM VALUES ('uspGRCD') -- 09 INSERT #DBAM VALUES ('uspGRCS') -- 10 INSERT #DBAM VALUES ('uspGRKD') -- 11 INSERT #DBAM VALUES ('uspGRKS') -- 12 INSERT #DBAM VALUES ('udfGRKS') -- 13 INSERT #DBAM VALUES ('qryGROS') -- 14 INSERT #DBAM VALUES ('qryGRES') -- 15 IF EXISTS (SELECT * FROM master.dbo.sysobjects WHERE name = 'DBAction') BEGIN EXECUTE ('UPDATE #DBAK SET Name = I.Name FROM #DBAK AS T JOIN master.dbo.DBAction AS I ON T.Name = I.TKey') EXECUTE ('UPDATE #DBAM SET Mask = I.Name FROM #DBAM AS T JOIN master.dbo.DBAction AS I ON T.Mask = I.TKey') END -- DROP TABLE #DBAK -- DROP TABLE #DBAM SET NOCOUNT OFF RETURN (@Status) GO CREATE PROCEDURE dbo.sp_DBAWorkFormat @Base varchar(100) OUTPUT, @Kind varchar(20), @Size int, @Wide smallint, @More smallint, @Name smallint AS DECLARE @Work varchar(40) DECLARE @Wink smallint SET @Work = CASE WHEN @Kind IN ('decimal','numeric') THEN @Kind + '(' + STR(@Wide,2) + ',' + STR(@More,2) + ')' WHEN @Kind IN ('float') THEN @Kind + '(' + STR(@Wide,2) + ')' WHEN @Kind IN ('char','varchar') THEN @Kind + '(' + STR(@Size,4) + ')' WHEN @Kind IN ('nchar','nvarchar') THEN @Kind + '(' + STR(@Size,4) + ')' WHEN @Kind IN ('binary','varbinary') THEN @Kind + '(' + STR(@Size,4) + ')' ELSE @Kind END SET @Save = 62 - LEN(@Same) - LEN(@Work) IF @Save < 2 SET @Save = 72 - LEN(@Same) - LEN(@Work) IF @Save < 2 SET @Save = 82 - LEN(@Same) - LEN(@Work) IF @Save < 2 SET @Save = 02 SET @Base = SPACE(@Wink) + @Work RETURN (0) GO CREATE PROCEDURE dbo.sp_CreateTriggerCI @DBIntra varchar(8000) = NULL, @DBExtra varchar(8000) = NULL, @PCIntra varchar(100) = NULL, @PCExtra varchar(100) = NULL, @DBWhose varchar(2000) = NULL, @PCUltra bit = 0 AS SET NOCOUNT ON DECLARE @Return int DECLARE @Retain int DECLARE @Status int SET @Status = 0 DECLARE @TPre varchar(10) DECLARE @TDo3 tinyint DECLARE @TDo4 tinyint SET @TPre = '' SET @TDo3 = LEN(@TPre) SET @TDo4 = LEN(@TPre) + 1 DECLARE @Task varchar(2000) DECLARE @Name varchar(100) DECLARE @Same varchar(100) DECLARE @Tame varchar(100) DECLARE @Work varchar(100) DECLARE @Wish varchar(10) DECLARE @Rows int DECLARE @PKey int DECLARE @ZKey int DECLARE @FKey int DECLARE @Date varchar(8) DECLARE @Time varchar(8) SET @Date = CONVERT(varchar(8),GETDATE(),1) SET @Time = CONVERT(varchar(8),GETDATE(),8) CREATE TABLE #DBAK (Name varchar(40), Work tinyint IDENTITY(1,1)) CREATE TABLE #DBAM (Mask varchar(10), Work tinyint IDENTITY(1,1)) EXECUTE @Return = dbo.sp_DBAWorkMaster SELECT @Same = Name FROM #DBAK WHERE Work = 3 SELECT @Wish = Mask FROM #DBAM WHERE Work = 04 IF ISNULL(@PCUltra,0) = 0 BEGIN CREATE TABLE #DBAT (FKey int, Name varchar(100), Same varchar(100), Rank smallint, Kind varchar(20), Mask bit, Bond bit, Size int, Wide smallint, More smallint) INSERT #DBAT (FKey, Name, Same, Rank, Kind, Mask, Bond, Size, Wide, More) SELECT O.id , O.name , C.name , C.colid , T.name , C.isnullable , C.iscomputed , C.length , C.prec , C.scale FROM sysobjects AS O JOIN syscolumns AS C ON O.id = C.id JOIN systypes AS T ON C.xusertype = T.xusertype WHERE ISNULL(OBJECTPROPERTY(O.id,'IsMSShipped'),1) = 0 AND RTRIM(O.type) = 'U' AND LEFT(O.name,@TDo3) = @TPre AND O.name NOT LIKE 'adt%' AND O.name NOT LIKE '%dtproper%' AND O.name NOT LIKE 'dt[_]%' SET @Retain = @@ERROR IF @Status = 0 SET @Status = @Retain END DECLARE Tables CURSOR FAST_FORWARD FOR SELECT Name, Same, FKey FROM #DBAT WHERE Rank = 1 AND (@DBIntra IS NULL OR CHARINDEX('|'+SUBSTRING(Name,@TDo4,100)+'|','|'+(@DBIntra)+'|') > 0) AND (@DBExtra IS NULL OR CHARINDEX('|'+SUBSTRING(Name,@TDo4,100)+'|','|'+(@DBExtra)+'|') = 0) AND (@PCIntra IS NULL OR SUBSTRING(Name,@TDo4,100) LIKE @PCIntra) AND (@PCExtra IS NULL OR SUBSTRING(Name,@TDo4,100) NOT LIKE @PCExtra) ORDER BY Name OPEN Tables FETCH NEXT FROM Tables INTO @Name, @Tame, @FKey WHILE @@FETCH_STATUS = 0 AND @Status = 0 BEGIN SELECT @Rows = COUNT(*) FROM #DBAT WHERE Name = @Name AND Same = @Same IF @Rows = 1 BEGIN SET @Work = SUBSTRING(@Name,@TDo4,100) PRINT 'IF EXISTS (SELECT * FROM sysobjects WHERE name = ' + CHAR(39) + @Wish + @Work + CHAR(39) + ') DROP TRIGGER ' + @Wish + @Work PRINT 'GO' PRINT '-- Generated by DBAction' PRINT '-- Generated on ' + @Date PRINT '-- Generated at ' + @Time PRINT 'CREATE TRIGGER ' + @Wish + @Work + ' ON ' + @Name PRINT 'FOR INSERT' PRINT 'AS' IF LEN(ISNULL(@DBWhose,SPACE(0))) > 0 PRINT 'IF ' + REPLACE(@DBWhose,CHAR(94),CHAR(39)) PRINT 'BEGIN' PRINT 'SET NOCOUNT ON' PRINT 'UPDATE ' + @Name + ' SET ' + @Same + ' = GETDATE() FROM ' + @Name + ' AS T JOIN Inserted AS I ON T.' + @Tame + ' = I.' + @Tame + '' PRINT 'SET NOCOUNT OFF' PRINT 'END' PRINT 'GO' PRINT SPACE(0) END FETCH NEXT FROM Tables INTO @Name, @Tame, @FKey END CLOSE Tables DEALLOCATE Tables IF ISNULL(@PCUltra,0) = 0 BEGIN DROP TABLE #DBAT END DROP TABLE #DBAK DROP TABLE #DBAM SET NOCOUNT OFF RETURN (@Status) GO CREATE PROCEDURE dbo.sp_CreateTriggerCU @DBIntra varchar(8000) = NULL, @DBExtra varchar(8000) = NULL, @PCIntra varchar(100) = NULL, @PCExtra varchar(100) = NULL, @DBWhose varchar(2000) = NULL, @PCUltra bit = 0 AS SET NOCOUNT ON DECLARE @Return int DECLARE @Retain int DECLARE @Status int SET @Status = 0 DECLARE @TPre varchar(10) DECLARE @TDo3 tinyint DECLARE @TDo4 tinyint SET @TPre = '' SET @TDo3 = LEN(@TPre) SET @TDo4 = LEN(@TPre) + 1 DECLARE @Task varchar(2000) DECLARE @Name varchar(100) DECLARE @Same varchar(100) DECLARE @Tame varchar(100) DECLARE @Work varchar(100) DECLARE @Wish varchar(10) DECLARE @Rows int DECLARE @PKey int DECLARE @ZKey int DECLARE @FKey int DECLARE @Date varchar(8) DECLARE @Time varchar(8) SET @Date = CONVERT(varchar(8),GETDATE(),1) SET @Time = CONVERT(varchar(8),GETDATE(),8) CREATE TABLE #DBAK (Name varchar(40), Work tinyint IDENTITY(1,1)) CREATE TABLE #DBAM (Mask varchar(10), Work tinyint IDENTITY(1,1)) EXECUTE @Return = dbo.sp_DBAWorkMaster SELECT @Same = Name FROM #DBAK WHERE Work = 5 SELECT @Wish = Mask FROM #DBAM WHERE Work = 05 IF ISNULL(@PCUltra,0) = 0 BEGIN CREATE TABLE #DBAT (FKey int, Name varchar(100), Same varchar(100), Rank smallint, Kind varchar(20), Mask bit, Bond bit, Size int, Wide smallint, More smallint) INSERT #DBAT (FKey, Name, Same, Rank, Kind, Mask, Bond, Size, Wide, More) SELECT O.id , O.name , C.name , C.colid , T.name , C.isnullable , C.iscomputed , C.length , C.prec , C.scale FROM sysobjects AS O JOIN syscolumns AS C ON O.id = C.id JOIN systypes AS T ON C.xusertype = T.xusertype WHERE ISNULL(OBJECTPROPERTY(O.id,'IsMSShipped'),1) = 0 AND RTRIM(O.type) = 'U' AND LEFT(O.name,@TDo3) = @TPre AND O.name NOT LIKE 'adt%' AND O.name NOT LIKE '%dtproper%' AND O.name NOT LIKE 'dt[_]%' SET @Retain = @@ERROR IF @Status = 0 SET @Status = @Retain END DECLARE Tables CURSOR FAST_FORWARD FOR SELECT Name, Same, FKey FROM #DBAT WHERE Rank = 1 AND (@DBIntra IS NULL OR CHARINDEX('|'+SUBSTRING(Name,@TDo4,100)+'|','|'+(@DBIntra)+'|') > 0) AND (@DBExtra IS NULL OR CHARINDEX('|'+SUBSTRING(Name,@TDo4,100)+'|','|'+(@DBExtra)+'|') = 0) AND (@PCIntra IS NULL OR SUBSTRING(Name,@TDo4,100) LIKE @PCIntra) AND (@PCExtra IS NULL OR SUBSTRING(Name,@TDo4,100) NOT LIKE @PCExtra) ORDER BY Name OPEN Tables FETCH NEXT FROM Tables INTO @Name, @Tame, @FKey WHILE @@FETCH_STATUS = 0 AND @Status = 0 BEGIN SELECT @Rows = COUNT(*) FROM #DBAT WHERE Name = @Name AND Same = @Same IF @Rows = 1 BEGIN SET @Work = SUBSTRING(@Name,@TDo4,100) PRINT 'IF EXISTS (SELECT * FROM sysobjects WHERE name = ' + CHAR(39) + @Wish + @Work + CHAR(39) + ') DROP TRIGGER ' + @Wish + @Work PRINT 'GO' PRINT '-- Generated by DBAction' PRINT '-- Generated on ' + @Date PRINT '-- Generated at ' + @Time PRINT 'CREATE TRIGGER ' + @Wish + @Work + ' ON ' + @Name PRINT 'FOR UPDATE' PRINT 'AS' IF LEN(ISNULL(@DBWhose,SPACE(0))) > 0 PRINT 'IF ' + REPLACE(@DBWhose,CHAR(94),CHAR(39)) PRINT 'BEGIN' PRINT 'SET NOCOUNT ON' PRINT 'UPDATE ' + @Name + ' SET ' + @Same + ' = GETDATE() FROM ' + @Name + ' AS T JOIN Inserted AS I ON T.' + @Tame + ' = I.' + @Tame + '' PRINT 'SET NOCOUNT OFF' PRINT 'END' PRINT 'GO' PRINT SPACE(0) END FETCH NEXT FROM Tables INTO @Name, @Tame, @FKey END CLOSE Tables DEALLOCATE Tables IF ISNULL(@PCUltra,0) = 0 BEGIN DROP TABLE #DBAT END DROP TABLE #DBAK DROP TABLE #DBAM SET NOCOUNT OFF RETURN (@Status) GO CREATE PROCEDURE dbo.sp_CreateProcedureCI @DBIntra varchar(8000) = NULL, @DBExtra varchar(8000) = NULL, @PCIntra varchar(100) = NULL, @PCExtra varchar(100) = NULL, @PCUltra bit = 0 AS SET NOCOUNT ON DECLARE @Return int DECLARE @Retain int DECLARE @Status int SET @Status = 0 DECLARE @TPre varchar(10) DECLARE @TDo3 tinyint DECLARE @TDo4 tinyint SET @TPre = '' SET @TDo3 = LEN(@TPre) SET @TDo4 = LEN(@TPre) + 1 DECLARE @Task varchar(2000) DECLARE @Name varchar(100) DECLARE @Same varchar(100) DECLARE @Tame varchar(100) DECLARE @Rank smallint DECLARE @Kind varchar(20) DECLARE @Mask bit DECLARE @Bond bit DECLARE @Size int DECLARE @Wide smallint DECLARE @More smallint DECLARE @Came varchar(100) DECLARE @DBAI varchar(8000) DECLARE @DBAO varchar(8000) DECLARE @DBAU varchar(8000) DECLARE @Work varchar(100) DECLARE @Wish varchar(10) DECLARE @FNCU varchar(40), @FPCU bit, @FSCU bit DECLARE @FNCD varchar(40), @FPCD bit DECLARE @FNMU varchar(40), @FPMU bit, @FSMU bit DECLARE @FNMD varchar(40), @FPMD bit DECLARE @FNRW varchar(40), @FPRW bit DECLARE @FNRS varchar(40), @FPRS bit DECLARE @Save int DECLARE @PKey int DECLARE @ZKey int DECLARE @FKey int DECLARE @Date varchar(8) DECLARE @Time varchar(8) SET @Date = CONVERT(varchar(8),GETDATE(),1) SET @Time = CONVERT(varchar(8),GETDATE(),8) DECLARE @User varchar(40) DECLARE @When varchar(40) SET @User = 'SYSTEM_USER' SET @When = 'GETDATE()' CREATE TABLE #DBAK (Name varchar(40), Work tinyint IDENTITY(1,1)) CREATE TABLE #DBAM (Mask varchar(10), Work tinyint IDENTITY(1,1)) EXECUTE @Return = dbo.sp_DBAWorkMaster SELECT @FNCU = Name FROM #DBAK WHERE Work = 2 SELECT @FNCD = Name FROM #DBAK WHERE Work = 3 SELECT @FNMU = Name FROM #DBAK WHERE Work = 4 SELECT @FNMD = Name FROM #DBAK WHERE Work = 5 SELECT @FNRW = Name FROM #DBAK WHERE Work = 6 SELECT @FNRS = Name FROM #DBAK WHERE Work = 7 SELECT @Wish = Mask FROM #DBAM WHERE Work = 07 IF ISNULL(@PCUltra,0) = 0 BEGIN CREATE TABLE #DBAT (FKey int, Name varchar(100), Same varchar(100), Rank smallint, Kind varchar(20), Mask bit, Bond bit, Size int, Wide smallint, More smallint) INSERT #DBAT (FKey, Name, Same, Rank, Kind, Mask, Bond, Size, Wide, More) SELECT O.id , O.name , C.name , C.colid , T.name , C.isnullable , C.iscomputed , C.length , C.prec , C.scale FROM sysobjects AS O JOIN syscolumns AS C ON O.id = C.id JOIN systypes AS T ON C.xusertype = T.xusertype WHERE ISNULL(OBJECTPROPERTY(O.id,'IsMSShipped'),1) = 0 AND RTRIM(O.type) = 'U' AND LEFT(O.name,@TDo3) = @TPre AND O.name NOT LIKE 'adt%' AND O.name NOT LIKE '%dtproper%' AND O.name NOT LIKE 'dt[_]%' SET @Retain = @@ERROR IF @Status = 0 SET @Status = @Retain END DECLARE Tables CURSOR FAST_FORWARD FOR SELECT Name, Same, FKey FROM #DBAT WHERE Rank = 1 AND (@DBIntra IS NULL OR CHARINDEX('|'+SUBSTRING(Name,@TDo4,100)+'|','|'+(@DBIntra)+'|') > 0) AND (@DBExtra IS NULL OR CHARINDEX('|'+SUBSTRING(Name,@TDo4,100)+'|','|'+(@DBExtra)+'|') = 0) AND (@PCIntra IS NULL OR SUBSTRING(Name,@TDo4,100) LIKE @PCIntra) AND (@PCExtra IS NULL OR SUBSTRING(Name,@TDo4,100) NOT LIKE @PCExtra) ORDER BY Name OPEN Tables FETCH NEXT FROM Tables INTO @Name, @Tame, @FKey WHILE @@FETCH_STATUS = 0 AND @Status = 0 BEGIN IF EXISTS (SELECT * FROM #DBAT WHERE Name = @Name AND Same = @FNCU) SET @FPCU = 1 ELSE SET @FPCU = 0 IF EXISTS (SELECT * FROM #DBAT WHERE Name = @Name AND Same = @FNCD) SET @FPCD = 1 ELSE SET @FPCD = 0 IF EXISTS (SELECT * FROM #DBAT WHERE Name = @Name AND Same = @FNMU) SET @FPMU = 1 ELSE SET @FPMU = 0 IF EXISTS (SELECT * FROM #DBAT WHERE Name = @Name AND Same = @FNMD) SET @FPMD = 1 ELSE SET @FPMD = 0 IF EXISTS (SELECT * FROM #DBAT WHERE Name = @Name AND Same = @FNRW) SET @FPRW = 1 ELSE SET @FPRW = 0 IF EXISTS (SELECT * FROM #DBAT WHERE Name = @Name AND Same = @FNRS) SET @FPRS = 1 ELSE SET @FPRS = 0 IF (SELECT TOP 1 Kind FROM #DBAT WHERE Name = @Name AND Same = @FNCU) LIKE '%int' SET @FSCU = 0 ELSE SET @FSCU = 1 IF (SELECT TOP 1 Kind FROM #DBAT WHERE Name = @Name AND Same = @FNMU) LIKE '%int' SET @FSMU = 0 ELSE SET @FSMU = 1 SET @DBAI = '' SET @DBAO = '' SET @DBAU = '' DECLARE Fields CURSOR FAST_FORWARD FOR SELECT Same, Rank, Kind, Mask, Bond, Size, Wide, More FROM #DBAT WHERE FKey = @FKey AND Bond = 0 ORDER BY Rank OPEN Fields FETCH NEXT FROM Fields INTO @Same, @Rank, @Kind, @Mask, @Bond, @Size, @Wide, @More WHILE @@FETCH_STATUS = 0 AND @Status = 0 BEGIN SET @Save = LEN(@Same) EXECUTE dbo.sp_DBAWorkFormat @Work OUTPUT, @Kind, @Size, @Wide, @More, @Save IF @Rank > 1 SET @DBAI = @DBAI + CHAR(13) + CHAR(10) + SPACE(5) + ', ' IF @Rank > 2 SET @DBAO = @DBAO + CHAR(13) + CHAR(10) + SPACE(5) + ', ' IF @Rank > 2 SET @DBAU = @DBAU + CHAR(13) + CHAR(10) + SPACE(5) + ', ' IF @Rank = 1 BEGIN SET @DBAI = @DBAI + SPACE(7) + '@' + @Tame + @Work + ' OUTPUT' END ELSE BEGIN SET @DBAI = @DBAI + '@' + @Same + @Work SET @DBAO = @DBAO + ' ' + @Same SET @DBAU = @DBAU + '@' + @Same IF @Same = @FNRW SET @DBAI = @DBAI + ' = 1' IF @Same = @FNRS SET @DBAI = @DBAI + ' = 1' END IF @Mask <> 0 BEGIN SET @DBAI = @DBAI + ' = NULL' END FETCH NEXT FROM Fields INTO @Same, @Rank, @Kind, @Mask, @Bond, @Size, @Wide, @More END CLOSE Fields DEALLOCATE Fields SET @Work = SUBSTRING(@Name,@TDo4,100) PRINT 'IF EXISTS (SELECT * FROM sysobjects WHERE name = ' + CHAR(39) + @Wish + @Work + CHAR(39) + ') DROP PROCEDURE dbo.' + @Wish + @Work PRINT 'GO' PRINT '-- Generated by DBAction' PRINT '-- Generated on ' + @Date PRINT '-- Generated at ' + @Time PRINT 'CREATE PROCEDURE dbo.' + @Wish + @Work PRINT @DBAI PRINT 'AS' PRINT 'DECLARE @Status int' IF @FPCU<>0 AND @FSCU<>0 PRINT 'SET @' + @FNCU + ' = ISNULL(@' + @FNCU + ',' + @User + ')' IF @FPCD<>0 PRINT 'SET @' + @FNCD + ' = ISNULL(@' + @FNCD + ',' + @When + ')' IF @FPCU<>0 AND @FPMU<>0 PRINT 'SET @' + @FNMU + ' = ISNULL(@' + @FNMU + ',@' + @FNCU + ')' IF @FPCD<>0 AND @FPMD<>0 PRINT 'SET @' + @FNMD + ' = ISNULL(@' + @FNMD + ',@' + @FNCD + ')' PRINT 'INSERT ' + @Name PRINT ' ( ' + @DBAO + ')' PRINT 'VALUES ' PRINT ' ( ' + @DBAU + ')' PRINT 'SET @Status = @@ERROR' PRINT 'SET @' + @Tame + ' = @@IDENTITY' PRINT 'RETURN (@Status)' PRINT 'GO' PRINT SPACE(0) FETCH NEXT FROM Tables INTO @Name, @Tame, @FKey END CLOSE Tables DEALLOCATE Tables IF ISNULL(@PCUltra,0) = 0 BEGIN DROP TABLE #DBAT END DROP TABLE #DBAK DROP TABLE #DBAM SET NOCOUNT OFF RETURN (@Status) GO CREATE PROCEDURE dbo.sp_CreateProcedureCU @DBIntra varchar(8000) = NULL, @DBExtra varchar(8000) = NULL, @PCIntra varchar(100) = NULL, @PCExtra varchar(100) = NULL, @PCUltra bit = 0 AS SET NOCOUNT ON DECLARE @Return int DECLARE @Retain int DECLARE @Status int SET @Status = 0 DECLARE @TPre varchar(10) DECLARE @TDo3 tinyint DECLARE @TDo4 tinyint SET @TPre = '' SET @TDo3 = LEN(@TPre) SET @TDo4 = LEN(@TPre) + 1 DECLARE @Task varchar(2000) DECLARE @Name varchar(100) DECLARE @Same varchar(100) DECLARE @Tame varchar(100) DECLARE @Rank smallint DECLARE @Kind varchar(20) DECLARE @Mask bit DECLARE @Bond bit DECLARE @Size int DECLARE @Wide smallint DECLARE @More smallint DECLARE @Came varchar(100) DECLARE @DBAI varchar(8000) DECLARE @DBAO varchar(8000) DECLARE @DBAU varchar(8000) DECLARE @Work varchar(100) DECLARE @Wish varchar(10) DECLARE @FNCU varchar(40), @FPCU bit, @FSCU bit DECLARE @FNCD varchar(40), @FPCD bit DECLARE @FNMU varchar(40), @FPMU bit, @FSMU bit DECLARE @FNMD varchar(40), @FPMD bit DECLARE @FNRW varchar(40), @FPRW bit DECLARE @FNRS varchar(40), @FPRS bit DECLARE @Save int DECLARE @PKey int DECLARE @ZKey int DECLARE @FKey int DECLARE @Date varchar(8) DECLARE @Time varchar(8) SET @Date = CONVERT(varchar(8),GETDATE(),1) SET @Time = CONVERT(varchar(8),GETDATE(),8) DECLARE @User varchar(40) DECLARE @When varchar(40) SET @User = 'SYSTEM_USER' SET @When = 'GETDATE()' CREATE TABLE #DBAK (Name varchar(40), Work tinyint IDENTITY(1,1)) CREATE TABLE #DBAM (Mask varchar(10), Work tinyint IDENTITY(1,1)) EXECUTE @Return = dbo.sp_DBAWorkMaster SELECT @FNCU = Name FROM #DBAK WHERE Work = 2 SELECT @FNCD = Name FROM #DBAK WHERE Work = 3 SELECT @FNMU = Name FROM #DBAK WHERE Work = 4 SELECT @FNMD = Name FROM #DBAK WHERE Work = 5 SELECT @FNRW = Name FROM #DBAK WHERE Work = 6 SELECT @FNRS = Name FROM #DBAK WHERE Work = 7 SELECT @Wish = Mask FROM #DBAM WHERE Work = 08 IF ISNULL(@PCUltra,0) = 0 BEGIN CREATE TABLE #DBAT (FKey int, Name varchar(100), Same varchar(100), Rank smallint, Kind varchar(20), Mask bit, Bond bit, Size int, Wide smallint, More smallint) INSERT #DBAT (FKey, Name, Same, Rank, Kind, Mask, Bond, Size, Wide, More) SELECT O.id , O.name , C.name , C.colid , T.name , C.isnullable , C.iscomputed , C.length , C.prec , C.scale FROM sysobjects AS O JOIN syscolumns AS C ON O.id = C.id JOIN systypes AS T ON C.xusertype = T.xusertype WHERE ISNULL(OBJECTPROPERTY(O.id,'IsMSShipped'),1) = 0 AND RTRIM(O.type) = 'U' AND LEFT(O.name,@TDo3) = @TPre AND O.name NOT LIKE 'adt%' AND O.name NOT LIKE '%dtproper%' AND O.name NOT LIKE 'dt[_]%' SET @Retain = @@ERROR IF @Status = 0 SET @Status = @Retain END DECLARE Tables CURSOR FAST_FORWARD FOR SELECT Name, Same, FKey FROM #DBAT WHERE Rank = 1 AND (@DBIntra IS NULL OR CHARINDEX('|'+SUBSTRING(Name,@TDo4,100)+'|','|'+(@DBIntra)+'|') > 0) AND (@DBExtra IS NULL OR CHARINDEX('|'+SUBSTRING(Name,@TDo4,100)+'|','|'+(@DBExtra)+'|') = 0) AND (@PCIntra IS NULL OR SUBSTRING(Name,@TDo4,100) LIKE @PCIntra) AND (@PCExtra IS NULL OR SUBSTRING(Name,@TDo4,100) NOT LIKE @PCExtra) ORDER BY Name OPEN Tables FETCH NEXT FROM Tables INTO @Name, @Tame, @FKey WHILE @@FETCH_STATUS = 0 AND @Status = 0 BEGIN IF EXISTS (SELECT * FROM #DBAT WHERE Name = @Name AND Same = @FNCU) SET @FPCU = 1 ELSE SET @FPCU = 0 IF EXISTS (SELECT * FROM #DBAT WHERE Name = @Name AND Same = @FNCD) SET @FPCD = 1 ELSE SET @FPCD = 0 IF EXISTS (SELECT * FROM #DBAT WHERE Name = @Name AND Same = @FNMU) SET @FPMU = 1 ELSE SET @FPMU = 0 IF EXISTS (SELECT * FROM #DBAT WHERE Name = @Name AND Same = @FNMD) SET @FPMD = 1 ELSE SET @FPMD = 0 IF EXISTS (SELECT * FROM #DBAT WHERE Name = @Name AND Same = @FNRW) SET @FPRW = 1 ELSE SET @FPRW = 0 IF EXISTS (SELECT * FROM #DBAT WHERE Name = @Name AND Same = @FNRS) SET @FPRS = 1 ELSE SET @FPRS = 0 IF (SELECT TOP 1 Kind FROM #DBAT WHERE Name = @Name AND Same = @FNCU) LIKE '%int' SET @FSCU = 0 ELSE SET @FSCU = 1 IF (SELECT TOP 1 Kind FROM #DBAT WHERE Name = @Name AND Same = @FNMU) LIKE '%int' SET @FSMU = 0 ELSE SET @FSMU = 1 SET @DBAI = '' SET @DBAO = '' SET @DBAU = '' DECLARE Fields CURSOR FAST_FORWARD FOR SELECT Same, Rank, Kind, Mask, Bond, Size, Wide, More FROM #DBAT WHERE FKey = @FKey AND Bond = 0 ORDER BY Rank OPEN Fields FETCH NEXT FROM Fields INTO @Same, @Rank, @Kind, @Mask, @Bond, @Size, @Wide, @More WHILE @@FETCH_STATUS = 0 AND @Status = 0 BEGIN SET @Save = LEN(@Same) EXECUTE dbo.sp_DBAWorkFormat @Work OUTPUT, @Kind, @Size, @Wide, @More, @Save IF @Rank > 1 SET @DBAI = @DBAI + CHAR(13) + CHAR(10) + SPACE(5) + ', ' IF @Rank > 2 SET @DBAO = @DBAO + CHAR(13) + CHAR(10) + SPACE(5) + ', ' IF @Rank = 1 BEGIN SET @DBAI = @DBAI + SPACE(7) + '@' + @Tame + @Work END ELSE BEGIN IF @Same NOT IN (@FNCU,@FNCD) BEGIN SET @DBAI = @DBAI + '@' + @Same + @Work SET @DBAO = @DBAO + ' ' + @Same + CHAR(13) + CHAR(10) + SPACE(5) + '= @' + @Same END ELSE BEGIN SET @DBAI = @DBAI + '@' + @Same + @Work SET @DBAO = @DBAO + ' ' + @Same + CHAR(13) + CHAR(10) + SPACE(5) + '= ISNULL(@' + @Same + ',' + @Same + ')' END END IF @Mask <> 0 BEGIN SET @DBAI = @DBAI + ' = NULL' END FETCH NEXT FROM Fields INTO @Same, @Rank, @Kind, @Mask, @Bond, @Size, @Wide, @More END CLOSE Fields DEALLOCATE Fields SET @Work = SUBSTRING(@Name,@TDo4,100) PRINT 'IF EXISTS (SELECT * FROM sysobjects WHERE name = ' + CHAR(39) + @Wish + @Work + CHAR(39) + ') DROP PROCEDURE dbo.' + @Wish + @Work PRINT 'GO' PRINT '-- Generated by DBAction' PRINT '-- Generated on ' + @Date PRINT '-- Generated at ' + @Time PRINT 'CREATE PROCEDURE dbo.' + @Wish + @Work PRINT @DBAI PRINT 'AS' IF @FPMU<>0 AND @FSMU<>0 PRINT 'SET @' + @FNMU + ' = ISNULL(@' + @FNMU + ',' + @User + ')' IF @FPMD<>0 PRINT 'SET @' + @FNMD + ' = ISNULL(@' + @FNMD + ',' + @When + ')' PRINT 'UPDATE ' + @Name + ' SET' PRINT ' ' + @DBAO IF @FPRW=0 PRINT ' WHERE ' + @Tame + ' = @' + @Tame ELSE PRINT ' WHERE ' + @Tame + ' = @' + @Tame + ' AND ' + @FNRW + ' < @' + @FNRW PRINT 'RETURN (@@ERROR)' PRINT 'GO' PRINT SPACE(0) FETCH NEXT FROM Tables INTO @Name, @Tame, @FKey END CLOSE Tables DEALLOCATE Tables IF ISNULL(@PCUltra,0) = 0 BEGIN DROP TABLE #DBAT END DROP TABLE #DBAK DROP TABLE #DBAM SET NOCOUNT OFF RETURN (@Status) GO CREATE PROCEDURE dbo.sp_CreateProcedureCD @DBIntra varchar(8000) = NULL, @DBExtra varchar(8000) = NULL, @PCIntra varchar(100) = NULL, @PCExtra varchar(100) = NULL, @PCUltra bit = 0 AS SET NOCOUNT ON DECLARE @Return int DECLARE @Retain int DECLARE @Status int SET @Status = 0 DECLARE @TPre varchar(10) DECLARE @TDo3 tinyint DECLARE @TDo4 tinyint SET @TPre = '' SET @TDo3 = LEN(@TPre) SET @TDo4 = LEN(@TPre) + 1 DECLARE @Task varchar(2000) DECLARE @Name varchar(100) DECLARE @Same varchar(100) DECLARE @Tame varchar(100) DECLARE @Rank smallint DECLARE @Kind varchar(20) DECLARE @Mask bit DECLARE @Bond bit DECLARE @Size int DECLARE @Wide smallint DECLARE @More smallint DECLARE @Came varchar(100) DECLARE @DBAI varchar(8000) DECLARE @DBAO varchar(8000) DECLARE @DBAU varchar(8000) DECLARE @Work varchar(100) DECLARE @Wish varchar(10) DECLARE @FNCU varchar(40), @FPCU bit, @FSCU bit DECLARE @FNCD varchar(40), @FPCD bit DECLARE @FNMU varchar(40), @FPMU bit, @FSMU bit DECLARE @FNMD varchar(40), @FPMD bit DECLARE @FNRW varchar(40), @FPRW bit DECLARE @FNRS varchar(40), @FPRS bit DECLARE @Save int DECLARE @PKey int DECLARE @ZKey int DECLARE @FKey int DECLARE @Date varchar(8) DECLARE @Time varchar(8) SET @Date = CONVERT(varchar(8),GETDATE(),1) SET @Time = CONVERT(varchar(8),GETDATE(),8) CREATE TABLE #DBAK (Name varchar(40), Work tinyint IDENTITY(1,1)) CREATE TABLE #DBAM (Mask varchar(10), Work tinyint IDENTITY(1,1)) EXECUTE @Return = dbo.sp_DBAWorkMaster SELECT @FNCU = Name FROM #DBAK WHERE Work = 2 SELECT @FNCD = Name FROM #DBAK WHERE Work = 3 SELECT @FNMU = Name FROM #DBAK WHERE Work = 4 SELECT @FNMD = Name FROM #DBAK WHERE Work = 5 SELECT @FNRW = Name FROM #DBAK WHERE Work = 6 SELECT @FNRS = Name FROM #DBAK WHERE Work = 7 SELECT @Wish = Mask FROM #DBAM WHERE Work = 09 IF ISNULL(@PCUltra,0) = 0 BEGIN CREATE TABLE #DBAT (FKey int, Name varchar(100), Same varchar(100), Rank smallint, Kind varchar(20), Mask bit, Bond bit, Size int, Wide smallint, More smallint) INSERT #DBAT (FKey, Name, Same, Rank, Kind, Mask, Bond, Size, Wide, More) SELECT O.id , O.name , C.name , C.colid , T.name , C.isnullable , C.iscomputed , C.length , C.prec , C.scale FROM sysobjects AS O JOIN syscolumns AS C ON O.id = C.id JOIN systypes AS T ON C.xusertype = T.xusertype WHERE ISNULL(OBJECTPROPERTY(O.id,'IsMSShipped'),1) = 0 AND RTRIM(O.type) = 'U' AND LEFT(O.name,@TDo3) = @TPre AND O.name NOT LIKE 'adt%' AND O.name NOT LIKE '%dtproper%' AND O.name NOT LIKE 'dt[_]%' SET @Retain = @@ERROR IF @Status = 0 SET @Status = @Retain END DECLARE Tables CURSOR FAST_FORWARD FOR SELECT Name, Same, FKey FROM #DBAT WHERE Rank = 1 AND (@DBIntra IS NULL OR CHARINDEX('|'+SUBSTRING(Name,@TDo4,100)+'|','|'+(@DBIntra)+'|') > 0) AND (@DBExtra IS NULL OR CHARINDEX('|'+SUBSTRING(Name,@TDo4,100)+'|','|'+(@DBExtra)+'|') = 0) AND (@PCIntra IS NULL OR SUBSTRING(Name,@TDo4,100) LIKE @PCIntra) AND (@PCExtra IS NULL OR SUBSTRING(Name,@TDo4,100) NOT LIKE @PCExtra) ORDER BY Name OPEN Tables FETCH NEXT FROM Tables INTO @Name, @Tame, @FKey WHILE @@FETCH_STATUS = 0 AND @Status = 0 BEGIN IF EXISTS (SELECT * FROM #DBAT WHERE Name = @Name AND Same = @FNCU) SET @FPCU = 1 ELSE SET @FPCU = 0 IF EXISTS (SELECT * FROM #DBAT WHERE Name = @Name AND Same = @FNCD) SET @FPCD = 1 ELSE SET @FPCD = 0 IF EXISTS (SELECT * FROM #DBAT WHERE Name = @Name AND Same = @FNMU) SET @FPMU = 1 ELSE SET @FPMU = 0 IF EXISTS (SELECT * FROM #DBAT WHERE Name = @Name AND Same = @FNMD) SET @FPMD = 1 ELSE SET @FPMD = 0 IF EXISTS (SELECT * FROM #DBAT WHERE Name = @Name AND Same = @FNRW) SET @FPRW = 1 ELSE SET @FPRW = 0 IF EXISTS (SELECT * FROM #DBAT WHERE Name = @Name AND Same = @FNRS) SET @FPRS = 1 ELSE SET @FPRS = 0 IF (SELECT TOP 1 Kind FROM #DBAT WHERE Name = @Name AND Same = @FNCU) LIKE '%int' SET @FSCU = 0 ELSE SET @FSCU = 1 IF (SELECT TOP 1 Kind FROM #DBAT WHERE Name = @Name AND Same = @FNMU) LIKE '%int' SET @FSMU = 0 ELSE SET @FSMU = 1 SET @Work = SUBSTRING(@Name,@TDo4,100) PRINT 'IF EXISTS (SELECT * FROM sysobjects WHERE name = ' + CHAR(39) + @Wish + @Work + CHAR(39) + ') DROP PROCEDURE dbo.' + @Wish + @Work PRINT 'GO' PRINT '-- Generated by DBAction' PRINT '-- Generated on ' + @Date PRINT '-- Generated at ' + @Time PRINT 'CREATE PROCEDURE dbo.' + @Wish + @Work PRINT ' @DBValue int,' PRINT ' @DBAdmin tinyint = NULL' PRINT 'AS' PRINT 'DELETE ' + @Name IF @FPRS=0 PRINT ' WHERE ' + @Tame + ' = @DBValue' ELSE PRINT ' WHERE ' + @Tame + ' = @DBValue' + ' AND (' + @FNRS + ' = @DBAdmin OR ISNULL(@DBAdmin,0) = 0)' PRINT 'RETURN (@@ERROR)' PRINT 'GO' PRINT SPACE(0) FETCH NEXT FROM Tables INTO @Name, @Tame, @FKey END CLOSE Tables DEALLOCATE Tables IF ISNULL(@PCUltra,0) = 0 BEGIN DROP TABLE #DBAT END DROP TABLE #DBAK DROP TABLE #DBAM SET NOCOUNT OFF RETURN (@Status) GO CREATE PROCEDURE dbo.sp_CreateProcedureCS @DBIntra varchar(8000) = NULL, @DBExtra varchar(8000) = NULL, @PCIntra varchar(100) = NULL, @PCExtra varchar(100) = NULL, @PCUltra bit = 0 AS SET NOCOUNT ON DECLARE @Return int DECLARE @Retain int DECLARE @Status int SET @Status = 0 DECLARE @TPre varchar(10) DECLARE @TDo3 tinyint DECLARE @TDo4 tinyint SET @TPre = '' SET @TDo3 = LEN(@TPre) SET @TDo4 = LEN(@TPre) + 1 DECLARE @Task varchar(2000) DECLARE @Name varchar(100) DECLARE @Same varchar(100) DECLARE @Tame varchar(100) DECLARE @Rank smallint DECLARE @Kind varchar(20) DECLARE @Mask bit DECLARE @Bond bit DECLARE @Size int DECLARE @Wide smallint DECLARE @More smallint DECLARE @Came varchar(100) DECLARE @DBAI varchar(8000) DECLARE @DBAO varchar(8000) DECLARE @DBAU varchar(8000) DECLARE @Work varchar(100) DECLARE @Wish varchar(10) DECLARE @FNCU varchar(40), @FPCU bit, @FSCU bit DECLARE @FNCD varchar(40), @FPCD bit DECLARE @FNMU varchar(40), @FPMU bit, @FSMU bit DECLARE @FNMD varchar(40), @FPMD bit DECLARE @FNRW varchar(40), @FPRW bit DECLARE @FNRS varchar(40), @FPRS bit DECLARE @Save int DECLARE @PKey int DECLARE @ZKey int DECLARE @FKey int DECLARE @Date varchar(8) DECLARE @Time varchar(8) SET @Date = CONVERT(varchar(8),GETDATE(),1) SET @Time = CONVERT(varchar(8),GETDATE(),8) CREATE TABLE #DBAK (Name varchar(40), Work tinyint IDENTITY(1,1)) CREATE TABLE #DBAM (Mask varchar(10), Work tinyint IDENTITY(1,1)) EXECUTE @Return = dbo.sp_DBAWorkMaster SELECT @FNCU = Name FROM #DBAK WHERE Work = 2 SELECT @FNCD = Name FROM #DBAK WHERE Work = 3 SELECT @FNMU = Name FROM #DBAK WHERE Work = 4 SELECT @FNMD = Name FROM #DBAK WHERE Work = 5 SELECT @FNRW = Name FROM #DBAK WHERE Work = 6 SELECT @FNRS = Name FROM #DBAK WHERE Work = 7 SELECT @Wish = Mask FROM #DBAM WHERE Work = 10 IF ISNULL(@PCUltra,0) = 0 BEGIN CREATE TABLE #DBAT (FKey int, Name varchar(100), Same varchar(100), Rank smallint, Kind varchar(20), Mask bit, Bond bit, Size int, Wide smallint, More smallint) INSERT #DBAT (FKey, Name, Same, Rank, Kind, Mask, Bond, Size, Wide, More) SELECT O.id , O.name , C.name , C.colid , T.name , C.isnullable , C.iscomputed , C.length , C.prec , C.scale FROM sysobjects AS O JOIN syscolumns AS C ON O.id = C.id JOIN systypes AS T ON C.xusertype = T.xusertype WHERE ISNULL(OBJECTPROPERTY(O.id,'IsMSShipped'),1) = 0 AND RTRIM(O.type) = 'U' AND LEFT(O.name,@TDo3) = @TPre AND O.name NOT LIKE 'adt%' AND O.name NOT LIKE '%dtproper%' AND O.name NOT LIKE 'dt[_]%' SET @Retain = @@ERROR IF @Status = 0 SET @Status = @Retain END DECLARE Tables CURSOR FAST_FORWARD FOR SELECT Name, Same, FKey FROM #DBAT WHERE Rank = 1 AND (@DBIntra IS NULL OR CHARINDEX('|'+SUBSTRING(Name,@TDo4,100)+'|','|'+(@DBIntra)+'|') > 0) AND (@DBExtra IS NULL OR CHARINDEX('|'+SUBSTRING(Name,@TDo4,100)+'|','|'+(@DBExtra)+'|') = 0) AND (@PCIntra IS NULL OR SUBSTRING(Name,@TDo4,100) LIKE @PCIntra) AND (@PCExtra IS NULL OR SUBSTRING(Name,@TDo4,100) NOT LIKE @PCExtra) ORDER BY Name OPEN Tables FETCH NEXT FROM Tables INTO @Name, @Tame, @FKey WHILE @@FETCH_STATUS = 0 AND @Status = 0 BEGIN IF EXISTS (SELECT * FROM #DBAT WHERE Name = @Name AND Same = @FNCU) SET @FPCU = 1 ELSE SET @FPCU = 0 IF EXISTS (SELECT * FROM #DBAT WHERE Name = @Name AND Same = @FNCD) SET @FPCD = 1 ELSE SET @FPCD = 0 IF EXISTS (SELECT * FROM #DBAT WHERE Name = @Name AND Same = @FNMU) SET @FPMU = 1 ELSE SET @FPMU = 0 IF EXISTS (SELECT * FROM #DBAT WHERE Name = @Name AND Same = @FNMD) SET @FPMD = 1 ELSE SET @FPMD = 0 IF EXISTS (SELECT * FROM #DBAT WHERE Name = @Name AND Same = @FNRW) SET @FPRW = 1 ELSE SET @FPRW = 0 IF EXISTS (SELECT * FROM #DBAT WHERE Name = @Name AND Same = @FNRS) SET @FPRS = 1 ELSE SET @FPRS = 0 IF (SELECT TOP 1 Kind FROM #DBAT WHERE Name = @Name AND Same = @FNCU) LIKE '%int' SET @FSCU = 0 ELSE SET @FSCU = 1 IF (SELECT TOP 1 Kind FROM #DBAT WHERE Name = @Name AND Same = @FNMU) LIKE '%int' SET @FSMU = 0 ELSE SET @FSMU = 1 SET @Work = SUBSTRING(@Name,@TDo4,100) PRINT 'IF EXISTS (SELECT * FROM sysobjects WHERE name = ' + CHAR(39) + @Wish + @Work + CHAR(39) + ') DROP PROCEDURE dbo.' + @Wish + @Work PRINT 'GO' PRINT '-- Generated by DBAction' PRINT '-- Generated on ' + @Date PRINT '-- Generated at ' + @Time PRINT 'CREATE PROCEDURE dbo.' + @Wish + @Work PRINT ' @DBValue int,' PRINT ' @DBAdmin tinyint = NULL' PRINT 'AS' PRINT 'SELECT *' PRINT ' FROM ' + @Name + ' WITH (NOLOCK)' IF @FPRS=0 PRINT ' WHERE ' + @Tame + ' = @DBValue' ELSE PRINT ' WHERE ' + @Tame + ' = @DBValue' + ' AND (' + @FNRS + ' = @DBAdmin OR ISNULL(@DBAdmin,0) = 0)' PRINT 'RETURN (@@ERROR)' PRINT 'GO' PRINT SPACE(0) FETCH NEXT FROM Tables INTO @Name, @Tame, @FKey END CLOSE Tables DEALLOCATE Tables IF ISNULL(@PCUltra,0) = 0 BEGIN DROP TABLE #DBAT END DROP TABLE #DBAK DROP TABLE #DBAM SET NOCOUNT OFF RETURN (@Status) GO CREATE PROCEDURE dbo.sp_CreateProcedureKD @DBIntra varchar(8000) = NULL, @DBExtra varchar(8000) = NULL, @PCIntra varchar(100) = NULL, @PCExtra varchar(100) = NULL, @PCUltra bit = 0 AS SET NOCOUNT ON DECLARE @Return int DECLARE @Retain int DECLARE @Status int SET @Status = 0 DECLARE @TPre varchar(10) DECLARE @TDo3 tinyint DECLARE @TDo4 tinyint SET @TPre = '' SET @TDo3 = LEN(@TPre) SET @TDo4 = LEN(@TPre) + 1 DECLARE @Task varchar(2000) DECLARE @Name varchar(100) DECLARE @Same varchar(100) DECLARE @Tame varchar(100) DECLARE @Rank smallint DECLARE @Kind varchar(20) DECLARE @Mask bit DECLARE @Bond bit DECLARE @Size int DECLARE @Wide smallint DECLARE @More smallint DECLARE @Came varchar(100) DECLARE @DBAI varchar(8000) DECLARE @DBAO varchar(8000) DECLARE @DBAU varchar(8000) DECLARE @Work varchar(100) DECLARE @Wish varchar(10) DECLARE @FNCU varchar(40), @FPCU bit, @FSCU bit DECLARE @FNCD varchar(40), @FPCD bit DECLARE @FNMU varchar(40), @FPMU bit, @FSMU bit DECLARE @FNMD varchar(40), @FPMD bit DECLARE @FNRW varchar(40), @FPRW bit DECLARE @FNRS varchar(40), @FPRS bit DECLARE @Save int DECLARE @PKey int DECLARE @ZKey int DECLARE @FKey int DECLARE @Date varchar(8) DECLARE @Time varchar(8) SET @Date = CONVERT(varchar(8),GETDATE(),1) SET @Time = CONVERT(varchar(8),GETDATE(),8) CREATE TABLE #DBAK (Name varchar(40), Work tinyint IDENTITY(1,1)) CREATE TABLE #DBAM (Mask varchar(10), Work tinyint IDENTITY(1,1)) EXECUTE @Return = dbo.sp_DBAWorkMaster SELECT @FNCU = Name FROM #DBAK WHERE Work = 2 SELECT @FNCD = Name FROM #DBAK WHERE Work = 3 SELECT @FNMU = Name FROM #DBAK WHERE Work = 4 SELECT @FNMD = Name FROM #DBAK WHERE Work = 5 SELECT @FNRW = Name FROM #DBAK WHERE Work = 6 SELECT @FNRS = Name FROM #DBAK WHERE Work = 7 SELECT @Wish = Mask FROM #DBAM WHERE Work = 11 IF ISNULL(@PCUltra,0) = 0 BEGIN CREATE TABLE #DBAT (FKey int, Name varchar(100), Same varchar(100), Rank smallint, Kind varchar(20), Mask bit, Bond bit, Size int, Wide smallint, More smallint) INSERT #DBAT (FKey, Name, Same, Rank, Kind, Mask, Bond, Size, Wide, More) SELECT O.id , O.name , C.name , C.colid , T.name , C.isnullable , C.iscomputed , C.length , C.prec , C.scale FROM sysobjects AS O JOIN syscolumns AS C ON O.id = C.id JOIN systypes AS T ON C.xusertype = T.xusertype WHERE ISNULL(OBJECTPROPERTY(O.id,'IsMSShipped'),1) = 0 AND RTRIM(O.type) = 'U' AND LEFT(O.name,@TDo3) = @TPre AND O.name NOT LIKE 'adt%' AND O.name NOT LIKE '%dtproper%' AND O.name NOT LIKE 'dt[_]%' SET @Retain = @@ERROR IF @Status = 0 SET @Status = @Retain END DECLARE Tables CURSOR FAST_FORWARD FOR SELECT Name, Same, FKey FROM #DBAT WHERE Rank = 1 AND (@DBIntra IS NULL OR CHARINDEX('|'+SUBSTRING(Name,@TDo4,100)+'|','|'+(@DBIntra)+'|') > 0) AND (@DBExtra IS NULL OR CHARINDEX('|'+SUBSTRING(Name,@TDo4,100)+'|','|'+(@DBExtra)+'|') = 0) AND (@PCIntra IS NULL OR SUBSTRING(Name,@TDo4,100) LIKE @PCIntra) AND (@PCExtra IS NULL OR SUBSTRING(Name,@TDo4,100) NOT LIKE @PCExtra) ORDER BY Name OPEN Tables FETCH NEXT FROM Tables INTO @Name, @Tame, @FKey WHILE @@FETCH_STATUS = 0 AND @Status = 0 BEGIN IF EXISTS (SELECT * FROM #DBAT WHERE Name = @Name AND Same = @FNCU) SET @FPCU = 1 ELSE SET @FPCU = 0 IF EXISTS (SELECT * FROM #DBAT WHERE Name = @Name AND Same = @FNCD) SET @FPCD = 1 ELSE SET @FPCD = 0 IF EXISTS (SELECT * FROM #DBAT WHERE Name = @Name AND Same = @FNMU) SET @FPMU = 1 ELSE SET @FPMU = 0 IF EXISTS (SELECT * FROM #DBAT WHERE Name = @Name AND Same = @FNMD) SET @FPMD = 1 ELSE SET @FPMD = 0 IF EXISTS (SELECT * FROM #DBAT WHERE Name = @Name AND Same = @FNRW) SET @FPRW = 1 ELSE SET @FPRW = 0 IF EXISTS (SELECT * FROM #DBAT WHERE Name = @Name AND Same = @FNRS) SET @FPRS = 1 ELSE SET @FPRS = 0 IF (SELECT TOP 1 Kind FROM #DBAT WHERE Name = @Name AND Same = @FNCU) LIKE '%int' SET @FSCU = 0 ELSE SET @FSCU = 1 IF (SELECT TOP 1 Kind FROM #DBAT WHERE Name = @Name AND Same = @FNMU) LIKE '%int' SET @FSMU = 0 ELSE SET @FSMU = 1 SET @Work = SUBSTRING(@Name,@TDo4,100) PRINT 'IF EXISTS (SELECT * FROM sysobjects WHERE name = ' + CHAR(39) + @Wish + @Work + CHAR(39) + ') DROP PROCEDURE dbo.' + @Wish + @Work PRINT 'GO' PRINT '-- Generated by DBAction' PRINT '-- Generated on ' + @Date PRINT '-- Generated at ' + @Time PRINT 'CREATE PROCEDURE dbo.' + @Wish + @Work PRINT ' @DBField varchar(100) = NULL,' PRINT ' @DBValue int = NULL,' PRINT ' @DBAdmin tinyint = NULL ' PRINT 'AS' PRINT 'DECLARE @Task nvarchar(4000)' PRINT 'DECLARE @Work nvarchar(100)' PRINT 'DECLARE @Status int' PRINT 'SET @Status = 102' PRINT 'SET @Work = ' + CHAR(39) + '@Status int OUTPUT, @FKey int, @Mask tinyint' + CHAR(39) PRINT 'SET @Task = ' + CHAR(39) + 'DELETE ' + @Name + ' WHERE 0 = 0 ' + CHAR(39) PRINT ' + CASE WHEN ISNULL(@DBValue,0) = 0 THEN ' + CHAR(39) + CHAR(39) + ' ELSE ' + CHAR(39) + 'AND ' + CHAR(39) + ' + ISNULL(@DBField,' + CHAR(39) + @Tame + CHAR(39) + ') + ' + CHAR(39) + ' = @FKey ' + CHAR(39) + ' END' IF @FPRS<>0 PRINT ' + CASE WHEN ISNULL(@DBAdmin,0) = 0 THEN ' + CHAR(39) + CHAR(39) + ' ELSE ' + CHAR(39) + 'AND ' + @FNRS + ' = @Mask ' + CHAR(39) + ' END' PRINT ' + ' + CHAR(39) + 'SET @Status = @@ERROR' + CHAR(39) PRINT 'EXECUTE sp_executesql @Task, @Work, @Status OUTPUT, @FKey = @DBValue, @Mask = @DBAdmin' PRINT 'RETURN (@Status)' PRINT 'GO' PRINT SPACE(0) FETCH NEXT FROM Tables INTO @Name, @Tame, @FKey END CLOSE Tables DEALLOCATE Tables IF ISNULL(@PCUltra,0) = 0 BEGIN DROP TABLE #DBAT END DROP TABLE #DBAK DROP TABLE #DBAM SET NOCOUNT OFF RETURN (@Status) GO CREATE PROCEDURE dbo.sp_CreateProcedureKS @DBIntra varchar(8000) = NULL, @DBExtra varchar(8000) = NULL, @PCIntra varchar(100) = NULL, @PCExtra varchar(100) = NULL, @PCUltra bit = 0 AS SET NOCOUNT ON DECLARE @Return int DECLARE @Retain int DECLARE @Status int SET @Status = 0 DECLARE @TPre varchar(10) DECLARE @TDo3 tinyint DECLARE @TDo4 tinyint SET @TPre = '' SET @TDo3 = LEN(@TPre) SET @TDo4 = LEN(@TPre) + 1 DECLARE @Task varchar(2000) DECLARE @Name varchar(100) DECLARE @Same varchar(100) DECLARE @Tame varchar(100) DECLARE @Rank smallint DECLARE @Kind varchar(20) DECLARE @Mask bit DECLARE @Bond bit DECLARE @Size int DECLARE @Wide smallint DECLARE @More smallint DECLARE @Came varchar(100) DECLARE @DBAI varchar(8000) DECLARE @DBAO varchar(8000) DECLARE @DBAU varchar(8000) DECLARE @Work varchar(100) DECLARE @Wish varchar(10) DECLARE @FNCU varchar(40), @FPCU bit, @FSCU bit DECLARE @FNCD varchar(40), @FPCD bit DECLARE @FNMU varchar(40), @FPMU bit, @FSMU bit DECLARE @FNMD varchar(40), @FPMD bit DECLARE @FNRW varchar(40), @FPRW bit DECLARE @FNRS varchar(40), @FPRS bit DECLARE @Save int DECLARE @PKey int DECLARE @ZKey int DECLARE @FKey int DECLARE @Date varchar(8) DECLARE @Time varchar(8) SET @Date = CONVERT(varchar(8),GETDATE(),1) SET @Time = CONVERT(varchar(8),GETDATE(),8) CREATE TABLE #DBAK (Name varchar(40), Work tinyint IDENTITY(1,1)) CREATE TABLE #DBAM (Mask varchar(10), Work tinyint IDENTITY(1,1)) EXECUTE @Return = dbo.sp_DBAWorkMaster SELECT @FNCU = Name FROM #DBAK WHERE Work = 2 SELECT @FNCD = Name FROM #DBAK WHERE Work = 3 SELECT @FNMU = Name FROM #DBAK WHERE Work = 4 SELECT @FNMD = Name FROM #DBAK WHERE Work = 5 SELECT @FNRW = Name FROM #DBAK WHERE Work = 6 SELECT @FNRS = Name FROM #DBAK WHERE Work = 7 SELECT @Wish = Mask FROM #DBAM WHERE Work = 12 IF ISNULL(@PCUltra,0) = 0 BEGIN CREATE TABLE #DBAT (FKey int, Name varchar(100), Same varchar(100), Rank smallint, Kind varchar(20), Mask bit, Bond bit, Size int, Wide smallint, More smallint) INSERT #DBAT (FKey, Name, Same, Rank, Kind, Mask, Bond, Size, Wide, More) SELECT O.id , O.name , C.name , C.colid , T.name , C.isnullable , C.iscomputed , C.length , C.prec , C.scale FROM sysobjects AS O JOIN syscolumns AS C ON O.id = C.id JOIN systypes AS T ON C.xusertype = T.xusertype WHERE ISNULL(OBJECTPROPERTY(O.id,'IsMSShipped'),1) = 0 AND RTRIM(O.type) = 'U' AND LEFT(O.name,@TDo3) = @TPre AND O.name NOT LIKE 'adt%' AND O.name NOT LIKE '%dtproper%' AND O.name NOT LIKE 'dt[_]%' SET @Retain = @@ERROR IF @Status = 0 SET @Status = @Retain END DECLARE Tables CURSOR FAST_FORWARD FOR SELECT Name, Same, FKey FROM #DBAT WHERE Rank = 1 AND (@DBIntra IS NULL OR CHARINDEX('|'+SUBSTRING(Name,@TDo4,100)+'|','|'+(@DBIntra)+'|') > 0) AND (@DBExtra IS NULL OR CHARINDEX('|'+SUBSTRING(Name,@TDo4,100)+'|','|'+(@DBExtra)+'|') = 0) AND (@PCIntra IS NULL OR SUBSTRING(Name,@TDo4,100) LIKE @PCIntra) AND (@PCExtra IS NULL OR SUBSTRING(Name,@TDo4,100) NOT LIKE @PCExtra) ORDER BY Name OPEN Tables FETCH NEXT FROM Tables INTO @Name, @Tame, @FKey WHILE @@FETCH_STATUS = 0 AND @Status = 0 BEGIN IF EXISTS (SELECT * FROM #DBAT WHERE Name = @Name AND Same = @FNCU) SET @FPCU = 1 ELSE SET @FPCU = 0 IF EXISTS (SELECT * FROM #DBAT WHERE Name = @Name AND Same = @FNCD) SET @FPCD = 1 ELSE SET @FPCD = 0 IF EXISTS (SELECT * FROM #DBAT WHERE Name = @Name AND Same = @FNMU) SET @FPMU = 1 ELSE SET @FPMU = 0 IF EXISTS (SELECT * FROM #DBAT WHERE Name = @Name AND Same = @FNMD) SET @FPMD = 1 ELSE SET @FPMD = 0 IF EXISTS (SELECT * FROM #DBAT WHERE Name = @Name AND Same = @FNRW) SET @FPRW = 1 ELSE SET @FPRW = 0 IF EXISTS (SELECT * FROM #DBAT WHERE Name = @Name AND Same = @FNRS) SET @FPRS = 1 ELSE SET @FPRS = 0 IF (SELECT TOP 1 Kind FROM #DBAT WHERE Name = @Name AND Same = @FNCU) LIKE '%int' SET @FSCU = 0 ELSE SET @FSCU = 1 IF (SELECT TOP 1 Kind FROM #DBAT WHERE Name = @Name AND Same = @FNMU) LIKE '%int' SET @FSMU = 0 ELSE SET @FSMU = 1 SET @Work = SUBSTRING(@Name,@TDo4,100) PRINT 'IF EXISTS (SELECT * FROM sysobjects WHERE name = ' + CHAR(39) + @Wish + @Work + CHAR(39) + ') DROP PROCEDURE dbo.' + @Wish + @Work PRINT 'GO' PRINT '-- Generated by DBAction' PRINT '-- Generated on ' + @Date PRINT '-- Generated at ' + @Time PRINT 'CREATE PROCEDURE dbo.' + @Wish + @Work PRINT ' @DBField varchar(100) = NULL,' PRINT ' @DBValue int = NULL,' PRINT ' @DBAdmin tinyint = NULL ' PRINT 'AS' PRINT 'DECLARE @Task nvarchar(4000)' PRINT 'DECLARE @Work nvarchar(100)' PRINT 'DECLARE @Status int' PRINT 'SET @Status = 102' PRINT 'SET @Work = ' + CHAR(39) + '@Status int OUTPUT, @FKey int, @Mask tinyint' + CHAR(39) PRINT 'SET @Task = ' + CHAR(39) + 'SELECT * FROM ' + @Name + ' WITH (NOLOCK) WHERE 0 = 0 ' + CHAR(39) PRINT ' + CASE WHEN ISNULL(@DBValue,0) = 0 THEN ' + CHAR(39) + CHAR(39) + ' ELSE ' + CHAR(39) + 'AND ' + CHAR(39) + ' + ISNULL(@DBField,' + CHAR(39) + @Tame + CHAR(39) + ') + ' + CHAR(39) + ' = @FKey ' + CHAR(39) + ' END' IF @FPRS<>0 PRINT ' + CASE WHEN ISNULL(@DBAdmin,0) = 0 THEN ' + CHAR(39) + CHAR(39) + ' ELSE ' + CHAR(39) + 'AND ' + @FNRS + ' = @Mask ' + CHAR(39) + ' END' PRINT ' + ' + CHAR(39) + 'SET @Status = @@ERROR' + CHAR(39) PRINT 'EXECUTE sp_executesql @Task, @Work, @Status OUTPUT, @FKey = @DBValue, @Mask = @DBAdmin' PRINT 'RETURN (@Status)' PRINT 'GO' PRINT SPACE(0) FETCH NEXT FROM Tables INTO @Name, @Tame, @FKey END CLOSE Tables DEALLOCATE Tables IF ISNULL(@PCUltra,0) = 0 BEGIN DROP TABLE #DBAT END DROP TABLE #DBAK DROP TABLE #DBAM SET NOCOUNT OFF RETURN (@Status) GO CREATE PROCEDURE dbo.sp_CreateFunctionKS @DBIntra varchar(8000) = NULL, @DBExtra varchar(8000) = NULL, @PCIntra varchar(100) = NULL, @PCExtra varchar(100) = NULL, @PCUltra bit = 0 AS SET NOCOUNT ON DECLARE @Return int DECLARE @Retain int DECLARE @Status int SET @Status = 0 DECLARE @TPre varchar(10) DECLARE @TDo3 tinyint DECLARE @TDo4 tinyint SET @TPre = '' SET @TDo3 = LEN(@TPre) SET @TDo4 = LEN(@TPre) + 1 DECLARE @Task varchar(2000) DECLARE @Name varchar(100) DECLARE @Same varchar(100) DECLARE @Tame varchar(100) DECLARE @Rank smallint DECLARE @Kind varchar(20) DECLARE @Mask bit DECLARE @Bond bit DECLARE @Size int DECLARE @Wide smallint DECLARE @More smallint DECLARE @Came varchar(100) DECLARE @DBAI varchar(8000) DECLARE @DBAO varchar(8000) DECLARE @DBAU varchar(8000) DECLARE @Work varchar(100) DECLARE @Wish varchar(10) DECLARE @FNCU varchar(40), @FPCU bit, @FSCU bit DECLARE @FNCD varchar(40), @FPCD bit DECLARE @FNMU varchar(40), @FPMU bit, @FSMU bit DECLARE @FNMD varchar(40), @FPMD bit DECLARE @FNRW varchar(40), @FPRW bit DECLARE @FNRS varchar(40), @FPRS bit DECLARE @Save int DECLARE @PKey int DECLARE @ZKey int DECLARE @FKey int DECLARE @Date varchar(8) DECLARE @Time varchar(8) SET @Date = CONVERT(varchar(8),GETDATE(),1) SET @Time = CONVERT(varchar(8),GETDATE(),8) CREATE TABLE #DBAK (Name varchar(40), Work tinyint IDENTITY(1,1)) CREATE TABLE #DBAM (Mask varchar(10), Work tinyint IDENTITY(1,1)) EXECUTE @Return = dbo.sp_DBAWorkMaster SELECT @FNCU = Name FROM #DBAK WHERE Work = 2 SELECT @FNCD = Name FROM #DBAK WHERE Work = 3 SELECT @FNMU = Name FROM #DBAK WHERE Work = 4 SELECT @FNMD = Name FROM #DBAK WHERE Work = 5 SELECT @FNRW = Name FROM #DBAK WHERE Work = 6 SELECT @FNRS = Name FROM #DBAK WHERE Work = 7 SELECT @Wish = Mask FROM #DBAM WHERE Work = 13 IF ISNULL(@PCUltra,0) = 0 BEGIN CREATE TABLE #DBAT (FKey int, Name varchar(100), Same varchar(100), Rank smallint, Kind varchar(20), Mask bit, Bond bit, Size int, Wide smallint, More smallint) INSERT #DBAT (FKey, Name, Same, Rank, Kind, Mask, Bond, Size, Wide, More) SELECT O.id , O.name , C.name , C.colid , T.name , C.isnullable , C.iscomputed , C.length , C.prec , C.scale FROM sysobjects AS O JOIN syscolumns AS C ON O.id = C.id JOIN systypes AS T ON C.xusertype = T.xusertype WHERE ISNULL(OBJECTPROPERTY(O.id,'IsMSShipped'),1) = 0 AND RTRIM(O.type) = 'U' AND LEFT(O.name,@TDo3) = @TPre AND O.name NOT LIKE 'adt%' AND O.name NOT LIKE '%dtproper%' AND O.name NOT LIKE 'dt[_]%' SET @Retain = @@ERROR IF @Status = 0 SET @Status = @Retain END DECLARE Tables CURSOR FAST_FORWARD FOR SELECT Name, Same, FKey FROM #DBAT WHERE Rank = 1 AND (@DBIntra IS NULL OR CHARINDEX('|'+SUBSTRING(Name,@TDo4,100)+'|','|'+(@DBIntra)+'|') > 0) AND (@DBExtra IS NULL OR CHARINDEX('|'+SUBSTRING(Name,@TDo4,100)+'|','|'+(@DBExtra)+'|') = 0) AND (@PCIntra IS NULL OR SUBSTRING(Name,@TDo4,100) LIKE @PCIntra) AND (@PCExtra IS NULL OR SUBSTRING(Name,@TDo4,100) NOT LIKE @PCExtra) ORDER BY Name OPEN Tables FETCH NEXT FROM Tables INTO @Name, @Tame, @FKey WHILE @@FETCH_STATUS = 0 AND @Status = 0 BEGIN IF EXISTS (SELECT * FROM #DBAT WHERE Name = @Name AND Same = @FNCU) SET @FPCU = 1 ELSE SET @FPCU = 0 IF EXISTS (SELECT * FROM #DBAT WHERE Name = @Name AND Same = @FNCD) SET @FPCD = 1 ELSE SET @FPCD = 0 IF EXISTS (SELECT * FROM #DBAT WHERE Name = @Name AND Same = @FNMU) SET @FPMU = 1 ELSE SET @FPMU = 0 IF EXISTS (SELECT * FROM #DBAT WHERE Name = @Name AND Same = @FNMD) SET @FPMD = 1 ELSE SET @FPMD = 0 IF EXISTS (SELECT * FROM #DBAT WHERE Name = @Name AND Same = @FNRW) SET @FPRW = 1 ELSE SET @FPRW = 0 IF EXISTS (SELECT * FROM #DBAT WHERE Name = @Name AND Same = @FNRS) SET @FPRS = 1 ELSE SET @FPRS = 0 IF (SELECT TOP 1 Kind FROM #DBAT WHERE Name = @Name AND Same = @FNCU) LIKE '%int' SET @FSCU = 0 ELSE SET @FSCU = 1 IF (SELECT TOP 1 Kind FROM #DBAT WHERE Name = @Name AND Same = @FNMU) LIKE '%int' SET @FSMU = 0 ELSE SET @FSMU = 1 SET @DBAU = CHAR(13) + CHAR(10) + ' OR ' + '(@DBValue = ' + CHAR(32) + @Tame + CHAR(13) + CHAR(10) + ' AND ' + ' @DBField = ' + CHAR(39) + @Tame + CHAR(39) + ')' DECLARE Fields CURSOR FAST_FORWARD FOR SELECT T.Same , T.Rank , T.Kind , T.Mask , T.Bond , T.Size , T.Wide , T.More , K.name FROM #DBAT AS T LEFT JOIN sysreferences AS R ON T.FKey = R.fkeyid AND T.Rank = R.fkey1 LEFT JOIN sysobjects AS K ON R.rkeyid = K.id WHERE T.FKey = @FKey ORDER BY T.Rank OPEN Fields FETCH NEXT FROM Fields INTO @Same, @Rank, @Kind, @Mask, @Bond, @Size, @Wide, @More, @Came WHILE @@FETCH_STATUS = 0 AND @Status = 0 BEGIN IF @Came IS NOT NULL AND @Rank > 1 BEGIN SET @DBAU = @DBAU + CHAR(13) + CHAR(10) + ' OR ' + '(@DBValue = ' + CHAR(32) + @Same + CHAR(13) + CHAR(10) + ' AND ' + ' @DBField = ' + CHAR(39) + @Same + CHAR(39) + ')' END FETCH NEXT FROM Fields INTO @Same, @Rank, @Kind, @Mask, @Bond, @Size, @Wide, @More, @Came END CLOSE Fields DEALLOCATE Fields SET @Work = SUBSTRING(@Name,@TDo4,100) PRINT 'IF EXISTS (SELECT * FROM sysobjects WHERE name = ' + CHAR(39) + @Wish + @Work + CHAR(39) + ') DROP FUNCTION dbo.' + @Wish + @Work PRINT 'GO' PRINT '-- Generated by DBAction' PRINT '-- Generated on ' + @Date PRINT '-- Generated at ' + @Time PRINT 'CREATE FUNCTION dbo.' + @Wish + @Work PRINT ' (@DBField varchar(100),' PRINT ' @DBValue int ,' PRINT ' @DBAdmin tinyint )' PRINT 'RETURNS TABLE AS' PRINT 'RETURN (' PRINT 'SELECT *' PRINT ' FROM ' + @Name + ' WITH (NOLOCK)' PRINT ' WHERE (@DBValue = 0' + @DBAU + ')' + CASE WHEN @FPRS=0 THEN ')' ELSE CHAR(13) + CHAR(10) + ' AND (@DBAdmin = 0 OR @DBAdmin = ' + @FNRS + '))' END PRINT 'GO' PRINT SPACE(0) FETCH NEXT FROM Tables INTO @Name, @Tame, @FKey END CLOSE Tables DEALLOCATE Tables IF ISNULL(@PCUltra,0) = 0 BEGIN DROP TABLE #DBAT END DROP TABLE #DBAK DROP TABLE #DBAM SET NOCOUNT OFF RETURN (@Status) GO CREATE PROCEDURE dbo.sp_CreateAllObjects @DBIntra varchar(8000) = NULL, @DBExtra varchar(8000) = NULL, @PCIntra varchar(100) = NULL, @PCExtra varchar(100) = NULL, @DBWhose varchar(2000) = NULL, @PCAdmin varchar(20) = NULL AS SET NOCOUNT ON DECLARE @Return int DECLARE @Retain int DECLARE @Status int SET @Status = 0 DECLARE @TPre varchar(10) DECLARE @TDo3 tinyint DECLARE @TDo4 tinyint SET @TPre = '' SET @TDo3 = LEN(@TPre) SET @TDo4 = LEN(@TPre) + 1 CREATE TABLE #DBAT (FKey int, Name varchar(100), Same varchar(100), Rank smallint, Kind varchar(20), Mask bit, Bond bit, Size int, Wide smallint, More smallint) INSERT #DBAT (FKey, Name, Same, Rank, Kind, Mask, Bond, Size, Wide, More) SELECT O.id , O.name , C.name , C.colid , T.name , C.isnullable , C.iscomputed , C.length , C.prec , C.scale FROM sysobjects AS O JOIN syscolumns AS C ON O.id = C.id JOIN systypes AS T ON C.xusertype = T.xusertype WHERE ISNULL(OBJECTPROPERTY(O.id,'IsMSShipped'),1) = 0 AND RTRIM(O.type) = 'U' AND LEFT(O.name,@TDo3) = @TPre AND O.name NOT LIKE 'adt%' AND O.name NOT LIKE '%dtproper%' AND O.name NOT LIKE 'dt[_]%' SET @Retain = @@ERROR IF @Status = 0 SET @Status = @Retain SET @PCAdmin = ISNULL(@PCAdmin,REPLICATE(CHAR(89),20)) IF @Status = 0 BEGIN IF ASCII(SUBSTRING(@PCAdmin,01,1)) NOT IN (32,48,78) EXECUTE dbo.sp_CreateTriggerCI @DBIntra,@DBExtra,@PCIntra,@PCExtra,@DBWhose,1 IF ASCII(SUBSTRING(@PCAdmin,02,1)) NOT IN (32,48,78) EXECUTE dbo.sp_CreateTriggerCU @DBIntra,@DBExtra,@PCIntra,@PCExtra,@DBWhose,1 IF ASCII(SUBSTRING(@PCAdmin,03,1)) NOT IN (32,48,78) EXECUTE dbo.sp_CreateProcedureCI @DBIntra,@DBExtra,@PCIntra,@PCExtra,1 IF ASCII(SUBSTRING(@PCAdmin,04,1)) NOT IN (32,48,78) EXECUTE dbo.sp_CreateProcedureCU @DBIntra,@DBExtra,@PCIntra,@PCExtra,1 IF ASCII(SUBSTRING(@PCAdmin,05,1)) NOT IN (32,48,78) EXECUTE dbo.sp_CreateProcedureCD @DBIntra,@DBExtra,@PCIntra,@PCExtra,1 IF ASCII(SUBSTRING(@PCAdmin,06,1)) NOT IN (32,48,78) EXECUTE dbo.sp_CreateProcedureCS @DBIntra,@DBExtra,@PCIntra,@PCExtra,1 IF ASCII(SUBSTRING(@PCAdmin,07,1)) NOT IN (32,48,78) EXECUTE dbo.sp_CreateProcedureKD @DBIntra,@DBExtra,@PCIntra,@PCExtra,1 IF ASCII(SUBSTRING(@PCAdmin,08,1)) NOT IN (32,48,78) EXECUTE dbo.sp_CreateProcedureKS @DBIntra,@DBExtra,@PCIntra,@PCExtra,1 IF ASCII(SUBSTRING(@PCAdmin,09,1)) NOT IN (32,48,78) EXECUTE dbo.sp_CreateFunctionKS @DBIntra,@DBExtra,@PCIntra,@PCExtra,1 -- SQL Server 2000 END DROP TABLE #DBAT SET NOCOUNT OFF RETURN (@Status) GO CREATE PROCEDURE dbo.sp_DeleteAllObjects @DBIntra varchar(8000) = NULL, @DBExtra varchar(8000) = NULL, @PCIntra varchar(100) = NULL, @PCExtra varchar(100) = NULL, @DBUltra bit = 0, @PCUltra bit = 0 AS SET NOCOUNT ON DECLARE @Return int DECLARE @Retain int DECLARE @Status int SET @Status = 0 DECLARE @Task varchar(2000) DECLARE @Name varchar(100) DECLARE @Bark tinyint DECLARE @Dark tinyint DECLARE @DBAI tinyint DECLARE @DBAO tinyint DECLARE @PKey int DECLARE @ZKey int CREATE TABLE #DBAK (Name varchar(40), Work tinyint IDENTITY(1,1)) CREATE TABLE #DBAM (Mask varchar(10), Work tinyint IDENTITY(1,1)) EXECUTE @Return = dbo.sp_DBAWorkMaster SELECT @Dark = MIN(LEN(Mask)) FROM #DBAM IF @PCUltra <> 0 BEGIN SET @DBAI = 1 SET @DBAO = 3 END ELSE BEGIN SET @DBAI = 4 SET @DBAO = 14 END DECLARE DBItems CURSOR FAST_FORWARD FOR SELECT O.name, O.id, CASE O.type WHEN 'TR' THEN 1 WHEN 'V ' THEN 4 WHEN 'P ' THEN 2 ELSE 3 END FROM sysobjects AS O JOIN #DBAM AS T ON CHARINDEX(T.Mask,O.name,1) = 1 WHERE ISNULL(OBJECTPROPERTY(O.id,'IsMSShipped'),1) = 0 AND O.type IN ('TR','V ','P ','FN','IF','TF') AND T.Work BETWEEN @DBAI AND @DBAO AND (@DBIntra IS NULL OR CHARINDEX('|'+O.name+'|','|'+(@DBIntra)+'|') > 0) AND (@DBExtra IS NULL OR CHARINDEX('|'+O.name+'|','|'+(@DBExtra)+'|') = 0) AND (@PCIntra IS NULL OR O.name LIKE @PCIntra) AND (@PCExtra IS NULL OR O.name NOT LIKE @PCExtra) ORDER BY O.name SET @Retain = @@ERROR IF @Status = 0 SET @Status = @Retain OPEN DBItems SET @Retain = @@ERROR IF @Status = 0 SET @Status = @Retain FETCH NEXT FROM DBItems INTO @Name, @PKey, @Bark SET @Retain = @@ERROR IF @Status = 0 SET @Status = @Retain WHILE @@FETCH_STATUS = 0 AND @Status = 0 BEGIN IF @DBUltra = 0 BEGIN IF @Bark = 1 PRINT 'DROP TRIGGER ' + @Name IF @Bark = 2 PRINT 'DROP PROCEDURE dbo.' + @Name IF @Bark = 3 PRINT 'DROP FUNCTION dbo.' + @Name IF @Bark = 4 PRINT 'DROP VIEW dbo.' + @Name END ELSE BEGIN IF @Bark = 1 SET @Task = 'DROP TRIGGER ' + @Name IF @Bark = 2 SET @Task = 'DROP PROCEDURE dbo.' + @Name IF @Bark = 3 SET @Task = 'DROP FUNCTION dbo.' + @Name IF @Bark = 4 SET @Task = 'DROP VIEW dbo.' + @Name IF @Status = 0 EXECUTE (@Task) SET @Return = @@ERROR IF @Status = 0 SET @Status = @Return END FETCH NEXT FROM DBItems INTO @Name, @PKey, @Bark SET @Retain = @@ERROR IF @Status = 0 SET @Status = @Retain END CLOSE DBItems DEALLOCATE DBItems DROP TABLE #DBAK DROP TABLE #DBAM SET NOCOUNT OFF RETURN (@Status) GO CREATE PROCEDURE dbo.sp_ReviewAllObjects @DBIntra varchar(8000) = NULL, @DBExtra varchar(8000) = NULL, @PCIntra varchar(100) = NULL, @PCExtra varchar(100) = NULL, @PCUltra bit = 0 AS SET NOCOUNT ON DECLARE @Return int DECLARE @Retain int DECLARE @Status int SET @Status = 0 DECLARE @TPre varchar(10) DECLARE @TDo3 tinyint DECLARE @TDo4 tinyint SET @TPre = '' SET @TDo3 = LEN(@TPre) SET @TDo4 = LEN(@TPre) + 1 DECLARE @Task varchar(2000) DECLARE @Work varchar(20) DECLARE @Wish varchar(20) DECLARE @Bark tinyint DECLARE @Dark tinyint CREATE TABLE #DBAK (Name varchar(40), Work tinyint IDENTITY(1,1)) CREATE TABLE #DBAM (Mask varchar(10), Work tinyint IDENTITY(1,1)) CREATE TABLE #DBAH (TName varchar(100) ,CName varchar(100) ,CNS04 varchar(20) ,CNS05 varchar(20) -- ,CNS06 varchar(20) ,CNS07 varchar(20) ,CNS08 varchar(20) ,CNS09 varchar(20) ,CNS10 varchar(20) ,CNS11 varchar(20) ,CNS12 varchar(20) ,CNS13 varchar(20)) EXECUTE @Return = dbo.sp_DBAWorkMaster SELECT @Dark = MIN(LEN(Mask)) FROM #DBAM SET @Bark = 04 WHILE @Bark < 14 BEGIN SELECT @Wish = Mask FROM #DBAM WHERE Work = @Bark SET @Work = '#DBAH.CNS' + RIGHT(STR(@Bark+100),2) SET @Task = 'USE tempdb EXECUTE sp_rename ' + CHAR(39) + @Work + CHAR(39) + ',' + CHAR(39) + @Wish + CHAR(39) IF @Bark <> 06 EXECUTE (@Task) SET @Bark = @Bark + 1 END INSERT #DBAH SELECT CASE WHEN @PCUltra = 0 THEN SUBSTRING(O.name,@TDo4,100) ELSE O.name END, C.name , MAX(CASE WHEN T.Work = 04 THEN T.Mask ELSE '' END) , MAX(CASE WHEN T.Work = 05 THEN T.Mask ELSE '' END) -- , MAX(CASE WHEN T.Work = 06 THEN T.Mask ELSE '' END) , MAX(CASE WHEN T.Work = 07 THEN T.Mask ELSE '' END) , MAX(CASE WHEN T.Work = 08 THEN T.Mask ELSE '' END) , MAX(CASE WHEN T.Work = 09 THEN T.Mask ELSE '' END) , MAX(CASE WHEN T.Work = 10 THEN T.Mask ELSE '' END) , MAX(CASE WHEN T.Work = 11 THEN T.Mask ELSE '' END) , MAX(CASE WHEN T.Work = 12 THEN T.Mask ELSE '' END) , MAX(CASE WHEN T.Work = 13 THEN T.Mask ELSE '' END) FROM sysobjects AS O JOIN syscolumns AS C ON C.id = O.id AND C.colid = 1 LEFT JOIN (SELECT W.name, W.type, Z.Work, Z.Mask, LEN(Z.Mask) AS Size FROM sysobjects AS W JOIN #DBAM AS Z ON LEFT(W.name,LEN(Z.Mask)) = Z.Mask AND Z.Work NOT IN (1,2,3)) AS T ON SUBSTRING(O.name,@TDo4,100) = SUBSTRING(T.name,T.Size+1,100) WHERE ISNULL(OBJECTPROPERTY(O.id,'IsMSShipped'),1) = 0 AND RTRIM(O.type) = 'U' AND LEFT(O.name,@TDo3) = @TPre AND O.name NOT LIKE 'adt%' AND O.name NOT LIKE '%dtproper%' AND O.name NOT LIKE 'dt[_]%' AND (@DBIntra IS NULL OR CHARINDEX('|'+SUBSTRING(O.name,@TDo4,100)+'|','|'+(@DBIntra)+'|') > 0) AND (@DBExtra IS NULL OR CHARINDEX('|'+SUBSTRING(O.name,@TDo4,100)+'|','|'+(@DBExtra)+'|') = 0) AND (@PCIntra IS NULL OR SUBSTRING(O.name,@TDo4,100) LIKE @PCIntra) AND (@PCExtra IS NULL OR SUBSTRING(O.name,@TDo4,100) NOT LIKE @PCExtra) GROUP BY O.name, C.name ORDER BY O.name, C.name SET @Retain = @@ERROR IF @Status = 0 SET @Status = @Retain SELECT * FROM #DBAH ORDER BY TName DROP TABLE #DBAK DROP TABLE #DBAM DROP TABLE #DBAH SET NOCOUNT OFF RETURN (@Status) GO ----------------------------------------------------------