SQL Server DROP角色

时间:2017-01-16 13:41:01

标签: sql-server-2012 role

我在Visual Studio 2013中的帖子部署脚本中有以下内容:

-- Drop existing role and create again to be up to date
DROP ROLE payments_data_access_role
GO

CREATE ROLE payments_data_access_role
GO

然而,当我从VS发布数据库时,我收到了角色' payments_data_access_role'不存在。

如何重写此选项,以便在角色存在时删除角色,然后重新定义角色?

谢谢。

更新:我尝试了以下内容并且有效:

IF IS_ROLEMEMBER ('payments_data_access_role') IS NOT NULL
    DROP ROLE payments_data_access_role

CREATE ROLE payments_data_access_role
GO

这是正确的做法吗?你能就此提出自己的看法吗?谢谢。

1 个答案:

答案 0 :(得分:0)

BEGIN TRY PRINT 'Trying to drop role paymens_data_access_role...'; DROP ROLE payments_data_access_role; Print 'Role payments_data_access_role dropped.'; END TRY BEGIN CATCH PRINT 'Role payments_data_access_role does not exist, not dropping...'; END CATCH; CREATE ROLE payments_data_access_role; 会像您使用它一样工作。

对于部署,我只需将其包装在try / catch:

import {Component, NgModule} from '@angular/core'
import {BrowserModule} from '@angular/platform-browser'

@Component({
  selector: 'my-app',
  template: `
    <template #templateRef let-label="label" let-url="url">
      <div><a href="{{url}}">{{label}}</a></div>
    </template>

    <div [ngTemplateOutlet]="templateRef" [ngOutletContext]="menu[0]"></div>
    <div [ngTemplateOutlet]="templateRef" [ngOutletContext]="menu[1]"></div>
  `
})
export class App {
    menu:any = [{
           "id": 1,
           "label": "AngularJS",
           "url": "http:\/\/www.learn-angular.fr\/angularJS"
          }, {
           "id": 2,
           "label": "Angular",
           "url": "http:\/\/www.learn-angular.fr\/angular"
    }];

    constructor() {}
}

这样您就可以在部署日志中获得反馈,并且错误不会停止执行。与使用检查用户是否属于某个角色的函数相比,它的意图也更加明显。如果您需要在一段时间后回到此代码,或者为了解密您的代码的下一个人,将来可能会让您更轻松。