В совете Вадима Гончаренко приведены инструкции для устаранения ошибки, связанной с некорректной синхронизацией на Microsoft SQL Server, если вы установите регистрозависимую кодовую страницу.

Симптомы: Процесс синхронизации завершается ошибкой:

Невозможно
выполнить команду языка определения данных в '' (''). База данных SQL обнаружила ошибку.
[Microsoft][ODBC SQL Server Driver][SQL Server]Could not find stored procedure 'SP_RENAME'.
Оператор SQL EXECUTE SP_RENAME X50011X,TABLE1
Ошибки во время синхронизации базы SQL со словарем данных системы. Операция закончилась неудачно.

Сразу после этой ошибки таблицы, по которым выполнялась синхронизация, пусты. Но зато появились странные таблицы вида X50011X, X415X. Именно в этих "странных" таблицах и храняться ваши данные.

Решение проблемы: старайтесь не устанавливать Аксапту на SQL сервере с регистрозависимой основной кодовой страницей (collation). В базе данных с регистрозависимой кодовой страницей объекты считаются разными, если различаются регистром хотя бы одной буквы в имени. Таким образом, могут одновременно существовать таблицы TABLE1, table1 и Table1. Поэтому при доступе к объекту требуется указывать его точное (до регистра каждой буквы в названии) имя.

Своим таблицам, полям в них и индексам Аксапта присваивает имена в верхнем регистре (например, LEDGERTABLE.RECID). В запросах, отсылаемых на сервер, имена объектов также приведены к верхнему регистру. Проблемы начинаются тогда, когда Аксапта приводит к верхнему регистру названия системных объектов.

Например, при изменении максимальной длины EDT системе требуется изменить поля в таблицах, использующих этот или наследующие его типы данных. При этом в случае, если таблица уже содержит какие-то данные, система поступает следующим образом (допустим, мы увеличиваем максимальную длину строкового EDT Type1, используемого в таблице Table1 с 10 до 30 символов):

Создает временные таблицы с полями, соответствующими новым EDT

CREATE TABLE X50011X (TYPE1 VARCHAR(30) NOT NULL DEFAULT '' ,
                      DATAAREAID VARCHAR(3) NOT NULL DEFAULT 'dat' ,
                      RECID INT NOT NULL CHECK (RECID <> 0) )
INSERT INTO X50011X SELECT TYPE1,DATAAREAID,RECID FROM TABLE1 

Заполняет их данными из основной таблицы

INSERT INTO X50011X SELECT TYPE1,DATAAREAID,RECID FROM TABLE1

Удаляет основную таблицу

DROP TABLE TABLE1 

И переименовывает временную таблицу в основную

EXECUTE SP_RENAME X50011X,TABLE1 

В это момент возникает ошибка Could not find stored procedure 'SP_RENAME', связанная с тем, что название системной хранимой процедуры sp_rename из базы данных master используется в неверном регистре

Из этой ситуации есть несколько выходов:

Первый способ является более правильным, однако требует некоторого времени или может быть неприменим в случае, если использование регистрозависимой кодовой страницы вызвано использованием ее другими приложениями. Однако, если времени на переустановку SQL Server нет, а произвести синхронизацию нужно «уже вчера», можно прибегнуть к четвертому способу:

Таблица SQLSystemVariables в MS SQL Enterprise Manager

Нужная запись в таблице

Все. Можно работать.

Дополнительно хотелось бы отметить, что кодовую страницу, с которой установлен Microsoft SQL Server, можно узнать несколькими способами:

Все регистрозависимые кодовые страницы содержат в названии сочетание букв _CS_ (Case Sensitive).

Вадим Гончаренко, vgoncharenko@rabota-na-rezultat.ru