有人能告诉我如何编写一个在c:\ test \
中创建20个数据库的存储过程如果我在一个循环中放置一个用于创建数据库的存储过程,那么
如果我再次创建第一个db作为测试循环将调用sp。但它在那里显示测试alredy。我不知道如何将变量连接到此,以便我将创建test1 test2 test3 .... test20
我怎么能这样做任何想法..我不知道连接我是SQL Server sp的新手。
答案 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')语句来执行数据库创建语句。
所以...为什么你需要再次这样做? ; - )