【问题标题】:How do I keep security settings when I restore a database from another server从另一台服务器恢复数据库时如何保留安全设置
【发布时间】:2012-03-20 13:52:29
【问题描述】:

我有两台 SQL Server,我想在其中一台上进行备份,然后在另一台服务器上恢复。问题是数据库已经存在于我要恢复到的服务器上,我想保持安全设置在我要恢复到的服务器上的方式。

另一个问题是我想通过 PowerShell 完成所有这些操作,因此不需要 GUI 操作。

或者这可能是问题的错误解决方案。是否有另一种方法可以在不进行备份/恢复和保持安全设置的情况下移动数据?

【问题讨论】:

  • “安全设置”是什么意思?登录名、用户、角色、对象权限?您使用的是什么版本的 SQL Server?
  • 个人在另一台服务器上还原数据库后,我使用存储过程设置安全性。您可以在恢复成功后使用 posh 编写脚本来执行存储
  • @Pondlife 是的。两台服务器上的登录名、用户和角色不同(不同的服务帐户等)。我们在两台服务器上都使用 Microsoft SQL Server 2008 R2 Enterprise。

标签: sql-server tsql powershell


【解决方案1】:

在我的环境中,我们使用 Powershell 脚本和 Red Gate Compare Professional 来恢复数据库并保持安全性以及数据库对象差异。过程相当简单

  1. 创建目标数据库的 Red Gate 快照。使用 Red Gate 命令行工具。它生成的文件非常小,只包含用户、权限和对象——基本上除了数据之外的所有内容。
  2. 使用 T-SQL 在目标数据库上恢复源数据库
  3. 使用命令行 Red Gate 工具将步骤中创建的快照与几乎恢复的数据库进行比较和同步。任何安全或对象更改都会恢复。

此解决方案确实需要购买 SQL Compare 专业版并将该工具安装在可以执行脚本的开发服务器上。所有这些都可以轻松地放入 SQL 代理作业中。 Powershell 的使用非常基础,因为我们只是在执行 sqlcompare.exe

【讨论】:

    【解决方案2】:

    an article here 解释了如何通过 PowerShell 通过 SMO 编写 SQL Server 权限脚本。然后,您的方案是在恢复备份之前从初始数据库编写权限脚本,然后在恢复备份后执行生成的脚本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-02-06
      • 2021-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多