如何在PROCEDURE中添加CREATE DATABASE和CREATE SCHEMA?

时间:2015-07-17 05:47:23

标签: sql-server sql-server-2012

尝试使这项工作:

CREATE PROCEDURE createDbandSchema AS
BEGIN
    CREATE DATABASE MYDB
    USE MYDB
    CREATE SCHEMA MYSCHEMA
END

我收到了错误

  

过程,函数或中不允许使用USE数据库语句   触发。

2 个答案:

答案 0 :(得分:2)

create schema语句必须是批处理中的第一个,因此它需要嵌套范围。外部作用域将更改为新数据库。内部作用域作为批处理的第一个语句运行create schema

create procedure createDbandSchema(@db sysname, @schema sysname)
as begin
    declare @sql nvarchar(max) = N'CREATE DATABASE ' + quotename(@db);
    exec (@sql)
    set @sql = N'USE ' + quotename(@db) + '; exec (N''CREATE SCHEMA ' +
        quotename(@schema) + N''')';
    exec (@sql)
end

答案 1 :(得分:0)

使用CREATE SCHEMA语法,或者在SSMS中深入了解数据库 - > YourDatabaseName - >安全 - >架构。右键单击Schemas文件夹,然后选择" New Schema ..."

enter image description here

https://msdn.microsoft.com/en-us/library/dd207005.aspx

http://www.c-sharpcorner.com/UploadFile/63f5c2/schema-in-sql-server-2012/