Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как программно определить возможна ли запись в таблицу ?  [new]
pvs666
Member

Откуда:
Сообщений: 18
Подскажите пожалуйста, можно ли программно (через запрос SQL) определить доступна ли тыблица в базе для записи и по какой причине не доступна (репликация и т.д.) ?
27 май 09, 07:51    [7232007]     Ответить | Цитировать Сообщить модератору
 Re: Как программно определить возможна ли запись в таблицу ?  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Если имеются в виду права доступа на INSERT, то
SQL2005/2008
HAS_PERMS_BY_NAME (Transact-SQL)
Ж. Наличие разрешения INSERT для таблицы SalesPerson в базе данных AdventureWorks
fn_my_permissions (Transact-SQL)
fn_my_permissions (Transact-SQL)

SQL2000-2008
PERMISSIONS (Transact-SQL)
Но эту функцию обещали выбросить в следующей версии сервера
27 май 09, 08:54    [7232106]     Ответить | Цитировать Сообщить модератору
 Re: Как программно определить возможна ли запись в таблицу ?  [new]
--__Александр__--
Member

Откуда:
Сообщений: 2631
Еще можно посмротреть, какакие блокировки на таблице - sys.dm_tran_locks.
Если кто-то монопольно заблокировал таблицу, то проинсертить туда не получится.
27 май 09, 09:05    [7232129]     Ответить | Цитировать Сообщить модератору
 Re: Как программно определить возможна ли запись в таблицу ?  [new]
pvs666
Member

Откуда:
Сообщений: 18
iap,

Спасибо, будем пробовать.

Я Вас правильно понял, если мы выполним запрос вида:

SELECT * FROM fn_my_permissions ('Wes02.dbo.Cards', 'object')
where subentity_name = '' and permission_name = 'INSERT';

и в ответе будет содержаться строка вида:

Wes02.dbo.Cards ' ' INSERT

то доступ к таблице для записи открыт, а если будет пустая строка, то
запись в таблицу не возможна ?
27 май 09, 09:25    [7232201]     Ответить | Цитировать Сообщить модератору
 Re: Как программно определить возможна ли запись в таблицу ?  [new]
komrad
Member

Откуда: Msk -> Utrecht
Сообщений: 5189
pvs666,

выдержка из BOL:
BOL

Q: Do I have INSERT permission on the SalesPerson table in AdventureWorks?
A: SELECT has_perms_by_name('Sales.SalesPerson', 'OBJECT', 'INSERT')


дальше сами догадаетесь...
27 май 09, 09:47    [7232305]     Ответить | Цитировать Сообщить модератору
 Re: Как программно определить возможна ли запись в таблицу ?  [new]
pvs666
Member

Откуда:
Сообщений: 18
komrad,

Спасибо. :-)
27 май 09, 13:37    [7234317]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить