我想知道如何判断SQL Server中是否存在数据库角色.我想这样做:

if not exists (select 1 from sometable where rolename='role')
begin
CREATE ROLE role
    AUTHORIZATION MyUser;
end

我应该在这里使用什么表/程序?

推荐答案

SELECT DATABASE_PRINCIPAL_ID('role')
--or
IF DATABASE_PRINCIPAL_ID('role') IS NULL

USER_ID已弃用,可能会损坏.CREATE ROLE表示SQL 2005+,所以没关系

Sql相关问答推荐

GROUP BY和GROUP_CONCAT用于计算比赛排名

SQL更新,在2个额外的表上使用内部连接

有没有一种正确的方法来利用SQL UNION来从三个潜在查询中 Select 最大值?

计算分段的总权重

为什么两个不同的窗口函数给出不同的排序结果?

如何在presto/SQL中使用两个数组列创建(分解)单独的行

如何在snowflake中进行SQL的反向填充

计算周时出现SQL错误结果

对列进行排序后,基于两列删除重复行

当active=1时,是否可以创建id为的唯一索引?

使用左外部联接更正列中第+1行的值时重复

在Oracle SQL中按月生成日期

为什么左联接结果在MS Access数据库中不匹配

AdventureWorks 查询

如何在 JSONB 数组的每个对象中添加新的键值对- PostgreSQL

将varchar (7)列转换为datetime

SQL:无重复项的两个聚合函数

带聚合函数的 percentile_cont

SQL获取两个日期范围之间的计数

SQLite 中的过滤运行总和视图