SASGIS - SAS.Планета
View Issue Details
0002854SAS.Планета[All Projects] Багpublic13-10-2015 19:3514-10-2015 12:59
sheavy 
zed 
normalminoralways
resolvedfixed 
Windows7Professional
151010 
151111151111 
0002854: Работа с Microsoft SQL через ODBC
Не могу настроить работу с Microsoft SQL 2008 R2 через ODBC. (с Posgres SQL проблем нет)

Сначала САС-Планета ругалась что не может создать поле uName в таблице User.
Как ругалась, см. ниже

Не вопрос - создал ей таблицу User и поле uName (см. ниже):
После этого программа создала стуктуру таблиц, но возникла другая ошибка:
     EMarkSystemORMError: MarkSystemORM: ID is empty!.

Не уверен до конца, баг ли это. Может быть нужны дополнительные параметры в строке подключения (connection string).

Есть у кого-то идеи как быть? (использовать MongoDB, PosgtreSQL, MySQL пожалуйста, не предлагайте - нужно запустить на MS SQL)

Спасибо если кто напишет как быть


Ругалась на отсутсвие поля так:

Error SQLITE_ERROR (1) using 3.8.11.1 - 'TSQLRestStorageExternal.Create: TSQLUser: unable to create external missing field dbo.User.uName - SQL="ALTER TABLE dbo.User ADD uName nvarchar(max)"' extended_errcode=1.


Создавал ей таблицу User и поле uName так:

CREATE TABLE [dbo].[User](
    [uid] [int] NOT NULL,
    [uName] [nvarchar](max) NULL,
 CONSTRAINT [PK_User] PRIMARY KEY CLUSTERED
(
    [uid] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]


Использованные ODBC драйвера:
 - SQL Server
 - ODBC Driver 11 for SQL Server

ODBC connection string:
 Driver=ODBC Driver 11 for SQL Server; Server=xx.xx.xx.xx; Database=SASPlanet;

имя пользователя и пароль указывал в соответствующих полях.

Версия САС: .Nightly.150928.9102
БД, СУБД, метки
Issue History
13-10-2015 19:35sheavyNew Issue
13-10-2015 20:56zedNote Added: 0016565
14-10-2015 11:40zedNote Added: 0016566
14-10-2015 12:57zedNote Added: 0016567
14-10-2015 12:57zedStatusnew => resolved
14-10-2015 12:57zedFixed in Version => 151111
14-10-2015 12:57zedResolutionopen => fixed
14-10-2015 12:57zedAssigned To => zed
14-10-2015 12:58zedProduct Version => 151010
14-10-2015 12:58zedTarget Version => 151111
14-10-2015 12:58zedDescription Updatedbug_revision_view_page.php?rev_id=6735#r6735
14-10-2015 12:58zedAdditional Information Updatedbug_revision_view_page.php?rev_id=6737#r6737
14-10-2015 12:59zedTag Attached: БД
14-10-2015 12:59zedTag Attached: метки
14-10-2015 12:59zedTag Attached: СУБД

Notes
(0016565)
zed   
13-10-2015 20:56   
Поставлю завтра себе этот сервер и посмотрю, в чём там затык. Сильно помежет, если вы подскажете с какими настройками вы создавали БД.

А пока попробуйте вот эту версию с логами, возможно там будет что-то полезное и более информативное: https://yadi.sk/d/pd35FbGUjiVfP

И ещё, пробуйте соединяться не через connection string, а через odbc имя (или как это правильно называется), т.е. все настройки вбивайте в винде.

Вероятная проблема с полем uName, это то, что это текст в UTF-8 кодировке и во что ORM хочет замапить это поле в случае с MS SQL мне не известно, надо дебажить.
(0016566)
zed   
14-10-2015 11:40   
Мда, проблема в конфликте имён - User зарезервированное слово в MS SQL и в обоих случаях (и при создании таблицы и при обращении к ней) сервер ругается одинаково:

> Неправильный синтаксис около ключевого слова \"User\". (156)
> Не удалось выполнить подготовку инструкций. (8180)

Надо переименовывать таблицу...
(0016567)
zed   
14-10-2015 12:57   
Пофиксил, в следующей ночнушке должно завестись и на MS SQL.