我在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
这是正确的做法吗?你能就此提出自己的看法吗?谢谢。
答案 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() {}
}
这样您就可以在部署日志中获得反馈,并且错误不会停止执行。与使用检查用户是否属于某个角色的函数相比,它的意图也更加明显。如果您需要在一段时间后回到此代码,或者为了解密您的代码的下一个人,将来可能会让您更轻松。