C # Linq to Entities - Метод определения того, доступен ли основной источник данных только для чтения - PullRequest
0 голосов
/ 20 августа 2011

Есть ли лучший подход, чем пытаться писать и просто ловить исключение?

У нас есть разные версии одной и той же базы данных, и сегодня я работаю с версией, доступной только для чтения, это нормально для 99% моих задач, но приложение иногда сохраняет свое состояние обратно в БД, и я хотел бычтобы попытаться это сделать, если базовый экземпляр SQL Server доступен для записи.

1 Ответ

1 голос
/ 20 августа 2011

Запустите запрос к серверу, проверяя, какие разрешения у вашего пользователя для этой базы данных. Для этого существует встроенная функция Transact-SQL с именем HAS_PERMS_BY_NAME (ссылка на MSDN) .

Пример запроса, чтобы проверить, есть ли у вас разрешения INSERT.

SELECT HAS_PERMS_BY_NAME('database', 'OBJECT', 'INSERT');

Также взгляните на FN_BUILTIN_PERMISSIONS (ссылка на MSDN) . На этой странице MSDN есть списки возможных значений, которые вы можете использовать в HAS_PERMS_BY_NAME.

НТН,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...