Как предоставить права на создание таблиц DB2 по шагам данных в SAS? - PullRequest
0 голосов
/ 01 октября 2019

Я подключился к базе данных DB2 с помощью оператора libname и создал таблицу с помощью DATA. Шаг:

 libname db2lib   db2   user=user pw=pwd database=dbtest schema=schema1;


 data db2lib.test_table;
   var1 = "1234";
 run;

Таблица успешно создана, но никто другой не смог выполнить запрос SELECT для нее.

Я знаю, как предоставить разрешения для таблицы, используя PROC SQL execute, но есть ли способ получить привилегии GRANT, когда я подключаюсь к DB2, используя LIBNAME.

1 Ответ

2 голосов
/ 01 октября 2019

Мне неизвестны какие-либо опции DB2 CREATE TABLE, предоставляющие разрешения.

Однако, если они есть, в вашем коде SAS можно указать опцию набора данных DBCREATE_TABLE_OPTS=:

DBCREATE_TABLE_OPTS = Параметр набора данных
Указывает специфический для СУБД синтаксис, добавляемый в конец оператора CREATE TABLE.

Подробности
Этот параметр можно использовать для добавления специфических для СУБД предложений в конце оператора SQL CREATE TABLE. Механизм SAS / ACCESS передает инструкцию SQL CREATE TABLE и ее предложения СУБД. Затем СУБД выполняет инструкцию и создает таблицу СУБД. Этот параметр применяется только при создании таблицы СУБД путем указания libref, связанного с данными СУБД.

Как вы знаете, оператор GRANT можно выполнить с помощью оператора The SQL Procedure EXECUTE.

Знаете ли вы, CONNECT может использовать существующий LIBNAME?

Proc SQL;
  connect using DB2LIB;
  execute (
    GRANT … 
  ) by DB2LIB;
...