|
VS2005: SqlCommandBuilder в C# генерит странный UPDATE - не туда, откуда сделан SELECT
|
|||
---|---|---|---|
#18+
Создал я в базе MS SQL 2005 представление (VIEW) и делаю из неё SELECT. Затем в него же хочу сделать UPDATE. Я рассчитывал, что SqlCommandBuilder будет автоматически генерировать UPDATE в мой VIEW, а он откуда-то узнал имя таблицы и создаёт команду UPDATE в таблицу! Я думал скрыть от пользователя таблицу, дать ему определённые колонки на просмотр, и права UPDATE дать на VIEW (но не на таблицу), но не тут-то было. Через трассировщик SQL-запросов (SQL Server Profiler) с удивлением наблюдаю, что SqlCommandBuilder создаёт команду UPDATE к таблице. Естественно, возникает ошибка, так как прав на UPDATE таблицы я не давал (я дал права на VIEW). См. ниже какие запросы выполняются на сервере (первый ADO.NET создал из моей команды SELECT, а второй создал SqlCommandBuilder). Видно, что SELECT из asktex.PATENTS_VIEW1, а UPDATE в таблицу asktex.PATENTS. Код: sql 1. 2. 3. 4.
Отсюда вопросы. 1. Непонятно, откуда SqlCommandBuilder узнал имя таблицы (в моей программе оно нигде не упоминается). 2. Можно ли заставить его генерить UPDATE к VIEW, а не к таблице? Очевидно, что в моём случае можно дать права пользователям на UPDATE на таблицу PATENTS и успокоиться (или отказаться от использования SqlCommandBuilder, т.е. создавать запросы вручную), но хочется понять в чём дело и можно ли заставить SqlCommandBuilder выполнять UPDATE туда же, откуда выполнен SELECT. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2014, 19:32 |
|
VS2005: SqlCommandBuilder в C# генерит странный UPDATE - не туда, откуда сделан SELECT
|
|||
---|---|---|---|
#18+
Oleg F, А почему вы решили, что View вообще двусторонний? Первый раз слышу про возврат данных в базу через View. :-) Всегда рассматривал View как таблицу только для чтения.... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2014, 19:44 |
|
|
start [/forum/topic.php?fid=20&tid=1403247]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
56ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 153ms |
0 / 0 |