我必须将虚拟盒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脚本,我无法理解它是如何工作的
有什么想法吗?
答案 0 :(得分:1)
CREATE TABLE #tmp_Codes(Code nvarchar(max))
答案 1 :(得分:0)
很抱歉这是一个非常微不足道的错误:用户NT AUTHORITY \ NETWORK SERVICE将默认架构设置为其名称而不是dbo。
更改设置后,存储过程按预期工作。