如何编写将创建20个数据库的存储过程

时间:2009-07-16 11:14:48

标签: sql-server stored-procedures

有人能告诉我如何编写一个在c:\ test \

中创建20个数据库的存储过程

如果我在一个循环中放置一个用于创建数据库的存储过程,那么

如果我再次创建第一个db作为测试循环将调用sp。但它在那里显示测试alredy。我不知道如何将变量连接到此,以便我将创建test1 test2 test3 .... test20

我怎么能这样做任何想法..我不知道连接我是SQL Server sp的新手。

3 个答案:

答案 0 :(得分:4)

CREATE PROC dbo.Foo
AS
SET NOCOUNT ON

DECLARE @i int, @stem varchar(20), @db varchar(20), @sql varchar(1000)

SELECT @i = 1, @stem = 'Test'

WHILE @i < 20
BEGIN
    SELECT @db = @stem + CAST(@i AS varchar(2))
    IF DB_ID(@db) IS NULL
    SELECT @SQL = 'CREATE DATABASE ' + @db + 
                ' ON (NAME = ' + @db + '_Data, FILENAME = ''C:\Test\' + @db + '.mdf'')' +
                ' LOG ON (NAME = ' + @db + '_Log, FILENAME = ''C:\Test\' + @db + '.mdf'')'

    EXEC(@sql)
    SELECT @i = @i + 1
END
GO

答案 1 :(得分:1)

使用TRANSACT-SQL&amp;如果EXISTS,则测试数据库是否已存在。

答案 2 :(得分:0)

我强烈建议不要在任何被视为生产的内容中执行此操作...但是如果您愿意,可以执行sp_execsql('create database xxx')语句来执行数据库创建语句。

所以...为什么你需要再次这样做? ; - )

相关问题