Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 还原备份后,sql server中未发生架构特定的对象访问_Sql Server_Sql Server 2008_Sql Server 2008 R2 - Fatal编程技术网

Sql server 还原备份后,sql server中未发生架构特定的对象访问

Sql server 还原备份后,sql server中未发生架构特定的对象访问,sql-server,sql-server-2008,sql-server-2008-r2,Sql Server,Sql Server 2008,Sql Server 2008 R2,我有一个应用程序正在访问sql对象存储的过程/表等,这些过程/表是在模式“a”下定义的,例如a.my_stored_proc 当我将此应用程序与测试服务器数据库连接时,它可以正常工作。但是,现在,由于客户机要求将db复制到本地sql server开发版本中,以便进一步增强 我从测试服务器备份了数据库,并将其恢复到dev系统。现在,当我更改应用程序的连接字符串时,应用程序抛出一个错误,表示无法定位“A.my_storage_proc” 我决定针对测试服务器手动测试所有模式、用户角色和权限,我发现这

我有一个应用程序正在访问sql对象存储的过程/表等,这些过程/表是在模式“a”下定义的,例如a.my_stored_proc

当我将此应用程序与测试服务器数据库连接时,它可以正常工作。但是,现在,由于客户机要求将db复制到本地sql server开发版本中,以便进一步增强

我从测试服务器备份了数据库,并将其恢复到dev系统。现在,当我更改应用程序的连接字符串时,应用程序抛出一个错误,表示无法定位“A.my_storage_proc”

我决定针对测试服务器手动测试所有模式、用户角色和权限,我发现这些都是相同的

出于测试目的,我用“dbo”模式重命名了存储过程,应用程序开始工作


有人能帮我解决sql server 2008 r2的模式问题吗?

在测试服务器上,应用程序使用的用户帐户可能有一个默认模式,但是调用过程时没有提到模式名称:

exec my_stored_proc;
在dev服务器上,您的用户帐户可能将dbo作为其默认模式,或者它可能是还原数据库的所有者,在这种特定情况下,这将导致相同的行为


请咨询SQL Profiler跟踪,以确定过程调用的确切外观。

大多数错误是因为开发人员使用SELECT*,EXEC名称和依赖于许多隐式机制。访问数据库的用户在测试服务器和本地开发人员pc上都有其默认模式。我使用以下查询为ALTER user DbUser分配了默认模式=A;在dev pc上,该用户是否碰巧也是db_owner或server sysadmin角色的成员?是@RogerWolf,它也在测试服务器中。@IsaiyavanBabuKaran,在这种情况下,默认模式将不起作用-sysadmin成员始终使用dbo作为默认模式,而不管发生什么。例如,在这里: