Этот тестовый сценарий работает нормально для меня.... Я могу только предположить, что, возможно, ваш TaskId не является NVARCHAR(50), как вы говорите? Попробуйте использовать sp_columns, чтобы проверить...
CREATE Table #TaskData (TaskId NVARCHAR(50))
INSERT INTO #TaskData (TaskId) SELECT CONVERT(NVARCHAR(50), NEWID())
UPDATE #TaskData SET TaskId = CONVERT(NVARCHAR(50), NEWID())
DROP TABLE #TaskData
используйте тип данных varchar, nvarchar требует двойного размера
Пожалуйста, попробуйте следующее приведение:
CAST(NEWID() AS varchar(255))
Когда вы не указываете размер вашего varchar / nvarchar во время приведения или преобразования, по умолчанию он равен 30 символам. Вам нужно 36 символов, чтобы преобразовать guid в строку. Вот почему вы получаете ошибку.
Любой из них будет работать:
Select Cast(NewId() as nvarchar(36)), CONVERT(nvarchar(36), NEWID())