我正在构建一些脚本并发现一个烦恼是我无法提供表达式作为 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 的限制还是有解决方法?
昨天我们有一个查询,旨在翻阅结果,但在结果的第一页上,查询只返回 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)