如何限制Teradata 17中Batch用户仅通过SQL Assistant访问?
限制Teradata 17中Batch用户仅通过SQL Assistant访问
1. 确认SQL Assistant的客户端特征
先执行查询获取SQL Assistant连接时的客户端标识信息:
SELECT ClientType, AppInfo FROM DBC.SessionInfoV WHERE UserName = '你的Batch用户名';
通常SQL Assistant的ClientType为ODBC,AppInfo字段会包含SQL Assistant关键字,记录这些值用于后续触发器判断。
2. 创建登录触发器拦截非合规连接
创建登录级触发器,当指定Batch用户使用非SQL Assistant客户端登录时直接拒绝:
REPLACE TRIGGER Restrict_BatchUser_To_SQLAssistant AFTER LOGON ON DBC FOR EACH SESSION WHEN ( USER = 'Batch_User' -- 替换为目标Batch用户名 AND ( UPPER(AppInfo) NOT LIKE '%SQL ASSISTANT%' OR ClientType NOT IN ('ODBC') -- 替换为第一步查到的ClientType ) ) BEGIN SIGNAL SQLSTATE '42000' SET MESSAGE_TEXT = '该账户仅允许通过SQL Assistant访问'; END;
3. 验证触发器效果
使用BTEQ、Teradata Studio等其他客户端尝试登录该Batch用户,会触发报错无法建立连接;通过SQL Assistant登录则可正常访问。
注意事项
- 创建触发器的账户需具备
CREATE TRIGGER权限,以及访问DBC.SessionInfoV的权限。 - 若需允许管理员临时访问该账户,可在
WHEN条件中添加排除逻辑,比如AND USER != '你的管理员用户名'。 - 若SQL Assistant的客户端标识与示例不符,以第一步查询结果为准调整触发器中的判断条件。
内容的提问来源于stack exchange,提问作者jay jo
相关产品推荐
相关产品推荐

