Sql server 如何在sqlserver中一次创建20个数据库?
我编写了以下过程来创建一系列20个数据库。 但它并没有创造它们。即使当我转到我的H:驱动器,没有找到名为bharath1 bharath2的ldf和mdf时,数据库也没有创建 我做错了什么Sql server 如何在sqlserver中一次创建20个数据库?,sql-server,sql-server-2005,sql-server-2008,stored-procedures,Sql Server,Sql Server 2005,Sql Server 2008,Stored Procedures,我编写了以下过程来创建一系列20个数据库。 但它并没有创造它们。即使当我转到我的H:驱动器,没有找到名为bharath1 bharath2的ldf和mdf时,数据库也没有创建 我做错了什么 USE master GO DECLARE @command varchar(1000), @i int while @i < 5 SET @command = 'CREATE DATABASE Bharath' + CAST(@i AS varchar) + ' ON ( NAME
USE master
GO
DECLARE @command varchar(1000), @i int
while @i < 5
SET @command = 'CREATE DATABASE Bharath' + CAST(@i AS varchar) + '
ON ( NAME = ''Bharath_dat'',
FILENAME = ''H:\MSSQL10.MSSQLSERVER\MSSQL10.MSSQLSERVER\MSSQL\DATA\Bharath' +
CAST(@i AS varchar) + '.mdf'', SIZE = 10, MAXSIZE = 50, FILEGROWTH = 5 )
LOG ON ( NAME = ''Bharath_log'',
FILENAME = ''H:\MSSQL10.MSSQLSERVER\MSSQL10.MSSQLSERVER\MSSQL\DATA\Bharath' +
CAST(@i AS varchar) + '.ldf'', SIZE = 5MB, MAXSIZE = 25MB, FILEGROWTH = 5MB )'
EXEC (@command)
SET @i = @i + 1
GO
使用master
去
声明@command varchar(1000),@i int
而@i<5
SET@command='CREATE DATABASE Bharath'+CAST(@i AS varchar)+'
在(名称=“Bharath_dat”,
文件名=''H:\MSSQL10.MSSQLSERVER\MSSQL10.MSSQLSERVER\MSSQL\DATA\Bharath'+
强制转换(@i AS varchar)+'.mdf',大小=10,最大大小=50,文件增长=5)
登录(名称为“Bharath_日志”,
文件名=''H:\MSSQL10.MSSQLSERVER\MSSQL10.MSSQLSERVER\MSSQL\DATA\Bharath'+
强制转换(@i AS varchar)+'.ldf'',大小=5MB,最大大小=25MB,文件增长=5MB)'
EXEC(@command)
设置@i=@i+1
去
据我所知,我对SQL Server存储过程没有任何概念,在某人的支持下,我做到了这一点。但我没有找到任何数据库
非常感谢您的帮助。好的,我没有看到WHILE循环之后的BEGIN和END块,这可能会导致SQL执行一个无休止的循环,只运行SET@command语句 你需要把WHILE用BEGIN和END括起来
DECLARE @command as varchar(1000), @i int
SET @i = 0
WHILE @i < 5
BEGIN
SET @command = 'CREATE DATABASE Example' + CAST(@i AS varchar)
EXEC(@command)
SET @i = @i + 1
END
将@command声明为varchar(1000),@i int
设置@i=0
而@i<5
开始
SET@command='CREATE DATABASE Example'+CAST(@i AS varchar)
EXEC(@command)
设置@i=@i+1
终止
这对我有用(必须设置@i=0)您需要初始化@i,在声明后添加此项:
SET @i = 1
有几件事你错过了——你首先需要把你想要反复执行的几个SQL命令放到一个
BEGIN……END
块中
第二,你需要初始化你的@i
计数器!否则,它将永远不会首先进入WHILE循环
第三,您的CREATEDATABASE调用是错误的-您需要指定一个文件组,在其中创建数据库(CREATEDATABASE(name)(文件组)…)
这是我的密码:
USE master
GO
DECLARE @command varchar(1000), @instanceName VARCHAR(100), @i int
SET @i = 1
WHILE @i <= 5
BEGIN
SET @instanceName = 'Bharath' + CAST(@i AS VARCHAR(10))
SET @command = 'CREATE DATABASE ' + @instanceName +
' ON PRIMARY ( NAME = N''' + @instanceName + ''', ' +
'FILENAME = ''H:\MSSQL10.MSSQLSERVER\MSSQL10.MSSQLSERVER\MSSQL\DATA\' +
@instanceName + '.mdf'', SIZE = 10, MAXSIZE = 50, FILEGROWTH = 5 ) ' +
'LOG ON ( NAME = N''' + @instanceName + '_LOG'', ' +
'FILENAME = ''H:\MSSQL10.MSSQLSERVER\MSSQL10.MSSQLSERVER\MSSQL\DATA\' +
@instanceName + '.ldf'', SIZE = 5MB, MAXSIZE = 25MB, FILEGROWTH = 5MB )'
EXEC (@command)
SET @i = @i + 1
END
GO
使用master
去
声明@command varchar(1000),@instanceName varchar(100),@i int
设置@i=1
而@i