![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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]???