此处的目的是从不同的服务器读取特定值,并将返回值存储在本地参数中以供以后使用。
以下是错误代码:
Msg 102,Level 15,State 1,Line 3
“警报”附近的语法不正确。
以下是我尝试的代码:
declare @sql_string nvarchar(400);
declare @inhostnamn nvarchar(100) = 'BLUE65\SQLEXPRESS'
declare @inuser nvarchar(50) = 'dev1'
declare @password1 nvarchar(50) = 'dev1'
declare @database nvarchar(100) = 'Test_destroy'
declare @count_posts varchar(10)
declare @tabellnamn varchar(50) = 'Alarms'
declare @last_read_alarm varchar(30)
set @tabellnamn = 'Logg'
set @sql_string = N'set @last_read_alarm1 = cast(last_read as nvarchar(30)) select * from openrowset (''SQLNCLI'', ''Server='+@inhostnamn+';UID='+@inuser+';Pwd='+@password1+';Database='+@database+';Persist Security Info=True'',''select Last_ID FROM '+@database +'.dbo.Logg where Tables_sql=''Alarm'' '')';
print 'string =' + @sql_string;
exec sp_executesql @sql_string, N'@last_read_alarm1 varchar(30) OUTPUT', @last_read_alarm1=@last_read_alarm OUTPUT;
select @last_read_alarm
print @last_read_alarm;
现在我被卡住了。我无法看到我所犯的错误,并希望看到几个不同的眼睛。
答案 0 :(得分:0)
感谢Andrei Odegov提供了很大帮助。它有助于在每一方都增加4 '
。
现在我的情况就是正确的代码:
set @sql_string = N'select @last_read_alarm= (select * from openrowset (''SQLNCLI'', ''Server='+@inhostnamn+';UID='+@inuser+';Pwd='+@password1+';Database='+@database+';Persist Security Info=True'',''select Last_ID FROM '+@database +'.dbo.Logg where Tables_sql='''''+@tmp_str+''''' ''))';
因此,查询的答案现在将以局部变量@last_read_alarm
结束。