猿问

SQL server 存储过程创建数据库失败

手动 用  appadmin 创建数据库成功  

但是存储过程中创建过程中却出错:

消息 262,级别 14,状态 1,第 1 行
在数据库 'master' 中拒绝了 CREATE DATABASE 权限。

存储过程创建语句:


if (exists (select * from sys.objects where name = 'proc_create_database'))
drop proc proc_create_database
go
create proc proc_create_database(
@Name nvarchar(50),
@Path nvarchar(255)
)
WITH EXECUTE AS N'appadmin'
as
declare @sql nvarchar(max);
set @sql = 'create database "<NAME>" on (name="<NAME>",filename="<PATH><NAME>.mdf",size=5mb,maxsize=unlimited,filegrowth=1) log on (name="<NAME>_log",filename="<PATH><NAME>_log.ldf",size=5mb,maxsize=unlimited,filegrowth=1)'
if exists(select * from sys.sysdatabases where name= @Name)
begin
SELECT system_user
print '删除存在库'
exec('use master drop database "'+ @name +'"')
print '建库'
set @sql = REPLACE(@sql,'<NAME>',@Name)
set @sql = REPLACE(@sql,'<PATH>',@Path)
exec(@sql)
end
else
begin
SELECT system_user
print '建库'
set @sql = REPLACE(@sql,'<NAME>',@Name)
set @sql = REPLACE(@sql,'<PATH>',@Path)
exec(@sql)
end

此存储过程没有在master库内  在另一个库内

 

湖上湖
浏览 1155回答 3
3回答

摇曳的蔷薇

使用sa账户执行吧。摆明了是权限不足。

慕斯王

没有创建数据库的权限,点击该数据库-安全性-用户-双击你的用户-给该用户授予db_owner权限就可以了

潇潇雨雨

你好,已经设置过 db_owner 了  不然直接用appadmin  create  database 也不会成功    
随时随地看视频慕课网APP

相关分类

SQL Server
我要回答