小编Dan*_*rts的帖子

如何使用表达式作为 EXEC 的参数?

我正在构建一些脚本并发现一个烦恼是我无法提供表达式作为 EXEC 的参数。

这是我遇到的一个例子。我想使用包含数据库名称的一致格式设置各种项目。传递参数时我不能简单地连接字符串

EXEC msdb.dbo.sp_help_schedule
    @schedule_name = 'FullBackup_'+@DatabaseName,
    ...
Run Code Online (Sandbox Code Playgroud)

相反,我必须为最终字符串声明一个变量并传递它......

DECLARE @ScheduleName varchar(100)
SET @ScheduleName = 'FullBackup_'+@DatabaseName
EXEC msdb.dbo.sp_help_schedule
    @schedule_name = @ScheduleName,
    ...
Run Code Online (Sandbox Code Playgroud)

我在必要时动态建立了一个命令字符串,这可以实现这一点,但不想每次都这样做。这是 t-sql 的限制还是有解决方法?

sql-server t-sql

3
推荐指数
1
解决办法
156
查看次数

执行计划的查询结果不正确,不确定问题的确切原因

昨天我们有一个查询,旨在翻阅结果,但在结果的第一页上,查询只返回 4 条记录,而不是预期的 25 条。以任何方式更改查询都会导致 25 条记录,这对我来说意味着这是一次执行计划问题。我不熟悉在生产中查看执行计划的方法,并且在 sql studio 中运行查询没有导致相同的问题,可能是由于细微的差异。

我阅读了一些建议,认为这种事情可能是由损坏的索引引起的。我在数据库上运行了 checkdb 并没有发现错误。最后我清除了执行计划,一切都很好。

如果它不是某种类型的损坏问题,而只是非常具体的执行计划的问题,那么这是否意味着执行计划中存在错误并且我们在 SQL Server 中遇到了错误?我们在 SQL Server 2012 RTM 上没有更新,所以我查看了累积更新和服务包中所有修复的文档,但没有一个问题似乎与我们自己的相关。

关于可能导致这种情况的任何其他想法或想法?

(@P1 varchar(8000),@P2 bit,@P3 varchar(8000),@P4 bit,@P5 varchar(8000))

SELECT e.*
FROM (

    SELECT 

        TOP 25
        ROW_NUMBER() OVER (
            ORDER BY AddedDate DESC
        ) AS Row,

        ID
        , Prefix
        , FirstName
        , LastName
        , Company
        , Address
        , City
        , State
        , Zip
        , Country
        , WorkPhone
        , HomePhone
        , MobilePhone
        , Email
        , MailingLists
        , AddedDate
        , AwaitingOptin
        , …
Run Code Online (Sandbox Code Playgroud)

sql-server sql-server-2012

1
推荐指数
1
解决办法
951
查看次数

标签 统计

sql-server ×2

sql-server-2012 ×1

t-sql ×1