Форум: "Базы";
Текущий архив: 2003.03.20;
Скачать: [xml.tar.bz2];
ВнизDelphi, SQL, таблица, индекс... Проблемы... Найти похожие ветки
← →
ki11er (2003-03-03 13:38) [0]код:
----------------------------------------------------------
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 в данном случае)?
Спасибо.
← →
ki11er (2003-03-03 16:27) [1]???
← →
Delirium (2003-03-03 16:41) [2]Чтобы не указывать dbo. требуется добавить логину роль db_owner.
Чтобы небыло проблем с индексами, надо перестать пытаться работать с MSSQL средствами BDE, а перейти на ADO.
← →
ki11er (2003-03-03 16:53) [3]>Чтобы не указывать dbo. требуется добавить логину роль db_owner.
Что значит "логину"? Сейчас я вообще пока работаю через "sa" без пароля. У него в ролях нет db owner...
>Чтобы небыло проблем с индексами, надо перестать пытаться >работать с MSSQL средствами BDE, а перейти на ADO.
Сорри за тупой вопрос, но я с ADO не работал. Можно ли через ADO работать с таблицами Paradox?
← →
Delirium (2003-03-03 17:02) [4]У sa по умолчанию две роли: public и db_owner
← →
ki11er (2003-03-03 17:32) [5]>У sa по умолчанию две роли: public и db_owner
тогда почему не работает?
← →
Delirium (2003-03-03 17:38) [6]Возможно дело именно в той базе к котой ты обращаешься, сделай так: Enterprise Manager->MyServer->Security->Logins->sa->Properties->Database Access и посмотри что-там с базами и ролями.
← →
ki11er (2003-03-03 17:49) [7]Я там и смотрю ;-)
как ты и сказал - там 2 роли public и db_owner.
может нужно другого пользователя создать?
я вот чего не понимаю, почему без индексов доступ есть, а с индексами - нет?
← →
Delirium (2003-03-03 17:59) [8]>я вот чего не понимаю, почему без индексов доступ есть, а с индексами - нет?
Идексы подключаются внезависимости от твоего желания, это задача MSSQL. Ты попросту пытаешься навязать серверу свои правила посредством технологий морально-устаревшего BDE, из-за этого все проблемы.
← →
ki11er (2003-03-03 18:05) [9]>из-за этого все проблемы.
а почему тогда они пропадают при "dbo.tablename" ?
← →
Delirium (2003-03-03 18:17) [10]> а почему тогда они пропадают при "dbo.tablename" ?
Это проблема BDE, a не MSSQL
← →
ki11er (2003-03-03 18:22) [11]>Это проблема BDE, a не MSSQL
Может быть, но я все же думаю, что простое изменение имени таблицы (больше ничего я не меняю) не приводит к изменению поведения BDE. Он же наверное выполняет те же самые действия?
← →
sniknik (2003-03-03 18:53) [12]> Он же наверное выполняет те же самые действия?
возьми да посмотри. запусти Profiler из пакета MSSQL и посмотри на результирующие запросы в том и другом случае.
> Вопрос, можно ли как-то сделать так, чтобы обращаться к таблице не указывая овнера (т.е. dbo в данном случае)?
можно SELECT * FROM Table1 ORDER BY Field1 //индексированое поле, будет использоватся, нет создастся (временный)
мое мнение. проблема в том что ты тащищ устаревшие локальные методы на технологию клиент/сервер. оставь их для локальных баз.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.03.20;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.008 c