2010-04-30 29 views

Respuesta

162

Parece que está llamando a sp_executesql con una instrucción VARCHAR, cuando necesita ser NVARCHAR.

p. Ej. Esto le dará el error porque @SQL necesita ser NVARCHAR

DECLARE @SQL VARCHAR(100) 
SET @SQL = 'SELECT TOP 1 * FROM sys.tables' 
EXECUTE sp_executesql @SQL 

Así:

DECLARE @SQL NVARCHAR(100) 
SET @SQL = 'SELECT TOP 1 * FROM sys.tables' 
EXECUTE sp_executesql @SQL 
+0

Esta explicación fue perfecta para mí y corrigió mi problema. ¡Gracias! – natur3

+0

Gracias! ¡Ayudó mucho! – cangosta

+0

nice man .its working –

12

La solución es poner una N delante de ambos, él y escriba la cadena SQL para indicar que es una cadena de caracteres de doble byte:

DECLARE @SQL NVARCHAR(100) 
SET @SQL = N'SELECT TOP 1 * FROM sys.tables' 
EXECUTE sp_executesql @SQL 
+0

Esa no es la solución aquí, eso aún sería un error ya que lo tienes. La solución es cambiar la variable VARCHAR a NVARCHAR – AdaTheDev

+0

AdaTheDev, tienes razón, lo arreglé ahora –

Cuestiones relacionadas