none
sql server 2008 还原数据库出错问题 RRS feed

  • 问题

  • 在sql server 2008 (Microsoft SQL Server Enterprise Edition (64-bit)上还原数据库,该用户是该数据库的owner,server role是dbcreator和public。

    如下图,点击“add”想打开路径的时候就报如下出错。

    试过在另外一个测试环境里的sql 开发版上同样设置是可以成功的。

    也试过如果赋予该用户sysadmin的时候可以成功打开设备路径。

    请问问题出在哪里啊?

    谢谢。

    TITLE: Microsoft SQL Server Management Studio
    ------------------------------

    Failed to retrieve data for this request. (Microsoft.SqlServer.Management.Sdk.Sfc)

    For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&LinkId=20476

    ------------------------------
    ADDITIONAL INFORMATION:

    An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfo)

    ------------------------------

    The EXECUTE permission was denied on the object 'xp_availablemedia', database 'mssqlsystemresource', schema 'sys'.
    The user does not have permission to perform this action.
    The statement has been terminated. (Microsoft SQL Server, Error: 229)

    For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=10.50.1600&EvtSrc=MSSQLServer&EvtID=229&LinkId=20476

    ------------------------------
    BUTTONS:

    OK
    ------------------------------

    2017年4月6日 3:27

答案

  • Hi Samuelabc1,

     

    这个和Maintenance Plan应该是没有关系的,你可以尝试着在两台机子上分别运行 exec xp_availablemedia,不出意外的话,你的另一台机子是正常的,而这台机子会报错,你可以用这个语句给用户授权: GRANT EXEC ON xp_availablemedia TO username

    或者直接在System Databases -> master -> Programmability -> Extended Stored Procedures -> System Extended Stored Procedures -> sys.xp_availablemedia,右击,把用户添加进去。你在另一台机子上也可以看一下,应该用户已经有了相应权限了。

     

    Best Regards,

    Teige


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    • 已标记为答案 Samuelabc1 2017年4月14日 6:54
    2017年4月7日 8:38
    版主

全部回复

  • Backup file is on remote folder? Non-sysadmin users can only access local files.
    2017年4月6日 12:18
  • By the way, does restore statement work?
    2017年4月6日 12:20
  • 看错误提示是权限问题,你当前 用的帐号是什么权限?
    2017年4月7日 0:47
  • Hi Samuelabc1,

     

    看了你的描述和错误信息,这个问题应当是权限导致的。

     

    按照官方文档上的说法,只要用户有执行RESTORE的权限,就可以进行还原数据库的操作,这个权限默认赋予给了sysadmindbcreator。如果你用T-SQL直接指定好备份文件的路径进行还原,应该不会出什么问题, 但是在使用SSMS进行还原操作的时候, 需要使用xp_availablemedia来搜索可供选择的媒介文件,而执行这个语句所需要的权限被赋予给了sysadmin,所以一般用SSMS还原数据库的时候都推荐使用sysadmin

     

    Best Regards,

    Teige

     


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2017年4月7日 7:59
    版主
  • By the way, does restore statement work?

    No, the backup file is on the local server, and the error message appears once click the "Add" button.

    The restore works once provide the "sysadmin" role to this user...

    It is so strange...


    2017年4月7日 8:08
  • 看错误提示是权限问题,你当前 用的帐号是什么权限?
    public 和 dbcreator
    2017年4月7日 8:09
  • Hi Samuelabc1,

     

    看了你的描述和错误信息,这个问题应当是权限导致的。

     

    按照官方文档上的说法,只要用户有执行RESTORE的权限,就可以进行还原数据库的操作,这个权限默认赋予给了sysadmindbcreator。如果你用T-SQL直接指定好备份文件的路径进行还原,应该不会出什么问题, 但是在使用SSMS进行还原操作的时候, 需要使用xp_availablemedia来搜索可供选择的媒介文件,而执行这个语句所需要的权限被赋予给了sysadmin,所以一般用SSMS还原数据库的时候都推荐使用sysadmin

     

    Best Regards,

    Teige

     


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    现在就是不知道是哪里出了问题。。。因为在另一个同样的环境上同样的设置是可以打开“Add”这个动作的。。。

    与maintenance plan会有关系吗?



    2017年4月7日 8:11
  • Hi Samuelabc1,

     

    这个和Maintenance Plan应该是没有关系的,你可以尝试着在两台机子上分别运行 exec xp_availablemedia,不出意外的话,你的另一台机子是正常的,而这台机子会报错,你可以用这个语句给用户授权: GRANT EXEC ON xp_availablemedia TO username

    或者直接在System Databases -> master -> Programmability -> Extended Stored Procedures -> System Extended Stored Procedures -> sys.xp_availablemedia,右击,把用户添加进去。你在另一台机子上也可以看一下,应该用户已经有了相应权限了。

     

    Best Regards,

    Teige


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    • 已标记为答案 Samuelabc1 2017年4月14日 6:54
    2017年4月7日 8:38
    版主
  • Hi Samuelabc1,

     

    这个和Maintenance Plan应该是没有关系的,你可以尝试着在两台机子上分别运行 exec xp_availablemedia,不出意外的话,你的另一台机子是正常的,而这台机子会报错,你可以用这个语句给用户授权: GRANT EXEC ON xp_availablemedia TO username

    或者直接在System Databases -> master -> Programmability -> Extended Stored Procedures -> System Extended Stored Procedures -> sys.xp_availablemedia,右击,把用户添加进去。你在另一台机子上也可以看一下,应该用户已经有了相应权限了。

     

    Best Regards,

    Teige


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    Thanks Teige!

    还是不行。。。

    运行 exec xp_availablemedia,两台机子都报错...

    GRANT EXEC ON xp_availablemedia TO username之后,也还是没有权限还原,报错如下,提示没有权限。好奇怪的问题...


    2017年4月7日 10:24
  • Is restore statement working with that user? If works, more likely SSMS GUI related issue.
    2017年4月7日 12:09