2017-12-30 25 views
0

ここでの目的は、別のサーバーから特定の値を読み取って、後で使用するためにローカルパラメーターに戻り値を格納することです。SQL ServerでOpenrowsetを使用して特定の値を読み取る2016

メッセージ102、レベル15、状態1、行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='[email protected]+';UID='[email protected]+';Pwd='[email protected]+';Database='[email protected]+';Persist Security Info=True'',''select Last_ID FROM '[email protected] +'.dbo.Logg where Tables_sql=''Alarm'' '')'; 

print 'string =' + @sql_string; 

exec sp_executesql @sql_string, N'@last_read_alarm1 varchar(30) OUTPUT', @[email protected]_read_alarm OUTPUT; 

select @last_read_alarm 
print @last_read_alarm; 

今、私はこだわっていますが。私は、私が作ったエラーを見ることができず、いくつかの異なる目を望んでいます。

+0

[リンクされたサーバー](https://docs.microsoft.com/en-us/sql/relational-databases/linked-servers/create-linked-servers-sql-server-database-engine)を使用しないでください。 ? –

+0

はい私はリンクされたサーバーを使用できますが、私はSQLを勉強しており、私の目には構文がOKであると思われるので、私が作った構文エラーを理解していません。 –

+0

Ok。 'Alarm'の両側にさらに2つの引用符を追加します。これは '' 'Alarm' '' ''のようになります。 –

答えて

0

Andrei Odegovのおかげで大きな助けになりました。それはそれぞれの側に4 'を置くのを助けた。

正しいコードは今、私の場合には、次のようになります。

set @sql_string = N'select @last_read_alarm= (select * from openrowset (''SQLNCLI'', ''Server='[email protected]+';UID='[email protected]+';Pwd='[email protected]+';Database='[email protected]+';Persist Security Info=True'',''select Last_ID FROM '[email protected] +'.dbo.Logg where Tables_sql='''''[email protected]_str+''''' ''))'; 

だから、クエリからの答えは、今ローカル変数@last_read_alarmになってしまいます。

関連する問題