今天,我使用备份/恢复方法将数据库从SQL Server 2005迁移到SQL Server 2008 R2,这种方法很好,并且不会产生任何错误。
我可以使用pipe理员用户下的NT身份validation通过SQL Server Management Studiologin到SQL Server 2008,并查看表,运行select语句等,pipe理员用户是我迁移的数据库的所有者。
问题是,当我login到SQL Server使用不同的用户名下的NT身份validation我不能运行select语句或查看表,视图,存储过程或任何东西。
例如,每当我运行一个select语句,我得到的错误
SELECT权限在对象“AAPUsers”,数据库“PINT”,模式“dbo”上被拒绝。
当我尝试展开表树时,出现错误
SELECT权限在对象'extended_properties',数据库'mssqlsystemresource',模式'sys'上被拒绝。 (Microsoft SQL Server,错误:229)
我试图给我的其他用户完全许可我所能find的一切,但问题仍在继续。
我发现,如果我创build一个SQL Server用户并用该用户login,并给他们db_datareader和db_datawriter访问数据库,那么它一切正常,只是当我使用NT身份validation。
我曾尝试给域用户(如域/用户)上述权限,但它没有解决问题。 如果我让我的域用户成为数据库的所有者,那么一切正常,正如人们所期望的那样。
我还创build了一个testing数据库SQL Server 2005与1表,并将其迁移到2008年使用相同的备份/恢复方法,一旦我已经给我的域用户db_datareader和db_datawriter访问它工作正常,所以它与某个特定的数据库,但我可以弄明白。
问题似乎是NTauthentication的用户,我敢肯定,这只是我需要做的简单事情。
我已经尝试了所有我能想到的,没有select的东西。
validationlogin(服务器级别)/用户(数据库级别)之间的映射没有问题。 像这样迁移的一个常见错误是pipe理员移动数据库,但预测用户映射到的login名不存在于新的实例上。