0

我有一个在 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总是返回(似乎是)第一行的值。

对于此输出:

  1. x, x, x, x, 空
  2. x, x, x, x, 空
  3. x, x, x, x, 空
  4. x, x, x, x, 空
  5. x, x, x, x, '测试'
  6. x, x, x, x, '测试'
  7. x, x, x, x, 空
  8. x, x, x, x, 空

reader["Value"]当它应该为第 5 行和第 6 行重新调整“测试”时,通过 SqlDataReader () 读取最后一列的值将始终返回 null。

我将两个数据库都复制到了本地 SQL Server Express 2012 安装中,并且该工具运行良好。所以远程服务器上的那个数据库有一些我无法弄清楚的特殊性。

关于可能导致这种情况发生的任何想法?

4

0 回答 0