使用 SQL Server 機器學習服務,授與資料庫使用者執行 Python 及 R 指令碼的權限

適用於:SQL Server 2016 (13.x) 和更新版本 Azure SQL 受控執行個體

了解如何對資料庫使用者授與在 SQL Server 機器學習服務中執行外部 Python 及 R 指令碼的權限,並將讀取、寫入或資料定義語言 (DDL) 權限授與資料庫。

如需詳細資訊,請在擴充性架構的安全性概觀中參閱<權限>區段。

執行指令碼的權限

針對使用 SQL Server 機器學習服務執行 R 或 Python 指令碼的每位使用者,以及非系統管理員的使用者,您都必須授與權限,使其可在使用該語言的每個資料庫中執行外部指令碼。

若要授與資料庫使用者執行外部指令碼的權限,請執行下列指令碼:

USE <database_name>
GO
GRANT EXECUTE ANY EXTERNAL SCRIPT TO [UserName]

注意

權限並非限定於支援的指令碼語言。 換句話說,R 指令碼與 Python 指令碼並沒有不同的權限層級。

授與資料庫權限

當資料庫使用者執行指令碼時,資料庫使用者可能需要讀取其他資料庫的資料。 資料庫使用者也可能需要建立新的資料表來儲存結果,並將資料寫入資料表。

請確定執行 R 或 Python 指令碼的所有資料庫使用者帳戶或 SQL 登入,具有特定資料庫的適當權限:

  • db_datareader 可讀取資料。
  • db_datawriter 可將物件儲存至資料庫。
  • db_ddladmin 可建立包含定型及序列化資料的預存程序或資料表等物件。

例如,下列 Transact-SQL 陳述式提供 SQL 登入 MySQLLoginML_Samples 資料庫中執行 T-SQL 查詢的權限。 SQL 登入必須存在於伺服器的安全性內容中,才能執行此陳述式。 如需詳細資訊,請參閱 sp_addrolemember (Transact-SQL)

USE ML_Samples
GO
EXEC sp_addrolemember 'db_datareader', 'MySQLLogin'

後續步驟

如需每個角色中所包含的權限詳細資訊,請參閱資料庫層級角色