txt password into from ejemplo sql sql-server sql-server-2008 openrowset

into - openrowset sql server user password



Usar una variable en OPENROWSET Query (5)

Tengo problemas con esta consulta:

SELECT * FROM OPENROWSET( ''SQLNCLI'', ''DRIVER={SQL Server};'', ''EXEC dbo.sProc1 @ID = '' + @id )

Da un error:

Sintaxis incorrecta cerca de ''+''.

¿Alguien sabe por qué me sale este error?


OPENROWSET requiere literales de cadena, no expresiones. Se está quejando sobre el signo más, porque no espera nada más que un literal de cadena y seguiste el literal de la cadena con un operador.

Ver http://msdn.microsoft.com/en-us/library/ms190312.aspx que dice:

''consulta''

Es una constante de cadena enviada y ejecutada por el proveedor ...


Por lo que vale ... La razón por la que usamos openrowset en lugar de una consulta de servidor enlazado directo es que el procesamiento para una consulta de servidor enlazado ocurre en el servidor local. (Lento y a menudo recupera la mayor parte de la mesa)

Sí, podemos hacer la concatenación de cuerdas como se indicó anteriormente.

Una opción diferente donde tiene facilidad de sintaxis y la potencia de los parámetros.

Cree un proceso almacenado en el cuadro remoto, ese proceso tiene todos los parámetros que necesita. Llame al proceso almacenado desde una consulta de servidor enlazado estándar (mismo rendimiento o mejor que el alma anterior y significativamente más fácil de codificar).

por ejemplo, linkedservername.database.dbo.myproc 123, ''abc'', ''someparam'', getdate ()

Solo una opción ...


Según lo sugerido por Scott, no puede usar expresiones en OPENROWSET Intente crear un sql dinámico para pasar los parámetros

Declare @ID int Declare @sql nvarchar(max) Set @ID=1 Set @sql=''SELECT * FROM OPENROWSET( ''''SQLNCLI'''', ''''DRIVER={SQL Server};'''', ''''EXEC dbo.usp_SO @ID ='' + convert(varchar(10),@ID) + '''''')'' -- Print @sql Exec(@sql)


Si necesita parámetros, también puede usar sp_executesql :

BEGIN DECLARE @p_path varchar(200)=''D:/Sample/test.xml'', @v_xmlfile xml, @v_sql nvarchar(1000) SET @v_sql=N''select @v_xmlfile= CONVERT(XML, BulkColumn) FROM OPENROWSET(BULK ''''''+@p_path+'''''', SINGLE_BLOB) AS x;'' EXEC sp_executesql @v_sql,N''@v_xmlfile xml output'',@v_xmlfile output; SELECT @v_xmlfile END


Declare @Route VARCHAR(200) Declare @sql nvarchar(max) Set @Route=''C:/OCRevisiones.xlsx;'' Set @sql=''SELECT * INTO FFFF FROM OPENROWSET( ''''Microsoft.ACE.OLEDB.12.0'''', ''''Excel 12.0;HDR=YES;Database='' + @Route + '''''', ''''SELECT * FROM [Sheet1$]'''')'' Print @sql --Exec(@sql)