编写 SQL Server 权限脚本

2024-03-26

我想将我对存储过程和其他内容设置的所有权限从开发数据库复制到生产数据库。通过 SSMS GUI 工具手动完成这一切非常麻烦,更不用说容易出错。

因此,我正在寻找一种方法,可以直接转储在一个数据库中设置的权限,并将这些相同的权限应用于单独的数据库(大概具有相同的架构)。


数据库的内置目录视图提供了执行此操作的信息。尝试这个查询:

SELECT
  (
    dp.state_desc + ' ' +
    dp.permission_name collate latin1_general_cs_as + 
    ' ON ' + '[' + s.name + ']' + '.' + '[' + o.name + ']' +
    ' TO ' + '[' + dpr.name + ']'
  ) AS GRANT_STMT
FROM sys.database_permissions AS dp
  INNER JOIN sys.objects AS o ON dp.major_id=o.object_id
  INNER JOIN sys.schemas AS s ON o.schema_id = s.schema_id
  INNER JOIN sys.database_principals AS dpr ON dp.grantee_principal_id=dpr.principal_id
WHERE dpr.name NOT IN ('public','guest')
--  AND o.name IN ('My_Procedure')      -- Uncomment to filter to specific object(s)
--  AND dp.permission_name='EXECUTE'    -- Uncomment to filter to just the EXECUTEs

这将为数据库中的每个权限发出一堆命令(GRANT/DENY)。由此,您可以将它们复制并粘贴到另一个查询窗口中并执行,以生成与原始查询窗口相同的权限。例如:

GRANT EXECUTE ON [Exposed].[EmployeePunchoutReservationRetrieve] TO [CustomerAgentRole]
GRANT EXECUTE ON [Exposed].[EmployeePunchoutReservationStore] TO [CustomerAgentRole]
GRANT EXECUTE ON [Exposed].[EmployeePunchoutSendOrderLogStore] TO [CustomerAgentRole]
GRANT EXECUTE ON [Exposed].[EmployeeReportSubscriptions] TO [CustomerAgentRole]

请注意注释掉的底线,即对permission_name 进行过滤。取消注释该行将导致查询仅吐出 EXECUTE 权限(即存储过程的权限)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

编写 SQL Server 权限脚本 的相关文章

  • 从每个子集中选择最大值

    我在这里敲头 我觉得自己很愚蠢 因为我确信我以前做过类似的事情 但我一辈子都不记得是怎么做的 我想那一天 gt 假设我有以下数据 gt 和一个返回此数据的查询 gt 但我想要这个 ID FirstID ID FirstID ID First
  • 如何在 SQL Server 中创建文件格式

    我正在尝试在 SQL Server 2017 中试验外部文件 但在第一步中遇到了困难 数据是管道分隔的 我试图遵循文档中的语法 这需要一个FILE FORMAT 以下是 Microsoft 的语法 CREATE EXTERNAL TABLE
  • 在 Sql STUFF 命令中将最后一项的逗号分隔符替换为“and”

    如果我查询的输出是英国 美国 印度 是否可以像英国 美国那样显示查询结果and India 这是我的查询 Select stuff Select Distinct Country as text from tbl Country where
  • Sql Server 的夏令时

    我们正在使用一个以 C Unix 格式存储日期的旧应用程序 C 时间基本上是自 1970 年 1 月 1 日以来的秒数 日期以整数形式存储在 SQL Server 数据库中 我正在为使用这些日期的报告编写视图 到目前为止 我正在使用以下命令
  • SQL Server 大小写/排序规则问题

    今天我在客户数据库中遇到了一个奇怪的情况 SQL Server 2005 数据库排序规则不区分大小写 因此我可以使用任何大小写编写 SQL 查询 没有任何问题 除了一个 一张特定表中的一个特定列称为 DeadZone 如果我这样查询 从表名
  • 错误:不支持的 PIVOT 列类型:文本

    我正在尝试执行 PIVOT 但出现错误 我正在尝试查看哪些患者接受了多次间隔治疗 该列是文本类型 我尝试在查询中将列类型转换为 VARCHAR MAX 但仍然收到错误 这是我的代码 SELECT patientname IntervalNa
  • 使用条件 SQL 统计每月汇总记录

    我有一张桌子 我们就叫他们桌子吧SUMMARYDATA NIP NAME DEPARTMENT STATUSIN STATUSOUT TOTALLOSTTIME A1 ARIA BB 2020 01 21 08 06 23 2020 01
  • 分组和切换列和行

    我不知道这是否会被正式称为枢轴 但我想要的结果是这样的 Alex Charley Liza 213 345 1 23 111 5 42 52 2 323 5 23 1 324 5 我的输入数据采用这种形式 Apt Name
  • 如何删除 Sql Server 2005 中存在的临时 SP

    我的问题很简单 如何删除临时存储过程 如果存在 这是因为当我在脚本中创建临时 SP 时 它会在第二次运行时抛出类似 数据库中已存在名为 sp name 的对象 的错误 我不想向用户显示此消息 请帮我 您的解决方案受到高度赞赏 临时进程的删除
  • 在 C# 中执行基于存储过程的查询后,如何重新使用 CommandText 的 SqlCommand 对象?

    我有一个示例代码 aCommand CommandType CommandType StoredProcedure aCommand Parameters AddWithValue book id bookID aCommand Param
  • 获取在任何日期创建的表的列表?

    我遇到了这样的情况 我想查找我在 2012 年 9 月 14 日 2012 年 9 月 14 日 在 sql server 上创建的表 是否有任何查询会列出在此日期创建的这些表 SELECT FROM sys tables WHERE cr
  • SQL Server 中高效的字符串后缀搜索?

    我想找到与谓词匹配的所有行MyColumn LIKE FooBar 但通过使用索引查找而不是扫描 一种方法本质上是创建 MyColumn 的反向版本并搜索反向模式 ooF 在该列上 在反向列上有一个常规索引 然而 我不喜欢手动创建这个反向列
  • 如何拥有引用另一个表的检查约束?

    我在 SQL Server 2008 数据库中有以下表 tblItem 其中有一个ItemID field 好项目 它还有一个 ItemID 字段 并且有一个指向 tblItem 的外键 tblBadItem 它也有一个 ItemID 字段
  • 插入记录后如何从SQL Server获取Identity值

    我在数据库中添加一条记录identity价值 我想在插入后获取身份值 我不想通过存储过程来做到这一点 这是我的代码 SQLString INSERT INTO myTable SQLString Cal1 Cal2 Cal3 Cal4 SQ
  • pymssql 库中的参数绑定是否正确实现?

    我使用 pymsqsql 库从 Python 程序调用极其简单的查询 with self conn cursor as cursor cursor execute select extra id from mytable where id
  • BULK INSERT 返回错误“访问被拒绝”

    运行批量插入时 BULK INSERT MyDatabase dbo MyTable FROM Mylaptop UniversalShare SQLRuleOutput csv WITH FIRSTROW 2 FIELDTERMINATO
  • 计算2个日期之间每个日期的记录数

    我必须创建一个查询来返回多轴图表的结果 我需要计算为 2 个日期之间的每个日期创建的 ID 数量 我试过这个 DECLARE StartDate datetime2 7 11 1 2020 EndDate datetime2 7 2 22
  • SQL服务器超时

    我的应用程序是在经典 asp 上开发的 但也使用 asp net 因为我正在将应用程序迁移到 Net 上 它使用 SQL Server 作为数据库并托管在 Windows Server 2003 上 现在的问题是应用程序在很长一段时间内继续
  • 从 MS Access 调用存储过程会导致错误 3146

    当我使用下面所示的代码从 MS Access 前端调用 SQL Server 存储过程时 它停止运行并抛出运行时错误 3146 这个存储过程在 SQL Server 中工作正常 但是当我从 MS Access 运行时 它首先工作 但突然停止
  • 需要在 SQL Server 中透视字符串值

    我有一个包含值的表 描述为 Occupation String Name String Developer A Developer B Designer X Coder Y Coder Z 我需要数据透视格式的值 Designer Deve

随机推荐

  • 我可以将 NextJS 放在 localhost/next 等子文件夹中吗?

    我尝试从 Next js 构建静态文件 但我想将其放在共享主机或本地主机的子文件夹中 例如 localhost nextweb 我试图找到一些例子 但我发现只将 NextJS 放在根目录中 我的 next config js 看起来像 co
  • 我可以现在将 iOS 应用程序的“部署目标”提高到更新的操作系统,然后再将其降低到早期的 iO​​S 吗?

    我的应用程序当前是使用 Xcode 5 1 1 针对 iOS 5 1 构建和运行的 对于它的第一个版本 我想只为 iOS 7 提供它 稍后 在未来的版本中 我想将其恢复为Deployment Target至 iOS 6 或 5 改变的影响是
  • 验证不会传播到 Angular 中的自定义表单控件 ng-select

    我在 Angular 9 应用程序中使用带有自定义表单控件的响应式表单 我包裹了我的ng 选择 https github com ng select ng select使用自定义表单控件进行控制 我在验证方面遇到问题 我将 formCont
  • 如何在 python 中调用 SQLite 按列名称引用列?

    我有一些代码一直用来查询 MySQL 我希望将它与 SQLite 一起使用 我真正的希望是这不会涉及对代码进行太多更改 不幸的是 以下代码不适用于 SQLite cursor execute query rows cursor fetcha
  • Python 的 argh 库:在帮助消息中保留文档字符串格式

    在寻找更快的方法来解析脚本中的命令行参数时 我遇到了啊图书馆 https pypi python org pypi argh 我真的很喜欢 argh 的功能 但我遇到了一个阻止我使用它的缺点 这与我调用 help 选项时显示的默认帮助消息有
  • UIPickerView重新加载数据

    我正在更改组件 特别是组件的数量和颜色 在我称为 pickerOne 的 UIPickerView 中 因此在进行更改后 我调用 pickerOne reloadData 它似乎工作得很好 但是 我收到了编译警告 warning UIPic
  • 为什么使用异常而不是 if...else

    例如 在 数组索引越界 异常的情况下 为什么我们不提前检查数组长度 if array length lt countNum logic else replace using exception 我的问题是 为什么选择使用异常 以及何时使用异
  • 什么时候是PersistentDict,什么时候是Folder?

    我什么时候应该使用持久字典 什么时候应该使用文件夹 它们在更新 内部结构 性能等方面有何区别 A PersistentMapping只是 python 的一个实现dict类型 通过标准库UserDict基类 针对 ZODB 的持久性语义进行
  • 在 viewDidUnload 和 dealloc 中都释放?

    一段时间以来我一直假设viewDidUnload当控制器被释放时总是被调用 这是一个正确的假设吗 我刚刚探索了一些奇怪的事情 并在我的控制器中设置了一个断点viewDidUnload这是dealloc 看起来dealloc被称为 但是vie
  • Android Studio更新:安装区域(studio.exe | uninstall.exe)中发现一些冲突

    当我启动 Android Studio 时 它会显示有关 1 1 版本新更新的弹出窗口 但是当我开始更新时 下载所有补丁文件后 重新启动时 它显示以下错误 我几乎在 Google 和 Stackoverflow 上到处搜索 已经有两个问题了
  • 我正在尝试在 boto3 周围输入注释,但模块“botocore.client”没有属性“EC2”

    我正在围绕 boto3 编写自己的包装器 以实现快速触发功能 我正在尝试输入注释内容boto3 session client ec2 返回 调试器说是
  • 给新手关于 N 层应用程序的建议

    好的 各位 这是给你们的另一篇 我开始涉足 n 层应用程序世界 我已经阅读了一些有关该主题的内容 一般建议是 n 层应用程序的目标是抽象层间功能 因此 基于此 在 n 层应用程序中 常规模型是 Data Access gt Business
  • 找到两个相似波形之间的时间偏移

    我必须比较两个时间与电压波形 由于这些波形源的特殊性 其中一个波形可以是另一个波形的时移版本 怎样才能知道是否有时移 如果是的话 多少钱 我正在 Python 中执行此操作 并希望使用 numpy scipy 库 scipy 提供了一个相关
  • 通用数组列表冒泡排序问题

    我知道有内置例程 但作为一名学习者 我想使用自己的设备进行排序 并且由于排序已经过时了 所以我决定尝试制作自己的例程generic如果我弄清楚它们在 Java 中的工作原理 我可以将其用于数字或字符串甚至日期的排序例程 这就是我所拥有的 将
  • 在 python 中实现 Bron–Kerbosch 算法

    对于一个大学项目 我正在尝试实施布隆 克博什算法 http en wikipedia org wiki Bron Kerbosch algorithm 即列出给定图中的所有最大团 我正在尝试实现第一个算法 不进行旋转 但是我的代码在测试后并
  • 如何更改 Netbeans 缓存目录?

    有什么方法可以更改 Netbeans 7 0 1 缓存目录吗 我只是不想更改几个应用程序的缓存 临时目录 其中之一是 NetBeans 对于 Netbeans 7 来说这似乎是不可能的 除非您重新定位整个用户目录或按照 MadWizard
  • 检查 AngularJs 指令中属性是否存在

    可以检查给定属性是否存在于指令中 理想情况下使用隔离范围 或者在最坏的情况下使用属性对象 指令看起来像这样
  • 信号执行期间的 sigprocmask

    我目前正在研究使用sigprocmask阻止某些信号 在这种情况下 SIGALRM and SIGCHLD 当关键代码段正在执行时 与这些信号关联的两个信号处理程序都将访问和修改中央数据结构 因此在主进程处理该数据结构时阻止它们访问它至关重
  • 将 youtube api 帮助程序集成到 iOS 时出现错误 258

    https developers google com youtube v3 guides ios youtube helper https developers google com youtube v3 guides ios youtu
  • 编写 SQL Server 权限脚本

    我想将我对存储过程和其他内容设置的所有权限从开发数据库复制到生产数据库 通过 SSMS GUI 工具手动完成这一切非常麻烦 更不用说容易出错 因此 我正在寻找一种方法 可以直接转储在一个数据库中设置的权限 并将这些相同的权限应用于单独的数据