Сегодня я столкнулся с проблемой совместимости, поскольку клиент обновлен с 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] [драйвер SQL ODBC] [SQL Server] Не удалось найти хранимую процедуру "ai_nextid; 1".
[Microsoft] [Драйвер SQL ODBC] [SQL Server] Изменена переменная индикатора, но не указана.
С собственной ошибкой 2812.
Это вызывает 4 вопроса:
- Почему мы добавляли
;1
в конец имени хранимой процедуры? (что он делает) - Почему драйвер SQL Server игнорировал его?
- Почему в Windows 7 произошли серьезные изменения?
- является документированным нарушением совместимости?
Последние два вопроса, вероятно, будут одинаковыми, поскольку, если они документируют это, они оправдывают его.