s-s-rS 文本查询:变量名称在查询批处理或存储过程中必须是唯一的
Posted
技术标签:
【中文标题】s-s-rS 文本查询:变量名称在查询批处理或存储过程中必须是唯一的【英文标题】:s-s-rS Text Query: Variable names must be unique within a query batch or stored procedure 【发布时间】:2011-05-31 15:08:33 【问题描述】:我正在开发 s-s-rS 2008 报告,但我不想使用存储过程,而是想使用所有文本查询。此报告正在使用存储过程,但是当我将此报告更改为使用相同的逻辑但通过文本查询时,我收到以下错误:
本地报告处理过程中发生错误 数据集“BRSR_Totals”的查询执行失败 变量名称“@END_yEAR”已被声明。变量名称在查询批处理或存储过程中必须是唯一的。 操作被用户取消。
问题是我的一些数据集(文本查询)重复使用相同的参数,而 END_YEAR 是这些参数之一。如何使此报告正确运行?
【问题讨论】:
只是好奇,为什么要从存储的过程中取出它?它在 SP 中得到更好的管理,然后全部在报告中...... 共享您在文本查询中使用的代码以及参数名称。里面可能有一些东西可以帮助我们找到解决方案。 您的文本中是否包含“DECLARE @END_yEAR”,并且是否将其作为参数传递?这将导致“已声明”消息。 你找到答案了吗?如果是这样,你能在这里和大家分享一下你做了什么吗? 【参考方案1】:您可能要检查的一个区域是区分大小写。 s-s-rS 在考虑参数名称时区分大小写,但 T-SQL 不区分大小写。再看看你的代码,确保所有参数都使用相同的大小写。
【讨论】:
刚刚解决了这样的问题。显然,通常不区分大小写的 Windows / SQL 在 s-s-rS 和文本查询方面突然变得敏感。【参考方案2】:我刚刚使用文本查询填充数据集解决了一个类似问题。
(响应将逻辑卸载到存储过程中的建议:在这种情况下,报告是针对单个客户的自定义报告。该查询将仅在此报告中使用,并生成一些关于客户配置的假设不应该在全球范围内可用)
我在尝试执行查询时收到了同样的错误。它在 SQL Server Management Studio 中工作,在 BIDS 的查询设计器中工作,但在运行时失败。 问题原来是 BIDS 有助于将参数添加到该查询引用的数据集。切换到 Dataset Properties 的 Parameters 选项卡显示 BIDS 复制了我之前添加的参数。删除骗子解决了我的问题。
【讨论】:
【参考方案3】:我也刚刚在我的一个查询中解决了同样的问题。我正在使用文本查询并且有日期时间变量/参数。 s-s-rS 在数据集属性的参数中添加了第二组。我删除了它们,之后我的查询运行良好,并填充了我的图表。
【讨论】:
【参考方案4】:我在一份报告中遇到了类似的问题,我在开头声明了大量参数,我不希望最终用户看到这些参数。我遇到的问题是我在行首使用逗号,所以我有: 声明 @Parameter VARCHAR(4) = 'text' , @Parameter VARCHAR(4) = 'text2' 它在 SSMS 中工作得很好,但是当我在 Report Builder 3.0 中运行它时,它抛出了这个线程中显示的错误。我将其更改为删除逗号并在每行的开头重新声明 DECLARE 并且效果很好。
【讨论】:
【参考方案5】:检查您是否没有声明两次,一次是在您正在创建的 CREATE PROC 语句中,另一次是在实际代码中...我在测试对 SP 代码的更改时看到了这个问题。
【讨论】:
以上是关于s-s-rS 文本查询:变量名称在查询批处理或存储过程中必须是唯一的的主要内容,如果未能解决你的问题,请参考以下文章
在 Azure Data Studio 和 SSMS 或 s-s-rS 中执行 SQL 查询时的不同行为