这是我第一次尝试使用 SQL 服务器代理。我收到此错误:
Msg 22022, Level 16, State 1, Line 0
SQLServerAgent is not currently running so it cannot be notified of this action.
Run Code Online (Sandbox Code Playgroud)
我去服务检查它是否正在运行。我试图启动它并立即得到了这个。然后服务当然停止了。:

然后我尝试使用 SQL 服务器配置管理器:
在尝试在那里启动服务时,

当我尝试通过 SQL 服务器配置管理器更改登录帐户时:

如何启动此服务?
我有这样的选择查询:
select
SUM(Percentage) as SUM,
@cnt as Count,
(SUM(Percentage) / @cnt) as Percentage
from
#Temp2
group By
RowNumber
order by
Percentage desc
Run Code Online (Sandbox Code Playgroud)
Percentage 上面的查询列看起来像这样:

然后我在上面的查询下面有一个查询:
Update dbo.ResultsStored
set FinalSearchSeral = @searchNumber,
ModifiedAt = getDate(),
PercentMatch = t.Perc
from
(select (SUM(Percentage) / @cnt) as Perc
from #Temp2
GROUP BY RowNumber) t
where
HashedKey = HASHBYTES('MD5', @StringConcat)
select *
from dbo.ResultsStored
order by PercentMatch desc
Run Code Online (Sandbox Code Playgroud)
注意:where这里的子句不是问题,因为我打算仅使用匹配的哈希码代码更新行.
select语句的结果令我感到困惑.
上面的select语句导致Percentage列包含以下结果:

我不明白为什么用上述查询计算的百分比不同?
但是,第一个查询结果正确,第二个查询出错.
我有一个存储过程,一个接一个地调用35 Inline table valued functions(TVF).
所有这些内联TVF都返回了dbo.Match函数的计算结果表.
这里的问题是,尽管所有适当的索引都已到位,但只有当前一个内联TVF完成其结果时才会调用下一个内联TVF.我想要一种并行执行这些的方法,以便不必等待其他人完成,可以将它们转换为程序或任何其他适合性能和并行处理的信封吗?
由于dbo.Match功能是共同所有,并基于来自声明内联TVF传递的参数结果,我相信,如果有一个概念,将同步threads在sql.那么,是否有任何可用的工作来解决这些问题以减少执行时间?
我附上了一些代码,以便对我所说的内容有一个很好的了解:
if @firstname is not null
begin
SELECT @constVal = FunctionWeight
FROM dbo.FunctionWeights WHERE FunctionWeights.FunctionId = 1;
INSERT INTO #Temp2
(RowNumber,ValFromUser,ColumnName,ValFromFunc,FuncWeight,percentage)
SELECT RowNumber,@firstname,'firstname',PercentMatch,@constVal,PercentMatch * @constVal FROM dbo.MatchFirstName(@firstname, @checkbool)
END
if @Middlename is not null
BEGIN
SELECT @constVal = FunctionWeight FROM dbo.FunctionWeights
WHERE FunctionWeights.FunctionId = 2;
INSERT INTO #Temp2 (RowNumber,ValFromUser,ColumnName,ValFromFunc,FuncWeight,percentage)
SELECT RowNumber, @MiddleName,'Middlename',PercentMatch, @constVal,PercentMatch * @constVal
FROM dbo.MatchMiddleName(@MiddleName, @checkbool)
END
Run Code Online (Sandbox Code Playgroud) 我@ColumnnName在T-SQL 用户定义函数中有一个变量,它基本上包含列Name.
例如 :
declare @ColumnnName= 'firstName'
Run Code Online (Sandbox Code Playgroud)
这意味着我的表中有一个名为Column的列,firstName并且此列名存储在名为的变量中@ColumnnName.
我有这样的查询:
Insert into @Temp([Row], VarLength) select Rowid, LEN(@ColumnnName) from Patients
where
/
*rest of code
*/
Run Code Online (Sandbox Code Playgroud)
在上面的查询中,LEN(@ColumnnName)将返回9firstName的长度而不是firstName列中包含的值.
如何获取包含firstName列的值的长度,而不是字符串firstName本身的长度.
编辑:
完整查询是这样的:
Insert into @Temp([Row], Counts, VarLength) select Rowid, @counter, LEN(@ColumnnName) from Patients where
(case when @ColumnnName = 'firstname' then firstname
when @ColumnnName = 'middlename' then middlename
when @ColumnnName = 'lastname' then lastname
when @ColumnnName = 'State' then [State]
when @ColumnnName = 'City' …Run Code Online (Sandbox Code Playgroud)