Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.03.20;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.012 c
1-64156
QUE
2003-03-07 14:26
2003.03.20
Как работать с файлом справки включенным в проект ?


1-64140
Barman
2003-03-06 17:07
2003.03.20
Проблема с WinXP


14-64282
Scorp
2003-03-06 08:56
2003.03.20
Добавление файла в проект


3-64052
Stenkz
2003-03-03 07:40
2003.03.20
Сравнение с nil??? Как узнать, что в поле вообще несодер. значие


4-64445
NewCipher
2003-01-26 15:19
2003.03.20
Как перевести в C?