Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Можем ли да откажем изтриване от конкретни таблици?

Абсолютно!

DENY DELETE ON (YourTableNameHere) TO YourUserNameHere

Вижте прекрасните и обширни документи на MSDN Books Online за повече подробности!

Ако искате да откажете DELETE разрешение навсички таблици в база данни, можете да използвате:

DENY DELETE TO YourUserNameHere

Или ако сте структурирали вашата база данни по такъв начин, че таблиците да са групирани в схеми , тогава можете също да откажете потребител от конкретна схема.

Ако не сте групирали вашите 90 таблици в отделна схема (или две, три схеми), тогава няма няма лесен, магически начин да приложите разрешение към 90 таблици наведнъж. Това е или всички маси , конкретна схема или конкретен обект на база данни (като таблица) за DENY изявление.

Актуализация: винаги можете да използвате изгледите на системния каталог, за да генерирате тези DENY изявления за вас и след това използвайте тези, от които се нуждаете:

SELECT 
    'DENY DELETE ON ' + t.NAME + ' TO (youruser)'
FROM sys.tables t

Това ще произведе като изход (например в SQL Server Management Studio) списък с изрази за отказ на DELETE разрешение от вашия потребител. Копирайте тези редове в текстов редактор и премахнете онези редове, от които не се нуждаете - и ето ви дългия списък с DENY изявления!




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Неочаквано поведение @@rowcount в UDF в MS SQL 2019

  2. Присъединете маса към себе си

  3. съхраняване на пароли в SQL Server

  4. 🆕 SQL Server 2022 Първи поглед - Топ 5 нови функции (Бонус 5 функции)

  5. Защо колоната TEXT връща само 4096 байта?