希望以存储过程建立300个数据库 名字是db001,db002.....db300
每个库用同样的多张表(随意两张简单表吧)
如何写这个过程?问一下如果是sqlserver 2000 个人版 支持那么多库吗?企业版呢?

解决方案 »

  1.   

    if object_id('spCreateDB') is not null
    drop proc spCreateDB
    go
    ----创建存储过程
    create proc spCreateDB @dbnumber int    /*参数为要创建的数据库数量*/
    as
    declare @sql varchar(8000)
    declare @i int
    set @i = 1
    while @i <= @dbnumber
    begin
    set @sql = 
    'CREATE DATABASE mytest_' + cast(@i as varchar(5)) + 
    ' ON ( NAME = mytest_dat_' + cast(@i as varchar(5)) + 
    ',FILENAME = ''d:\mytest_' + cast(@i as varchar(5)) + '.mdf''' +
    ',SIZE = 4,MAXSIZE = 10,FILEGROWTH = 1 )' 
    --print @sql
    EXEC(@sql)        /*创建数据库*/
    set @sql = 
    'create table mytest_' + cast(@i as varchar(5)) + '.dbo.test1(id int identity,name varchar(50))
    create table mytest_' + cast(@i as varchar(5)) + '.dbo.test2(id int identity,name varchar(50))'
    --print @sql
    EXEC(@sql)   /*创建表*/
    set @i = @i + 1
    end
    go
    ----测试创建3个数据库
    exec spCreateDB 3
    drop proc spCreateDB
    ----显示结果
    /*
    CREATE DATABASE 进程正在磁盘 'mytest_dat_1' 上分配 4.00 MB 的空间。
    CREATE DATABASE 进程正在磁盘 'mytest_1_log' 上分配 1.00 MB 的空间。
    CREATE DATABASE 进程正在磁盘 'mytest_dat_2' 上分配 4.00 MB 的空间。
    CREATE DATABASE 进程正在磁盘 'mytest_2_log' 上分配 1.00 MB 的空间。
    CREATE DATABASE 进程正在磁盘 'mytest_dat_3' 上分配 4.00 MB 的空间。
    CREATE DATABASE 进程正在磁盘 'mytest_3_log' 上分配 1.00 MB 的空间。
    */