我有一个带有IF-ELSE块的SQL代码。IF部分中的代码不应该到达,但是在执行SQL时仍然出现错误。在我首先测试链接服务器的代码中,当它失败时,@reval将其设置为1,并且该ELSE块应执行并避免IF需要查询链接服务器的块中的代码,但是出现此错误:
@reval
ELSE
IF
Msg -1, Level 16, State 1, Line 0 SQL Server Network Interfaces: Error Locating Server/Instance Specified [xFFFFFFFF].
我正在SSMS 2012中运行查询。为什么会发生此错误?
declare @clientCode VARCHAR(7) set @clientCode = '8001299' declare @year INT set @year = 2013 DECLARE @retVal INT -- test connectivity with linked database server BEGIN TRY EXEC @retVal = sys.sp_testlinkedserver N'ATLAS' END TRY BEGIN CATCH SET @retval = SIGN(@@ERROR) END CATCH IF @retval = 0 -- connection attempt successful BEGIN
-下列插入SQL语句导致错误
SET @contIndex = (SELECT ContIndex FROM ATLAS.Engine_sp.dbo.tblEngagement WHERE ClientCode = @clientCode) END ELSE -- could not connect BEGIN -- execute code to pull from linked server END
在执行之前,它仍然会解析并绑定所有内容。它没有绑定到这里。
您可以sp_executesql用来执行该行,并且该行仅应在sp_executesql实际调用时进行验证。
sp_executesql