Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 是否可以恢复数据库并保留从以前的数据库登录的安全权限?_Sql Server_Sql Server 2008_Database Restore - Fatal编程技术网

Sql server 是否可以恢复数据库并保留从以前的数据库登录的安全权限?

Sql server 是否可以恢复数据库并保留从以前的数据库登录的安全权限?,sql-server,sql-server-2008,database-restore,Sql Server,Sql Server 2008,Database Restore,我需要从使用不同登录名的不同环境中还原数据库,但我希望保留此数据库对此服务器上已有登录名的权限 现在,在目标服务器上恢复登录后,该数据库(和所有者角色)的映射将丢失 我想还原数据库中的所有内容,同时我不想映射数据库并将所有者角色添加到登录 有可能吗 我尝试了不同的恢复方法-在恢复之前删除,以及删除但不关闭现有连接。结果是一样的,我需要再次映射新还原的数据库并添加所有者角色。通常数据库用户必须映射到实例登录才能工作,但是如果您希望使数据库更独立于实例,并从数据库内部控制数据库,那么您的解决方案将是

我需要从使用不同登录名的不同环境中还原数据库,但我希望保留此数据库对此服务器上已有登录名的权限

现在,在目标服务器上恢复登录后,该数据库(和所有者角色)的映射将丢失 我想还原数据库中的所有内容,同时我不想映射数据库并将所有者角色添加到登录

有可能吗


我尝试了不同的恢复方法-在恢复之前删除,以及删除但不关闭现有连接。结果是一样的,我需要再次映射新还原的数据库并添加所有者角色。

通常数据库
用户
必须映射到实例
登录才能工作,但是如果您希望使数据库更独立于实例,并从数据库内部控制数据库,那么您的解决方案将是一个简单的解决方案

来自BOL女士:

包含的数据库是与其他数据库隔离的数据库 数据库和来自承载该数据库的SQL Server实例。 SQL Server 2017帮助用户将其数据库与实例隔离 有四种方式

  • 描述数据库的大部分元数据都保存在数据库中。(除了或代替在 主数据库。)

  • 所有元数据都使用相同的排序规则定义

  • 用户身份验证可以由数据库执行,从而减少数据库对SQL Server实例登录的依赖性

  • SQL Server环境(DMV、XEvents等)报告并可根据包含信息采取行动


这些是SQL登录吗?他们有相同的SID吗?如果答案是否定的,从SQLServer的角度来看,它们是不同的登录。除了用户传递用户名时,名称不是标识符。从用户->登录映射的角度来看,SID很重要。另一方面,SQL Server 2008现在完全不受支持,几个月来一直如此。你们真的应该尽快查看升级路径。这是不同的SQL登录,但我将DB恢复到服务器上,在那个里,除了登录外,其他基本内容都是相同的。所以我想保留旧的许可。我不确定你问的信息是否足够?我想我现在明白了。这似乎不是一个简单的方法-总是需要比我想要的更多,所以登录更改是我最好的选择。谢谢,我认为这与我想要的正好相反。在这种情况下,我需要你详细说明“使用了不同的登录名,但我希望保留对已存在登录名的数据库的权限”和“恢复我的登录名后”。您有2个环境2个不同的登录集。您正在恢复数据库及其用户,如果没有相应的登录(基于“使用不同的登录”),这些用户应该应用到您的第二个实例上。我认为这与我想要的正好相反。但我现在明白了。谢谢你的帮助