

 从补丁 198 开始，Amazon Redshift 将不再支持创建新的 Python UDF。现有的 Python UDF 将继续正常运行至 2026 年 6 月 30 日。有关更多信息，请参阅[博客文章](https://www.amazonaws.cn/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

# SVL\_MULTI\_STATEMENT\_VIOLATIONS
<a name="r_SVL_MULTI_STATEMENT_VIOLATIONS"></a>

使用 SVL\_MULTI\_STATEMENT\_VIOLATIONS 视图获取已在系统上运行的违反了事务数据块限制的所有 SQL 命令的完整记录。

当您在事务数据块或多语句请求内运行 Amazon Redshift 限制的以下 SQL 命令时，会发生违规情况：
+ [CREATE DATABASE](r_CREATE_DATABASE.md)
+ [DROP DATABASE](r_DROP_DATABASE.md)
+ [ALTER TABLE APPEND](r_ALTER_TABLE_APPEND.md)
+ [CREATE EXTERNAL TABLE](r_CREATE_EXTERNAL_TABLE.md)
+ DROP EXTERNAL TABLE
+ RENAME EXTERNAL TABLE
+ ALTER EXTERNAL TABLE
+ CREATE TABLESPACE。
+ DROP TABLESPACE
+ [CREATE LIBRARY](r_CREATE_LIBRARY.md)
+ [DROP LIBRARY](r_DROP_LIBRARY.md)
+ REBUILDCAT
+ INDEXCAT
+ REINDEX DATABASE
+ [VACUUM](r_VACUUM_command.md)
+ [GRANT](r_GRANT.md)
+ [COPY](r_COPY.md)

**注意**  
如果此视图中有任何条目，请更改相应的应用程序和 SQL 脚本。我们建议更改应用程序代码，以便将这些受限 SQL 命令的使用移到事务数据块之外。如果您需要进一步帮助，请联系 Amazon Support。

SVL\_MULTI\_STATEMENT\_VIOLATIONS 对所有用户可见。超级用户可以查看所有行；普通用户只能查看其自己的数据。有关更多信息，请参阅 [系统表和视图中的数据可见性](cm_chap_system-tables.md#c_visibility-of-data)。

此表中的部分或全部数据也可以在 SYS 监控视图 [SYS\_QUERY\_HISTORY](SYS_QUERY_HISTORY.md) 中找到。SYS 监控视图中的数据经过格式化处理，便于使用和理解。我们建议您使用 SYS 监控视图进行查询。

## 表列
<a name="r_SVL_MULTI_STATEMENT_VIOLATIONS-table-columns"></a>


| 列名称  | 数据类型  | 描述  | 
| --- | --- | --- | 
| userid  | integer  | 导致违规的用户的 ID。 | 
| 数据库  | character(32)  | 用户连接到的数据库的名称。 | 
| cmdname  | character(20)  | 无法在事务数据块或多语句请求内运行的命令的名称。例如，CREATE DATABASE、DROP DATABASE、ALTER TABLE APPEND、CREATE EXTERNAL TABLE、DROP EXTERNAL TABLE、RENAME EXTERNAL TABLE、ALTER EXTERNAL TABLE、CREATE LIBRARY、DROP LIBRARY、REBUILDCAT、INDEXCAT、REINDEX DATABASE、VACUUM、外部资源上的 GRANT、CLUSTER、COPY、CREATE TABLESPACE 和 DROP TABLESPACE。 | 
| xid  | bigint  | 与语句关联的事务 ID。 | 
| pid  | integer  | 语句的进程 ID。 | 
| label  | character(320)  | 用于运行查询的文件的名称或使用 SET QUERY\_GROUP 命令定义的标签。如果查询并非基于文件或未设置 QUERY\_GROUP 参数，则此字段为空。 | 
| starttime  | timestamp | 开始执行语句的确切时间，秒的小数部分以 6 位精度表示 – 例如：2009-06-12 11:29:19.131358 | 
| endtime  | timestamp | 执行完语句的确切时间，秒的小数部分以 6 位精度表示 – 例如：2009-06-12 11:29:19.193640 | 
| sequence  | integer  | 当一个语句包含 200 多个字符时，将为该语句记录额外的行。序列 0 是第一行，1 是第二行，依此类推。 | 
| type  | varchar(10)  | SQL 语句的类型：QUERY、DDL 或 UTILITY。 | 
| text  | character(200)  | SQL 文本，以 200 个字符递增。此字段可能包含反斜杠 (\\\\) 和换行符 (\\n) 等特殊字符。 | 

## 示例查询
<a name="r_SVL_MULTI_STATEMENT_VIOLATIONS-sample-query"></a>

以下查询返回多个具有违规情况的语句。

```
select * from svl_multi_statement_violations order by starttime asc;

userid | database | cmdname | xid | pid | label | starttime | endtime | sequence | type | text
==============================================================================================================================
1 | dev | CREATE DATABASE | 1034 | 5729 |label1 | ********* | ******* | 0 | DDL | create table c(b int);
1 | dev | CREATE DATABASE | 1034 | 5729 |label1 | ********* | ******* | 0 | UTILITY | create database b;
1 | dev | CREATE DATABASE | 1034 | 5729 |label1 | ********* | ******* | 0 | UTILITY | COMMIT
...
```