ALTER PROCEDURE dbo.company_generate
@patch nvarchar(250),/*备份路径*/
@dbName nvarchar(250)/*公司名称*/
AS
declare @strSQL1 nvarchar(max),@strSQL2 nvarchar(max),@strSQL3 nvarchar(max),@strSQL4 nvarchar(max),@strSql5 nvarchar(max)
/*创建数据库*/
set @strSQL1='
use [master]
CREATE DATABASE ['+@dbName+'] ON  PRIMARY 
( NAME = N'''+@dbName+''', FILENAME = N'''+@patch+'\'+@dbName+'.mdf'' , SIZE = 6144KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
LOG ON 
( NAME = N'''+@dbName+'_log'', FILENAME = N'''+@patch+'\'+@dbName+'_log.ldf'' , SIZE = 136064KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
'
/*给数据库分配用户和角色*/
set @strSql5='
use ['+@dbName+']
exec sp_grantdbaccess @loginame = N''Motorcade''--使其成为数据库的合法用户***/ 
exec sp_addrolemember N''db_owner'', N''Motorcade''   /***--授予对自己数据库的所有权限***/
'
EXEC(@strSql5)
--print 后的结果
use [master]
CREATE DATABASE [hj_company] ON  PRIMARY 
( NAME = N'hj_company', FILENAME = N'E:\Motorcade\Code\Motorcade.Web\company\hj_company\hj_company.mdf' , SIZE = 6144KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
LOG ON 
( NAME = N'hj_company_log', FILENAME = N'E:\Motorcade\Code\Motorcade.Web\company\hj_company\hj_company_log.ldf' , SIZE = 136064KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
use [hj_company]
exec sp_grantdbaccess @loginame = N'Motorcade'--使其成为数据库的合法用户***/ 
exec sp_addrolemember N'db_owner', N'Motorcade'   /***--授予对自己数据库的所有权限***/总是提示该登录已用另一个用户名开立帐户
另外授予还原权限,总是提示'restore' 附近有语法错误GRANT restore DATABASE TO Motorcade
多谢各位指点!

解决方案 »

  1.   

    对于备份,可以直接授予或者安排为备份管理员角色SQL codeGRANT BACKUP DATABASE TO loginname
    SQL codesp_addrolemember 'db_backupoperator', loginname
    对于还原,需要有create database的权限,可以直接授权SQL codeGRANT CREATE DATABASE TO loginname
      

  2.   

    您这个是在grantdbaccess 之后才能用的。因为新的数据库中并不存在此用户。需要分配之后才能使用