Вы не можете использовать переменную внутри литеральной строки.В вашем соединении вы заявляете, что хотите подключиться к серверу, который называется "@SERVERNM"
, , а не , значение @SERVERNM
.Кроме того, поскольку у вас есть DECLARE @SERVERNM VARCHAR
, что совпадает с DECLARE @SERVERNM VARCHAR(1)
.Я подозреваю, что может работать, но предполагает, что @SERVERNM
будет иметь значение, меньшее или равное 128 символам:
DECLARE @SERVERNM sysname;
SELECT @SERVERNM = CAST(CONNECTIONPROPERTY('local_net_address') AS sysname)+'\'+CAST(SERVERPROPERTY('InstanceName') AS sysname);
DECLARE @SQL nvarchar(MAX);
SET @SQL = N'SELECT *' + NCHAR(13) + NCHAR(10) +
N'FROM OPENROWSET(''SQLOLEDB'',' + NCHAR(13) + NCHAR(10) +
N' ''SERVER=' + QUOTENAME(@SERVERNM,'"') + N';Trusted_Connection=yes;'',' + NCHAR(13) + NCHAR(10) +
N' ''set fmtonly off;exec DW..P750106119 @ENT_NR_VERSAO=1'');'
EXEC sp_executesql @SQL;