我有一个在 SQL Server 2008 上运行的存储过程,它返回所有过程及其参数的列表:
procedure [dbo].[p_ListProcedures]
as
select
sp.name as 'Procedure',
p.name as 'Parameter',
t.name as 'Type',
p.is_output as 'Output',
dbo.GetParamDefault(p.name, object_definition(sp.object_id)) as 'Value'
from sys.procedures sp
left join sys.parameters p
on p.object_id=sp.object_id
left join sys.types t
on t.user_type_id=p.user_type_id
where sp.name like 'p_%'
order by sp.name
此过程在两个不同的数据库上运行,用于为我们生成一些 ADO.NET 代码。它在一个数据库上运行良好,但在另一个数据库上,最后一列Value
总是返回(似乎是)第一行的值。
对于此输出:
- x, x, x, x, 空
- x, x, x, x, 空
- x, x, x, x, 空
- x, x, x, x, 空
- x, x, x, x, '测试'
- x, x, x, x, '测试'
- x, x, x, x, 空
- x, x, x, x, 空
reader["Value"]
当它应该为第 5 行和第 6 行重新调整“测试”时,通过 SqlDataReader () 读取最后一列的值将始终返回 null。
我将两个数据库都复制到了本地 SQL Server Express 2012 安装中,并且该工具运行良好。所以远程服务器上的那个数据库有一些我无法弄清楚的特殊性。
关于可能导致这种情况发生的任何想法?