Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Delphi, SQL, таблица, индекс... Проблемы... [D4, MSSQL]


ki11er ©   (2003-03-03 13:38:00) 

код:
----------------------------------------------------------
Table := TTable.Create (nil); Table.DatabaseName := "MyDatabaseName"; Table.TableName := "MyTableName"; Table.IndexName := "MyIndexName"; Table.Open; bRes := Table.FindKey([2,22293]);
----------------------------------------------------------


База MSSQL, ODBC источник, Alias в BDE.
При открытии таблицы вываливается с сообщением "у таблицы нет индексов". Если индекс не включать, таблица открывается нормально и с ней можно работать.
С индексом работает (нормально открывается), если Table.TableName := "MyTableName";
заменить на
Table.TableName := "dbo.MyTableName";

Вопрос, можно ли как-то сделать так, чтобы обращаться к таблице не указывая овнера (т.е. dbo в данном случае)?

Спасибо.


sniknik   (2003-03-03 18:53:00) [1]

> Он же наверное выполняет те же самые действия?
возьми да посмотри. запусти Profiler из пакета MSSQL и посмотри на результирующие запросы в том и другом случае.

> Вопрос, можно ли как-то сделать так, чтобы обращаться к таблице не указывая овнера (т.е. dbo в данном случае)?
можно SELECT * FROM Table1 ORDER BY Field1 //индексированое поле, будет использоватся, нет создастся (временный)

мое мнение. проблема в том что ты тащищ устаревшие локальные методы на технологию клиент/сервер. оставь их для локальных баз.


ki11er   (2003-03-03 18:22:00) [2]

>Это проблема BDE, a не MSSQL
Может быть, но я все же думаю, что простое изменение имени таблицы (больше ничего я не меняю) не приводит к изменению поведения BDE. Он же наверное выполняет те же самые действия?


Delirium   (2003-03-03 18:17:00) [3]

> а почему тогда они пропадают при "dbo.tablename" ?

Это проблема BDE, a не MSSQL


ki11er   (2003-03-03 18:05:00) [4]

>из-за этого все проблемы.
а почему тогда они пропадают при "dbo.tablename" ?


Delirium   (2003-03-03 17:59:00) [5]

>я вот чего не понимаю, почему без индексов доступ есть, а с индексами - нет?

Идексы подключаются внезависимости от твоего желания, это задача MSSQL. Ты попросту пытаешься навязать серверу свои правила посредством технологий морально-устаревшего BDE, из-за этого все проблемы.


ki11er   (2003-03-03 17:49:00) [6]

Я там и смотрю ;-)
как ты и сказал - там 2 роли public и db_owner.
может нужно другого пользователя создать?
я вот чего не понимаю, почему без индексов доступ есть, а с индексами - нет?


Delirium   (2003-03-03 17:38:00) [7]

Возможно дело именно в той базе к котой ты обращаешься, сделай так: Enterprise Manager->MyServer->Security->Logins->sa->Properties->Database Access и посмотри что-там с базами и ролями.


ki11er   (2003-03-03 17:32:00) [8]

>У sa по умолчанию две роли: public и db_owner
тогда почему не работает?


Delirium   (2003-03-03 17:02:00) [9]

У sa по умолчанию две роли: public и db_owner


ki11er   (2003-03-03 16:53:00) [10]

>Чтобы не указывать dbo. требуется добавить логину роль db_owner.
Что значит "логину"? Сейчас я вообще пока работаю через "sa" без пароля. У него в ролях нет db owner...

>Чтобы небыло проблем с индексами, надо перестать пытаться >работать с MSSQL средствами BDE, а перейти на ADO.
Сорри за тупой вопрос, но я с ADO не работал. Можно ли через ADO работать с таблицами Paradox?


Delirium   (2003-03-03 16:41:00) [11]

Чтобы не указывать dbo. требуется добавить логину роль db_owner.

Чтобы небыло проблем с индексами, надо перестать пытаться работать с MSSQL средствами BDE, а перейти на ADO.


ki11er   (2003-03-03 16:27:00) [12]

???


Наверх

Титульная страница Поиск, карта сайта Написать письмо