このエラーが発生する理由
Procedure expects parameter '@statement' of type 'ntext/nchar/nvarchar'.
sp_executesqlを使用しようとすると?
NVARCHARにする必要があるときに、VARCHARステートメントでsp_executesqlを呼び出しているように聞こえます。
例えば@SQLはNVARCHARである必要があるため、これによりエラーが発生します。
DECLARE @SQL VARCHAR(100)
SET @SQL = 'SELECT TOP 1 * FROM sys.tables'
EXECUTE sp_executesql @SQL
そう:
DECLARE @SQL NVARCHAR(100)
SET @SQL = 'SELECT TOP 1 * FROM sys.tables'
EXECUTE sp_executesql @SQL
解決策は、タイプとSQLストリングの両方の前にNを付けて、それが2バイト文字ストリングであることを示すことです。
DECLARE @SQL NVARCHAR(100)
SET @SQL = N'SELECT TOP 1 * FROM sys.tables'
EXECUTE sp_executesql @SQL