在sql server 2005中创建具有动态数据库名称的数据库

在sql server 2005中创建具有动态数据库名称的数据库,sql,sql-server-2005,Sql,Sql Server 2005,使用存储过程在SQLServer2005中创建数据库,但数据库名称作为参数传递,正如bitxwise所说,您将需要动态sql create proc createdb @dbname sysname as declare @sql nvarchar(max) set @sql = 'create database ' + QUOTENAME(@dbname) exec (@sql) 这只是最基本的CREATEDATABASE语句。通常在生产环境中,您无论如何都不希望有这样的过程,即使您有,您也

使用存储过程在SQLServer2005中创建数据库,但数据库名称作为参数传递

,正如bitxwise所说,您将需要动态sql

create proc createdb @dbname sysname
as
declare @sql nvarchar(max)
set @sql = 'create database ' + QUOTENAME(@dbname)
exec (@sql)
这只是最基本的CREATEDATABASE语句。通常在生产环境中,您无论如何都不希望有这样的过程,即使您有,您也会指定增长、初始大小、位置等


但这里有一个参考:。

正如bitxwise所说,您将需要动态SQL

create proc createdb @dbname sysname
as
declare @sql nvarchar(max)
set @sql = 'create database ' + QUOTENAME(@dbname)
exec (@sql)
这只是最基本的CREATEDATABASE语句。通常在生产环境中,您无论如何都不希望有这样的过程,即使您有,您也会指定增长、初始大小、位置等


但这里有一个参考:。

下面的查询块可能会有所帮助

DECLARE @Query VARCHAR(MAX)=''
DECLARE @DbName VARCHAR(400) = 'Db1'
DECLARE @DbFilePath VARCHAR(400) = 'E:\Database\'
SET @Query = @Query + 'CREATE DATABASE '+@DbName +' ON  PRIMARY '
SET @Query = @Query + '( NAME = '''+@DbName +''', FILENAME = '''+@DbFilePath+@DbName +'.mdf'' , SIZE = 3072KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ) '
SET @Query = @Query + ' LOG ON '
SET @Query = @Query + '( NAME = '''+@DbName +'_log'', FILENAME = '''+@DbFilePath+@DbName +'_log.ldf'' , SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)'
print @query
exec(@query)

下面的查询块可能会有所帮助

DECLARE @Query VARCHAR(MAX)=''
DECLARE @DbName VARCHAR(400) = 'Db1'
DECLARE @DbFilePath VARCHAR(400) = 'E:\Database\'
SET @Query = @Query + 'CREATE DATABASE '+@DbName +' ON  PRIMARY '
SET @Query = @Query + '( NAME = '''+@DbName +''', FILENAME = '''+@DbFilePath+@DbName +'.mdf'' , SIZE = 3072KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ) '
SET @Query = @Query + ' LOG ON '
SET @Query = @Query + '( NAME = '''+@DbName +'_log'', FILENAME = '''+@DbFilePath+@DbName +'_log.ldf'' , SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)'
print @query
exec(@query)

使用EXEC sp_executesql:

DECLARE@Query-NVARCHAR(最大值)
设置@Query=''
声明@DbName NVARCHAR(max)='Db1'
声明@DbFilePath NVARCHAR(max)=N'E:\Database\N
设置@Query=@Query+'CREATE DATABASE'+@DbName+'ON PRIMARY'
设置@Query=@Query+'(名称=''+@DbName+'',文件名=''+@DbFilePath+@DbName+'.mdf'',大小=12288KB,最大大小=UNLIMITED,文件增长=1024KB)'
设置@Query=@Query+“登录”
设置@Query=@Query+'(NAME='+@DbName+''u log',FILENAME='+@DbFilePath+@DbName+''u log.ldf',SIZE=32448KB,MAXSIZE=2048GB,FILEGROWTH=10%)'
打印@query
EXEC sp_executesql@query

使用EXEC sp\u executesql:

DECLARE@Query-NVARCHAR(最大值)
设置@Query=''
声明@DbName NVARCHAR(max)='Db1'
声明@DbFilePath NVARCHAR(max)=N'E:\Database\N
设置@Query=@Query+'CREATE DATABASE'+@DbName+'ON PRIMARY'
设置@Query=@Query+'(名称=''+@DbName+'',文件名=''+@DbFilePath+@DbName+'.mdf'',大小=12288KB,最大大小=UNLIMITED,文件增长=1024KB)'
设置@Query=@Query+“登录”
设置@Query=@Query+'(NAME='+@DbName+''u log',FILENAME='+@DbFilePath+@DbName+''u log.ldf',SIZE=32448KB,MAXSIZE=2048GB,FILEGROWTH=10%)'
打印@query
EXEC sp_executesql@query

至少自己先尝试一下。您可以使用动态SQL,通过使用@databaseName存储过程参数(其中@databaseName是潜在过程参数的一个示例)形成CREATE DATABASE SQL语句来实现这一点至少自己先尝试一下,您可以使用动态SQL通过使用@databaseName存储过程参数(其中@databaseName是潜在过程参数的一个示例)形成CREATE DATABASE SQL语句来实现这一点