Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何编写将创建20个数据库的存储过程_Sql Server_Stored Procedures - Fatal编程技术网

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

Sql server 如何编写将创建20个数据库的存储过程,sql-server,stored-procedures,Sql Server,Stored Procedures,谁能告诉我如何编写一个存储过程,在c:\test中创建20个数据库\ 如果我将用于创建数据库的storedprocedure放在一个循环中,那么 若我创建第一个db作为再次测试,循环将调用sp,但它在那个里显示test alredy。我不知道如何将一个变量连接到它,以便创建test1 test2 test3…test20 我怎么能做到这一点呢?任何想法..我不知道连接我是SQL Server sp的新手。我强烈建议不要在任何被视为生产的情况下这样做。。。但是,如果您愿意,可以使用sp_execs

谁能告诉我如何编写一个存储过程,在c:\test中创建20个数据库\

如果我将用于创建数据库的storedprocedure放在一个循环中,那么

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


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

我强烈建议不要在任何被视为生产的情况下这样做。。。但是,如果您愿意,可以使用sp_execsql('createdatabase xxx')语句来创建数据库


所以。。。你为什么还要这样做?;-)

我强烈建议不要在任何被认为是生产的事情上这样做。。。但是,如果您愿意,可以使用sp_execsql('createdatabase xxx')语句来创建数据库


所以。。。你为什么还要这样做?;-)

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

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

创建PROC dbo.Foo
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
作为 不计较 声明@i int、@stem varchar(20)、@db varchar(20)、@sql varchar(1000) 选择@i=1,@stem='Test' 而@i<20 开始 选择@db=@stem+CAST(@i作为varchar(2)) 如果DB_ID(@DB)为空 选择@SQL='CREATE DATABASE'+@db+ 'ON(NAME='+@db+'\u数据,FILENAME=''C:\Test\'+@db+'.mdf'')+ '登录(名称='+@db+'\u日志,文件名=''C:\Test\'+@db+'.mdf'') EXEC(@sql) 选择@i=@i+1 结束 去
创建过程dbo.Foo
作为
不计较
声明@i int、@stem varchar(20)、@db varchar(20)、@sql varchar(1000)
选择@i=1,@stem='Test'
而@i<20
开始
选择@db=@stem+CAST(@i作为varchar(2))
如果DB_ID(@DB)为空
选择@SQL='CREATE DATABASE'+@db+
'ON(NAME='+@db+'\u数据,FILENAME=''C:\Test\'+@db+'.mdf'')+
'登录(名称='+@db+'\u日志,文件名=''C:\Test\'+@db+'.mdf'')
EXEC(@sql)
选择@i=@i+1
结束
去