SQL Server: зачем мне добавлять «; 1» в конец имени хранимой процедуры?

Сегодня я столкнулся с проблемой совместимости, когда клиент обновил Windows XP до Windows 7.

(код 12-летней давности) вызывает хранимую процедуру на сервере SQL с именем

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 было внесено критическое изменение?
  • задокументировано ли критическое изменение совместимости?

Последние два вопроса, вероятно, будут быть таким же, поскольку, если бы они это задокументировали, они бы это оправдали.

12
задан Ian Boyd 8 September 2010 в 19:41
поделиться