如何管理开发和生产之间的 SQL 权限?

2024-01-02

我正在尝试建立一个顺利的部署过程,我们可以使用单个部署脚本部署到生产或开发 SQL 服务器。

但我不知道如何最好地管理两个环境之间的用户和权限。例如,在开发中我们希望开发者团队拥有db_owner数据库角色。在生产中,我们要么不希望访问,要么只希望datareader role.

我认为最简单的方法是在每台服务器上设置用户一次,然后不将它们保留在数据库项目中。但随后它们在部署过程中被丢弃。

有什么方法可以使用 Visual Studio 中的项目配置来执行此操作吗?

我们正在使用完整的 Microsoft 堆栈

  • Visual Studio 2010数据库项目
  • SQL Server 2008
  • TFS 版本控制和构建服务器
  • vsdbcmd用于部署

有几件事可以让这变得更容易:

  1. 在数据库中创建有意义的角色名称,其中包含角色应具有的权限。例如“开发”或“生产支持”。仅将权限分配给这些角色并将用户分配给这些角色
  2. 在您的项目中,您可能针对不同的环境有不同的部署配置。由于每个配置可以使用不同的 sqlcmdvars 文件,因此请为您的环境创建一个 SQLCMD 变量并为其添加适当的值(例如,“DEV”用于开发,“PROD”用于生产)
  3. 创建一个部署后脚本,根据 SQLCMD 变量的值,为正确的环境执行正确的操作。就像是:

--

if ('$(Environment)' = 'DEV')
begin
   create user [domain\developers]
   exec sp_addrolemember @rolename='db_owner', @membername='domain\developers'
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何管理开发和生产之间的 SQL 权限? 的相关文章

  • 如何为动态创建的按钮创建 onClick 事件处理程序

    目前 我正在为学生宿舍做一个项目 现在我必须实现一些关于学生的搜索策略 这里 当用户单击 aspx 页面中的另一个服务器按钮时 我必须动态创建一个按钮 因此我必须创建新创建的按钮的 onclick 事件处理程序 我使用的代码片段是 prot
  • SQL Server:为什么 ISO-8601 格式的日期依赖于语言?

    我需要一些帮助来理解 SQL Server 中的日期格式处理 如果您尝试以下操作 它将返回正确的结果 SET LANGUAGE English SELECT CAST 2013 08 15 AS DATETIME 2013 08 15 00
  • 如何拥有引用另一个表的检查约束?

    我在 SQL Server 2008 数据库中有以下表 tblItem 其中有一个ItemID field 好项目 它还有一个 ItemID 字段 并且有一个指向 tblItem 的外键 tblBadItem 它也有一个 ItemID 字段
  • 仅在调试版本中防止 NuGet 恢复包

    我在解决方案中启用了 恢复包 选项 因此当我将代码上传到 CI 服务器时 它会更新正确构建所需的所有包 并且效果很好 现在的问题是 在我的本地计算机上 构建需要很长时间才能启动 因为正在 更新软件包 有没有办法仅在发布版本中启用恢复包 我尝
  • BULK INSERT 返回错误“访问被拒绝”

    运行批量插入时 BULK INSERT MyDatabase dbo MyTable FROM Mylaptop UniversalShare SQLRuleOutput csv WITH FIRSTROW 2 FIELDTERMINATO
  • 如何在 SQL Server 中不循环更新列?

    出于性能角度的考虑 我只需要删除循环并使用一些联接或其他解决方案来更新 Result 表中的数据并获得循环返回的相同结果 标量函数 CREATE FUNCTION MultiplyerScl a INT b INT RETURNS INT
  • XAML 构建的本地 TFS 到 VSTS 迁移

    目前 我们在本地使用 TFS 2017 update 1 但我们必须在 VSTS 云平台上迁移 TFS 此外 我们还使用自定义构建模板在本地使用 TFS 构建服务器进行 XAML 构建 我们的问题是迁移后所有 XAML 构建定义是否都能正常
  • SQL Server 实例名称的最大长度?

    我需要知道以下版本的 SQL Server 实例名称的最大字符长度 如果它们之间存在差异 SQL Server 2000 SQL Server 2005 SQL Server 2008 SQL Server 2008 R2 我正在开发一个应
  • 当附加触发器时,Linq-to-sql 插入和更新失败

    我最近在 linq to sql 方面遇到了一些问题 问题在于 当我们将触发器附加到事件时 它 认为 插入和更新失败 一个例子可以是一行 当一行被更改时 附加一个触发器将 LastUpdated 冒号设置为当前时间 这将导致 linq to
  • 如何向 SQL 连接字符串添加自定义属性?

    我想在 SqlServer 连接字符串中添加一些自定义属性 如下所示 Integrated Security SSPI Extended Properties SomeAttr SomeValue Persist Security Info
  • Oracle OLE DB 提供程序未在 SSIS 中列出

    我在 SSIS 和 VS2015 CM 方面遇到问题 我有一个包需要连接 Oracle 来获取一些数据 我安装了适用于 Win64 的 ODAC 和 Oracle 客户端 但看不到提供程序列表中列出的 OLE DB 的 Oracle 提供程
  • 使用 DISTINCT 进行查询需要很长时间

    我正在使用 Microsoft Access 2003 我的项目中的一个表单需要很长时间才能向用户显示 这是适用的查询 SELECT DISTINCT tb KonzeptDaten DFCC tb KonzeptDaten OBD Cod
  • TFS API - 更新工作项字段

    是否可以使用 TFS API 更新工作项的字段 沿着这条线的东西 WorkItemStore GetWorkItem Convert ToInt32 current WorkItemId State rcbState SelectedVal
  • 跳过行:将数据从 SSIS 导出到 Excel 文件

    我正在尝试使用 SSIS 将数据从 SQL Server 数据库导出到 Excel 文件中 我希望从第 6 行插入数据 第 5 行有标题 我可以映射标题名称Excel 目标编辑器 通过编写 SQL 命令到 SQL 表头 SELECT FRO
  • 自动包含在 Visual Studio 外部创建的新文件

    Problem 如果我将图像保存在项目文件夹结构中的某个位置 则在 Visual Studio 外部创建的图像不会自动包含到我的项目中 问题 有没有办法自动包含添加到项目中任何文件夹中的新文件 我还使用源代码管理 团队基础服务器 如果新文件
  • TFS MSBuild:$(ProjectDir) 空白或随机

    我有一个 vcproj 文件 其中包含一个简单的预构建事件 大致如下 Helpertask exe ProjectDir 这在开发人员 PC 上运行良好 但是当解决方案在 MSBuild 下的 TFS 2008 构建服务器上构建时 Proj
  • SQL存储过程执行时间差异

    我在 win form 应用程序中遇到奇怪的问题 我正在调用一个存储过程 并且执行大约需要 6 秒 此存储过程接受多个参数 包括一个输出参数 从应用程序级别我使用 Dim dt1 DateTime Now cmd ExecuteNonQue
  • 从 TFS 2010 就地迁移到 TFS 2015

    我对从 Team Foundation Server 2010 就地升级到 Team Foundation Server 2015 有疑问 我们目前的情况包含以下软件版本 Windows Server 2008 R2 SQL Server
  • SQL Server:如果存在会大大减慢查询速度

    正在使用SQL Server 2012 我找到了一些关于查询优化的主题 并将 EXISTS 与 COUNT 进行比较 但我找不到这个确切的问题 我有一个看起来像这样的查询 select from tblAccount as acc join
  • 如何使用 php 在 sql 查询中转义引号?

    我有一个疑问 sql SELECT CustomerID FROM tblCustomer WHERE EmailAddress addslashes POST username AND Password addslashes POST p

随机推荐

  • 神经网络的显着图(使用 Keras)

    我有一个在 Keras 中训练的完全连接的多层感知器 我向它提供一个 N 维特征向量 它会预测输入向量的 M 个类别中的一个 训练和预测运行良好 现在我想分析输入特征向量的哪一部分实际上负责特定的类 例如 假设有两个类A and B 和一个
  • 按字母顺序对内容进行排序

    因此 我在 AJAX 调用之后附加以下内容 并且此 AJAX 调用可能会发生多次 并返回多个数据项 我正在尝试使用 Tinysort http plugins jquery com project TinySort http plugins
  • 如何在 Angular 4 中禁用 ngbDatepicker 中的前一个日期?

    我想禁用所有先前 过去的日期ngbDatepicker 我用过ngbDatepicker 我的 HTML 是
  • 如何在 INPUT 标签上不使用 ID 属性的情况下使用 LABEL 标签的 FOR 属性

    下面代码中所示的问题有解决方案吗 首先在浏览器中打开代码 直入主题 无需在了解您要查找的内容之前查看所有代码 h1 Input ID creates a bug h1 p In this example I make a list of c
  • Facebook 应用程序中不允许使用 HTTP 动词 POST 来访问路径“/”

    我正在尝试使用 4 2 1 C SDK 构建简单的 facebook 应用程序 但我有一个错误 The HTTP verb POST used to access path is not allowed Description An unh
  • C++初始化[重复]

    这个问题在这里已经有答案了 可能的重复 具有初始值的类构造 https stackoverflow com questions 7207884 class construction with initial values 当我在看 c 示例
  • WIA 2.0 复式房产

    我正在使用 C 开发一个应用程序以使用 WIA 2 0 库 目前我可以使用大部分功能 例如 ADF 自动文档进纸器 过滤器等等 现在 我需要使用扫描仪 富士通 的双面打印器 我正在尝试将 WIA DPS DOCUMENT HANDLING
  • Visual Studio 2019 测试资源管理器将所有测试置于“未运行测试”下

    我有一个ASP NET 核心 3项目与Visual Studio 专业版 19 4 1 with xUnit 2 4 0 我在那里写了几个测试 我的问题是 Visual Studio 始终在 未运行测试 下显示该项目中的所有测试 相同的测试
  • 如何在java中弯曲图像

    有什么办法可以弯曲BufferedImage在Java中 我认为如果我将图像裁剪成更小的部分并旋转它们 那么我基本上会弯曲图像 但它似乎不起作用 这是我创建的方法 This is a recursive method that will a
  • sqlite递归祖先查询

    我试图弄清楚如何对分层表使用递归查询 我需要获取给定记录的祖先 并且记录应按其在层次结构中的级别顺序排序 也就是说 第一条记录应该是顶级节点 下一条记录应该是子节点 然后是它的子节点 一直到正在查询的记录 考虑一个名为 食物 的表 其中包含
  • CSS vw 和 vh 但相对于父级而不是视口

    我正在尝试创建一个固定纵横比的框 调整大小以不溢出其父级 经典填充底部技巧 https stackoverflow com questions 1495407 maintain the aspect ratio of a div with
  • 显示字符串中不可打印的字符

    是否可以用十六进制值可视化 python 字符串中的不可打印字符 例如如果我有一个内部带有换行符的字符串 我想将其替换为 x0a 我知道有repr 这会给我 n 但我正在寻找十六进制版本 我不知道任何内置方法 但使用理解很容易做到 impo
  • 使用 AngularJS 将表单控件设置为焦点不变

    在我的表单中 我想在用户关注表单控件时将其设置为不受影响 以便隐藏在触摸字段且字段无效时显示的验证消息 我怎样才能做到这一点 我曾尝试编写指令但无法使其发挥作用 我可以在控制台中看到指令中的值从 true 更改为 false 但表单控件没有
  • 在 Xcode 6 beta 中使用尺寸类

    在 Xcode 6 Beta 1 中使用 Swift 从头开始 构建一个新项目 并查看 Storyboard 的文件检查器 有Use Size Classes below Use Auto Layout 这是这个的截图 1 什么是Use S
  • 某些 SMS 消息如何传输发件人姓名?

    我注意到我从公司收到的某些短信带有 发件人姓名 例如 就在今天 我收到了一条来自我以前从未使用过的号码 不是我的联系人 的短信 但发件人姓名显示为 Adobe 我也从其他公司得到这个 例如 Facebook Google 和银行 它与电子邮
  • 使用 jQuery Mobile 动态更改翻转切换的值

    我正在使用 jQuery Mobile 并将一些设置保存在 cookie 中 当设置页面重新加载时 我读取 cookie 以设置所有值 我在设置时遇到问题翻转拨动开关 http jquerymobile com demos 1 0a2 do
  • 使用GDB运行时致命错误消失

    我有一个程序 它在测试用例中产生致命错误 我可以通过读取致命错误的日志和堆栈跟踪来定位问题 原来是对空指针进行了读操作 但是当我尝试将 GDB 附加到它并在可疑代码周围设置断点时 无法观察到空指针 程序运行顺利 没有任何错误 这是一个单进程
  • HTML5 拖放上传

    有谁知道如何使用HTML5实现桌面拖放文件上传吗 我找到了以下参考资料 使用拖放选择文件 2017 08 https developer mozilla org en Using files from web applications Se
  • 为什么字符串的空间复杂度是 O(n) 而数字是 O(1)?

    我对辅助空间复杂性有点迷失 在我参加的讲座中 讲师指出字符串的空间复杂度为 O n 因为字符串的长度 n 会有所不同 但诸如数字 布尔值 未定义等原语具有恒定的空间复杂度 O 1 我很困惑 因为如果字符串的空间长度不同 那么数字也不一样吗
  • 如何管理开发和生产之间的 SQL 权限?

    我正在尝试建立一个顺利的部署过程 我们可以使用单个部署脚本部署到生产或开发 SQL 服务器 但我不知道如何最好地管理两个环境之间的用户和权限 例如 在开发中我们希望开发者团队拥有db owner数据库角色 在生产中 我们要么不希望访问 要么