1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
| USE master GO
DECLARE @DbName VARCHAR(max), @Path NVARCHAR(1000), @InitSize VARCHAR(50), @FileGrowth VARCHAR(50) SELECT @Path = 'D:\\PulicDataBase\\', @InitSize = '5MB', @FileGrowth = '10%';
SELECT @DbName = 'DBTest, DBTest2'; BEGIN DECLARE @temp TABLE ( ID INT IDENTITY(1,1), Result VARCHAR(MAX) ); DECLARE @i INT, @SourceSql VARCHAR(max), @target NVARCHAR(MAX), @StrSeprate VARCHAR(10) SELECT @SourceSql = LTRIM(RTRIM(@DbName)), @StrSeprate=',' IF RIGHT(@SourceSql, LEN(@StrSeprate)) <> @StrSeprate SET @SourceSql= @SourceSql + @StrSeprate SET @i = CHARINDEX(@StrSeprate,@SourceSql) WHILE @i >= 1 BEGIN SET @target = LTRIM(RTRIM(left(@SourceSql, @i-1))) IF @target IS NOT NULL AND @target <> '' INSERT @temp VALUES(@target) ELSE INSERT @temp VALUES(NULL) SET @SourceSql = SUBSTRING(@SourceSql, @i+1, LEN(@SourceSql)-@i) SET @i = CHARINDEX(@StrSeprate,@SourceSql) END
DECLARE @DataBaseName NVARCHAR(50), @sql NVARCHAR(MAX), @DBPath NVARCHAR(500) DECLARE @i_Group INT DECLARE @Flag VARCHAR(10)
IF RTRIM(LTRIM(ISNULL(@Path, ''))) = '' SET @Path = 'D:\\PulicDataBase\\' SET @Path = RTRIM(LTRIM(@Path)) IF RIGHT(@Path, 1) <> '\\' SET @Path = @Path + '\\' SELECT * FROM @temp DECLARE db_cursor CURSOR FOR SELECT Result FROM @temp WHERE ISNULL(Result, '') <> '' ORDER BY ID OPEN db_cursor FETCH NEXT FROM db_cursor INTO @DataBaseName WHILE @@fetch_status = 0 BEGIN BEGIN TRY IF CHARINDEX('DBTest', @DataBaseName) > 0 SET @DBPath = @Path + 'DBTest' + '\\'
IF EXISTS(SELECT * FROM sysdatabases WHERE name = @DataBaseName) BEGIN PRINT '【创建数据库】'+ @DataBaseName +'已存在,不必重复创建!' FETCH NEXT FROM db_cursor INTO @DataBaseName CONTINUE; END ELSE BEGIN SET @sql='create database ['+ @DataBaseName + '] on primary ( name=N'''+ @DataBaseName +''', filename=N'''+ @DBPath + @DataBaseName +'.mdf'', size='+ @InitSize +', filegrowth='+ @FileGrowth +' ) log on ( name=N'''+ @DataBaseName +'_Log'', filename=N'''+ @DBPath + @DataBaseName +'_Log.ldf'', size='+ @InitSize +', filegrowth='+ @FileGrowth +' )' EXECUTE (@sql) PRINT '【创建数据库】'+ @DataBaseName +'创建成功!' END SELECT @i_Group = 1, @Flag = '1' IF CHARINDEX(','+ @DataBaseName +',',','+ 'DBTest, DBTest2' +',') > 0 BEGIN WHILE @i_Group<=11 BEGIN SET @sql = 'IF NOT EXISTS(SELECT * FROM sysfilegroups sp_helpfilegroup WHERE groupname = ''FileGroup_' + @Flag + '_' + CAST(@i_Group AS VARCHAR(10)) +''') ' + 'ALTER DATABASE ['+ @DataBaseName +'] ADD FILEGROUP FileGroup_' + @Flag + '_' + CAST(@i_Group AS VARCHAR(10)) + ' ' + 'IF NOT EXISTS(SELECT * FROM sys.database_files WHERE name = ''' + @DataBaseName + '_File_' + CAST(@i_Group AS VARCHAR(10)) +''') ' + 'ALTER DATABASE ['+ @DataBaseName +'] ADD FILE (name = ''' + @DataBaseName + '_File_' + CAST(@i_Group AS VARCHAR(10)) +''', filename = ''' + @DBPath + @DataBaseName + '_File_' + CAST(@i_Group AS VARCHAR(10)) + '.mdf'', maxsize = UNLIMITED, filegrowth = 10%) to filegroup [FileGroup_' + @Flag + '_' + CAST(@i_Group AS VARCHAR(10)) +']' EXECUTE (@sql) SET @i_Group = @i_Group + 1 END END END TRY BEGIN CATCH PRINT '【创建数据库】'+ @DataBaseName + '创建时出错:' + ERROR_MESSAGE() FETCH NEXT FROM db_cursor INTO @DataBaseName CONTINUE END CATCH FETCH NEXT FROM db_cursor INTO @DataBaseName END CLOSE db_cursor DEALLOCATE db_cursor END GO
|