【问题标题】:Microsoft SQL Server, Error 916Microsoft SQL 服务器,错误 916
【发布时间】:2014-04-17 03:18:09
【问题描述】:

我使用的是 Microsoft SQL Server 2012 Management Studio Express。我已经分离了我的一个数据库(它在我的办公室服务器中)并且.mdf.ldf 文件保存到MSSQL 文件夹(在我的本地服务器上)。当我分离数据库时,它说我的连接(希望是服务器)无法分离数据库。然后我在分离模式下选择了 drop connections 选项。

现在,当我尝试附加数据库时,它不允许我附加。当我单击添加按钮时,我没有浏览我的文件夹的选项。显示以下错误消息。

未能为此请求检索数据。(Microsoft.SqlServer.Management.Sdk.Sfc)

附加信息:

执行 Transact-SQL 语句或批处理时发生异常。(Microsoft SQL server.connectionInfo)。

服务器主体“我的用户名”在当前安全上下文下无法访问数据库“模型”。(Microsoft SQL 服务器,错误:916)。

我该怎么办?请帮我。

【问题讨论】:

  • 你是用哪个用户登录的?
  • 我试过用我的用户名和管理员用户名。但两者都给出相同的结果。
  • 一旦我使用了你创建数据库的东西,它就会给我这个错误消息。“数据库'master'中的创建数据库权限被拒绝。
  • 一旦我检查了模型的权限。它给出了以下消息。 “服务器主体“我的用户名”无法在当前安全上下文下访问数据库“模型”。”

标签: sql sql-server sql-server-2008


【解决方案1】:

要解决此问题...请按照给定的步骤操作。 (1)启动sqlserver并登录 (2) 按“F7”或单击“查看->对象资源管理器详细信息”打开对象资源管理器详细信息窗口。 (3) 您将看到列标题.. 例如“名称”、“策略健康状态”、“恢复模型”、“排序规则”等。 (4) 右键单击​​标题并取消选择“排序规则”。 (5) 现在刷新数据库文件夹。您将获得所有数据库列表。

【讨论】:

    【解决方案2】:

    这不是实际附加语句的问题,而是设置向导 UI 的问题(这是 IMO 的耻辱)。改为使用 T-SQL 附加数据库:

    create database MyDatabase 
    on 
        (filename = 'c:\Data\mydatabase_data.mdf'), 
        (filename = 'c:\Data\mydatabase_log.ldf') 
    for attach; 
    

    您最好始终使用 T-SQL 而不是 SSMS 向导。或者使用向导编写操作脚本并在查询窗口中执行。

    另外,检查模型的权限有什么问题。使用此查询查看是否有任何DENY

    use model;
    go
    
    select 
        user_name(p.grantee_principal_id),
        dp.principal_id,
        dp.type_desc as principal_type_desc,
        p.class_desc,
        object_name(p.major_id) as object_name,
        p.permission_name,
        p.state_desc as permission_state_desc
    from sys.database_permissions p
    inner join sys.database_principals dp
    on p.grantee_principal_id = dp.principal_id
    where p.state_desc = 'DENY'
    

    【讨论】:

    • 一旦我使用了你的创建数据库的东西,它就会给我这个错误消息。“数据库'master'中的创建数据库权限被拒绝。一旦我检查了模型的权限。它给出了以下消息。“服务器主体“我的用户名”无法访问当前安全上下文下的数据库“模型”。”
    • 使用系统管理员账号登录。
    • 即使使用管理员帐户,结果也一样。我观察到的是,当我尝试通过右键单击系统数据库来检查系统数据库属性时,只有“模型”数据库没有打开属性窗户。当我单击属性时,它会显示此错误消息 Error:916
    • 这真的很奇怪,系统管理员帐户根据定义不会检查任何对象的权限,任何操作。这就是你不能 deny 系统管理员的原因。
    猜你喜欢
    • 1970-01-01
    • 2011-05-29
    • 2010-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多