Сегодня я столкнулся с проблемой совместимости, когда клиент обновился с Windows XP до Windows 7.
(12-летний код) вызывает на SQL Server хранимую процедуру с именем
ai_nextid
За исключением того, что когда он вызывает хранимую процедуру, он использует имя:
ai_nextid;1
Да, с добавлением ";1
".Очевидно, что драйвер SQL Server в Windows 95, Windows 2000, Windows XP и, возможно, Windows Vista, подойдет для этого , в частности добавленного суффикса.Но драйвер ODBC для SQL Server в Windows 7 отличается и вызывает ошибку:
Общая ошибка SQL.
[Microsoft] [Драйвер ODBC SQL] [SQL Server] Не удалось найти хранимую процедуру'ai_nextid; 1'.
[Microsoft] [Драйвер ODBC SQL] [SQL Server] Переменная индикатора обязательна, но не указана ».
С собственной ошибкой 2812 .
Это поднимает 4 вопроса:
- почему мы добавляли
;1
кконец имени хранимой процедуры?(что он делает) - почему драйвер SQL Server его игнорировал?
- почему в Windows 7 было сделано критическое изменение?
- задокументировано это изменение совместимости?
Последние два вопроса, вероятно, будут одинаковыми, так как, если они это задокументируют, они оправдают это.