Вы не можете использовать динамические параметры в SELECT ... WHERE [NOT] IN list
Временное решение:
Создать табличную функцию, аналогичную следующей функции:
CREATE FUNCTION dbo.ParmsToTable(@Parameters varchar(4000))
returns @result TABLE (Value varchar(100))
AS
begin
DECLARE @pTable table
(
Value varchar(100)
)
DECLARE @Value varchar(100), @Pos int
SET @Parameters = LTRIM(RTRIM(@Parameters))+ ','
SET @Pos = CHARINDEX(',', @Parameters, 1)
IF REPLACE(@Parameters, ',', '') <> ''
BEGIN
WHILE @Pos > 0
BEGIN
SET @Value = LTRIM(RTRIM(LEFT(@Parameters, @Pos - 1)))
IF @Value <> ''
BEGIN
INSERT INTO @pTable (Value) VALUES (@Value)
END
SET @Parameters = RIGHT(@Parameters, LEN(@Parameters) - @Pos)
SET @Pos = CHARINDEX(',', @Parameters, 1)
END
END
INSERT @result
SELECT value
FROM @pTable
RETURN
END
и измените свой TableAdapter следующим образом:
select * from [MyDB].[dbo].[MyView] where UNIQUE_ID NOT IN
(select value from dbo.ParmsToTable(@p) )