数据库导出后出现意外的存储过程行为

时间:2015-12-15 16:37:10

标签: sql-server tsql stored-procedures sql-server-2008-r2

我必须将虚拟盒VM上托管的开发环境中的SQL Server 2008 R2部署到全新的测试服务器。两台服务器都使用集成的Windows身份验证。

部分问题是测试服务器使用SQL Server 2008(Express)。我已设法在Access数据库中导出模式创建脚本和原始数据,但这不是问题的主题:显然数据库已在目标环境中正确导入。

但是,当我启动依赖于导出数据库的网站时,我遇到了一些在开发环境中运行时未出现的错误。经过一些研究后,我发现问题是由一点存储过程引起的。

此存储过程动态创建一个表,当不再需要时使用如下语法删除该表:

create table tmp_Codes (Code nvarchar(max))

当测试环境执行此语句时,测试环境有效地创建了表,但它附加了用户名,如:

dbo.[NT AUTHORITY\NETWORK SERVICE].tmp_Codes

后续代码无法找到新创建的表,并且无法对其进行所有操作。

我会理解这个设计在某种程度上被打破了,但我从一个工作环境继承了这一堆SQL脚本,我无法理解它是如何工作的

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

CREATE TABLE #tmp_Codes(Code nvarchar(max))

答案 1 :(得分:0)

很抱歉这是一个非常微不足道的错误:用户NT AUTHORITY \ NETWORK SERVICE将默认架构设置为其名称而不是dbo。

更改设置后,存储过程按预期工作。