Как я могу просмотреть все предоставления на Базу данных SQL?

1. Я могу порекомендовать вам использовать отдельные методы для каждой операции, которую вы хотите выполнить. Таким образом, вы можете легко вернуться к любой части кода, потому что на самом деле это будет возврат к методу. 2. Вам не нужно запускать сканер много раз, а только один раз в начале. 3. Вы можете оптимизировать свой код, комбинируя общие или похожие операции в одном методе. Например, ваш код можно изменить следующим образом:

import java.util.ArrayList;
import java.util.Scanner;

public class List{

    static ArrayList<String> alist = new ArrayList<String>();
    static Scanner sc = new Scanner(System.in);
    static String choice;

public static void main(String args[]){
    mainMenue();
}

private static void mainMenue() {
     System.out.println("1. do shopping \n2. check basket \n3. go to checkout");
     choice = sc.next();
     if(choice.equals("1")) shoppingMenue();
     else if(choice.equals("2")) checkingMenue();
     else if(choice.equals("3")) checkoutMenue();
}

private static void checkoutMenue() {
    System.out.println("Are you sure you want to checkout? \n1. No \n2. Yes");
    choice = sc.next();
    if(choice.equals("1"))return;
    else System.out.println("test");
}

private static void checkingMenue() {
    System.out.println(alist);
}

private static void shoppingMenue() {
    boolean stop = false;
    while(!stop){
        System.out.println("1. Veg \n2. sweets \n3. drink \n4. toiletries \n5. 
alcohol \n6. go back");
        choice = sc.next();
        if(choice.equals("1")) printAndSave(1);
        else if(choice.equals("2")) printAndSave(2);
        else if(choice.equals("3")) printAndSave(3);
        else if(choice.equals("4")) printAndSave(4);
        else if(choice.equals("5")) {
            System.out.println("Check ID if age is under 25 \nHow old are you?");
            if(sc.nextInt() < 18) System.out.println("You are not old enough to buy 
alcohol");
            else printAndSave(5);
        }
        else if(choice.equals("6")) mainMenue();
    }
}

private static void printAndSave(int i) {
    ArrayList <String> textList = new ArrayList <>(6);
    textList.add(0, "");
    textList.add(1, "Veg has been added to your basket");
    textList.add(2, "Sweets have been added to your basket");
    textList.add(3, "Drinks have been added to your basket");
    textList.add(4, "Toiletries have been added to your basket");
    textList.add(5, "Alcohol has been added to your basket");

    System.out.println(textList.get(i));
    alist.add("veg");
    }
}
16
задан Community 23 May 2017 в 12:08
поделиться

4 ответа

Данное решение не покрывает, где разрешение дано против схемы или самой базы данных, которые действительно дают разрешения против таблиц также. Это даст Вам те ситуации, также. Можно использовать оператор Where против permission_name для ограничения, чтобы просто УДАЛИТЬ.

SELECT 
    class_desc 
  , CASE WHEN class = 0 THEN DB_NAME()
         WHEN class = 1 THEN OBJECT_NAME(major_id)
         WHEN class = 3 THEN SCHEMA_NAME(major_id) END [Securable]
  , USER_NAME(grantee_principal_id) [User]
  , permission_name
  , state_desc
FROM sys.database_permissions

кроме того, db_datawriter должен был бы быть проверен на членство, потому что это дает неявную ВСТАВКУ, ОБНОВЛЕНИЕ, и УДАЛИТЕ права, подразумевая, что Вы не будете видеть, что он разоблачает в разрешении DMVs или их производные.

20
ответ дан 30 November 2019 в 16:58
поделиться

Для наблюдения предоставлений на всем DB выберите рассматриваемый DB, откройте новое окно запроса, войдите - sp_helprotect, выполните запрос

2
ответ дан 30 November 2019 в 16:58
поделиться

Для просмотра всех предоставлений на определенной базе данных используют это:

Select * from INFORMATION_SCHEMA.TABLE_PRIVILEGES

, Чтобы просто просмотреть удаляют предоставления на определенном использовании базы данных это:

Select * from INFORMATION_SCHEMA.TABLE_PRIVILEGES WHERE PRIVILEGE_TYPE = 'DELETE'
4
ответ дан 30 November 2019 в 16:58
поделиться

Для списка всех полномочий, которыми можно управлять, можно использовать функцию fn_my_permission. Это списки запросов все полномочия на [1 112] сервер :

select * from fn_my_permissions(NULL, NULL)

необходимо войти в использование учетной записи, которая имеет роль системного администратора.

можно совершенствовать использование вызовов функции после параметров.

Для всех полномочий на [1 113] база данных :

select * from fn_my_permissions(NULL, 'database')

Для всех полномочий на схеме dbo :

select * from fn_my_permissions('dbo', 'schema')

Для всех полномочий на таблица :

select * from fn_my_permissions('dbo.test', 'object')
5
ответ дан 30 November 2019 в 16:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: