首先我从其他服务器恢复数据库,现在所有的存储过程被命名为[azamsharp]。[usp_getlatestposts]。 我认为[azamsharp]是前缀,因为它是原始服务器上的用户。
现在,在我的本地机器上,这个不运行。 我不希望所有存储过程的[azamsharp]前缀。
另外,当我右键点击Sproc,我甚至不能看到属性选项。 我在Windows 7上运行SQL SERVER 2005。
更新:
奇怪的是,如果我从我的机器访问生产数据库,我可以看到属性选项。 所以,Windows 7的安全性确实有问题。
更新2:
当我运行孤儿用户存储过程时,显示两个用户“azamsharp”和“dbo1”。 我修复了“azamharp”用户,但“dbo1”没有得到修复。 当我运行以下脚本时:
exec sp_change_users_login'update_one','dbo1','dbo1'我得到以下错误:
消息15291,级别16,状态1,过程sp_change_users_login,行131终止此过程。 login名“dbo1”不存在或无效。
你可能有孤儿用户。 从计算机访问服务器时,您的域凭据可能具有作为DBadmin访问生产服务器的权限。 运行此代码来检测孤立的用户:
Use TestDB sp_change_users_login 'report'
输出列出了sysusers系统表中的条目,TestDB数据库中的条目和master数据库中的sysxlogins系统表之间不匹配的所有login名。 解决这个问题:
解决孤立的用户
Use TestDB sp_change_users_login 'update_one', 'test', 'test' SELECT sid FROM dbo.sysusers WHERE name = 'test' 0x40FF09E48FBD3354B7833706FD2C61E4 use master SELECT sid FROM dbo.sysxlogins WHERE name = 'test' 0x40FF09E48FBD3354B7833706FD2C61E4
这将重新链接服务器login“test”与TestDB数据库用户“test”。 sp_change_users_login存储过程也可以使用“auto_fix”参数执行所有孤立用户的更新,但不build议这样做,因为SQL Server尝试按名称匹配login名和用户。 大多数情况下, 但是,如果错误的login与用户关联,则用户可能具有不正确的权限。