none
物理复制数据文件出现的权限问题 RRS feed

  • 问题

  • 我有两台机器,两台机器的C盘是克隆的完全一致,数据文件(包括系统数据库)都在E盘,我通过物理拷贝的方式把第一台机器的所有文件都拷贝到另一台机器上,新机器启动数据库服务报没有权限读取文件的错误,我发现文件夹和文件缺失了SQLSERVERAGRNT或MSSQLSERVER文件组权限

    我在文件右击打开属性的时候在安全里面添加【组或用户名】,根本就没有这两个数据库自带的权限,这种组可能是安装数据库时内置。

    请问有什么办法能添加这种数据库内置的组,目前只能通过添加EVERYONE的方式,但是存在安全隐患

    2022年9月17日 6:25

全部回复

  • Copy those windows accounts with same sid over.
    2022年9月17日 15:31
  • Copy those windows accounts with same sid over.
     您好!能具体一些不,如果有相关文档案例就更好了
    2022年9月19日 1:32
  • Hi @database_noob

    如果启动数据库报没有权限读取文件的错误, 你的SQL server 服务是在哪个账号下运行呢?你可以从SQL server configuration manager 去确认这个服务账号,然后赋予这个服务账号服务读写文件夹的权限。

    ******************************************************************************************

    如果回复有帮助,请点击“接受答案”并点赞,因为这可以帮助其他社区成员寻找类似的帖子。


    2022年9月19日 1:51
  • Hi @database_noob

    如果启动数据库报没有权限读取文件的错误, 你的SQL server 服务是在哪个账号下运行呢?你可以从SQL server configuration manager 去确认这个服务账号,然后赋予这个服务账号服务读写文件夹的权限。

       启动报的就是没有权限写入errorlog的错误, 服务里登录账号用的就是默认的NT Service\MSSQLSERVER,但是我文件夹属性里面就搜不到改用户或者组,应该时数据库内置的。所以我没办法添加
    2022年9月19日 9:41
  • Did you grant proper file access permission to NT Service\MSSQLSERVER?
    2022年9月20日 0:27
  • Hi @database_noob

    我想问下你文件夹下面有MSSQLSERVER这个账号吗?这个账号对应的就是默认实例的虚拟账号。如果有,请赋予这个账号文件夹的读取权限。如果没有,你试下这个类似案例的解决方案,他是重新更新了下服务器名,就找到了MSSQLSERVER SQLSERVERAGENT 虚拟用户帐户,并将它们添加到目录权限。

    ******************************************************************************************

    如果回复有帮助,请点击“接受答案”并点赞,因为这可以帮助其他社区成员寻找类似的帖子。



    2022年9月20日 2:28
  • Hi @database_noob

    问题有什么进展吗?回复有帮助吗?



    2022年9月21日 1:46
  • Hi @database_noob

    我想问下你文件夹下面有MSSQLSERVER这个账号吗?这个账号对应的就是默认实例的虚拟账号。如果有,请赋予这个账号文件夹的读取权限。如果没有,你试下这个类似案例的解决方案,他是重新更新了下服务器名,就找到了MSSQLSERVER SQLSERVERAGENT 虚拟用户帐户,并将它们添加到目录权限。

    ******************************************************************************************

    如果回复有帮助,请点击“接受答案”并点赞,因为这可以帮助其他社区成员寻找类似的帖子。



      因为文件夹是我其他机器上COPY过来的,所以没有MSSQLSERVER这个账号,这个虚拟账号在操作系统层不能搜索出来并添加

     我按照他的方式还是不行:

    SELECT @@SERVERNAME AS 'Server Name'

    sp_dropserver 'WIN-C79QPUI1GH6';
    GO
    sp_addserver 'WIN-C79QPUI1GH6', local;
    GO

    这个everyone是我自己创建的

        

    2022年9月22日 11:47
  • What's sql service account on that new machine?
    2022年9月22日 16:34
  • Hi  @database_noob,

    我想把这个问题和环境再顺下,看看是不是有什么遗漏的。或者我是不是把你的环境和问题理解错了,如果我误解,请及时告知,方便我测试问题。

    环境背景及问题;你把服务器A上SQLserver实例1的所有数据库的数据文件和日志文件的文件夹(也是Data文件夹),这整个文件夹拷贝到服务器B上。服务器B是个新服务器,然后你是在服务器B上装了与服务器A版本相同的新的实例吗?然后用拷贝的这个文件夹替换了新服务器自动生成的Data文件夹,然后新服务器启动的时候读取Data文件夹的时候报没有权限读取这个文件夹?这个新服务器实例的service account也是NT Service\MSSQLSERVER?你这么做的目的是什么呢?创建一个实例的备份做测试?



    2022年9月23日 1:54
  • Hi  @database_noob,

    我想把这个问题和环境再顺下,看看是不是有什么遗漏的。或者我是不是把你的环境和问题理解错了,如果我误解,请及时告知,方便我测试问题。

    环境背景及问题;你把服务器A上SQLserver实例1的所有数据库的数据文件和日志文件的文件夹(也是Data文件夹),这整个文件夹拷贝到服务器B上。服务器B是个新服务器,然后你是在服务器B上装了与服务器A版本相同的新的实例吗?然后用拷贝的这个文件夹替换了新服务器自动生成的Data文件夹,然后新服务器启动的时候读取Data文件夹的时候报没有权限读取这个文件夹?这个新服务器实例的service account也是NT Service\MSSQLSERVER?你这么做的目的是什么呢?创建一个实例的备份做测试?



         是这样的,原来生产环境是物理机,需要迁移到虚拟机,通过P2V软件克隆到虚拟环境,数据文件都在E盘,客户克隆C盘没问题,但是E盘一直存在问题,后来就只克隆C盘,克隆完毕后,我COPY,E盘所有的文件到新环境上,启动数据库服务报错,报OS没有权限读写文件,后来我只能加个EVERYONE,我想能不能添加数据库层的虚拟账号MSSQLSERVER  SQLSERVERAGENT
    2022年9月23日 8:02
  • What's sql service account on that new machine?
       这个和服务名没关系,C盘都是克隆的,启动的服务名肯定是一样的
    2022年9月23日 8:14
  • What's sql service account on that new machine?

       这个和服务名没关系,C盘都是克隆的,启动的服务名肯定是一样的
    Not necessary.
    2022年9月23日 15:23