SQLSTATE[IMSSP]: Failed to get metadata for Table-Valued Param 1
Не работает отправки табличного параметра из php в mssql. На стороне mssql создан табличный тип и процедура, которая принимает его на вход
TYPE [dbo].[TvpParam] AS TABLE(
[test] [NVARCHAR](10) NOT NULL,
[test2] [INT] NOT NULL,
[test3] [NVARCHAR](4000) NULL
Пытаюсь отправить данные на вход:
$data = [
['test', 123, '[123, 124, 125]'],
['test2', 124, '[222]'],
];
$tvpType = 'TvpParam';
$tvpInput = array($tvpType => $data);
$sql = "EXEC DB.dbo.Procedure ?";
$pdo = DB::connection('server')->getPdo();
$stmt = $pdo->prepare($sql);
$stmt->bindParam(1, $tvpInput, PDO::PARAM_LOB);
$res = $stmt->execute();
После чего получаю ошибку:
+errorInfo: array:3 [
0 => "IMSSP"
1 => -100
2 => "Failed to get metadata for Table-Valued Param 1"
]
Версия драйвера: 5.10.1
Версия php: 7.4
Я пытался использовать pdo драйвер и напрямую через sqlsrv_..., ошибка аналогична в обоих случаях. До выполнения процедуры код не доходит, ошибка где-то на уровне создания табличного типа
Источник: Stack Overflow на русском