Cloud SQL 存储过程

本部分介绍 Cloud SQL 实例的存储过程。

存储过程包含可以重复使用的 SQL 代码。

如需执行存储过程,请使用 EXEC 命令并替换以下变量:

  • procedure_name 是存储过程的名称。
  • database_name 是您要在其中运行过程的数据库的名称。
  • schema_name 是您要在其中运行过程的架构的名称。
EXEC database_name.schema_name.procedure_name @param1, @param2;
如需了解详情,请参阅 EXECUTE (Transact-SQL) 参考页面。

如需创建您自己的存储过程,请参阅创建存储过程

Cloud SQL for SQL Server 存储过程

使用批量插入的存储过程

如需了解批量插入,请参阅使用批量插入导入数据

msdb.dbo.gcloudsql_bulk_insert

语法

EXEC msdb.dbo.gcloudsql_bulk_insert @database @schema @object @file ...

说明

此存储过程具有与 BULK INSERT 命令类似的参数和行为。

存储过程会将数据从存储在 Cloud Storage 存储桶中的文件导入 Cloud SQL 实例。它使用 Cloud Storage 可互操作 APIHMAC 密钥对 Cloud Storage 存储桶的访问权限进行身份验证。

此存储过程包含以下参数:

参数 类型 说明
@database SYSNAME 指定数据要导入的目标数据库的名称。
@schema SYSNAME 指定表所属架构的名称。
@object NVARCHAR 指定要在其中插入数据的表的名称。
@file NVARCHAR 指定 Cloud Storage 存储桶中的导入文件的路径。

该路径必须采用以下格式:


 s3://storage.googleapis.com/BUCKET_NAME/FILE_PATH
 

替换以下内容:

  • BUCKET_NAME:指定 Cloud Storage 存储桶名称。
  • FILE_PATH:指定存储在 Cloud Storage 存储桶中的文件的路径。
@batchsize INT 指定一个批次中的行数。
@checkconstraints BIT 指定必须检查目标表的所有限制条件。
@codepage NVARCHAR 指定文件中数据的代码页面。RAW 是默认且唯一的选项。
@datafiletype NVARCHAR 指定批量插入文件类型。
@datasource NVARCHAR 指定要从中导入数据的外部数据源的名称。
@errorfile NVARCHAR 指定用于收集存在格式错误的行的文件的路径。

该路径必须采用以下格式:


 s3://storage.googleapis.com/BUCKET_NAME/FILE_PATH
 

替换以下内容:

  • BUCKET_NAME:指定 Cloud Storage 存储桶名称。
  • FILE_PATH:指定存储在 Cloud Storage 存储桶中的文件的路径。

此外,Cloud SQL 会创建一个扩展名为 .ERROR.txt 的文件。此文件包含对错误文件中每一行的引用,并提供错误诊断。

@errorfiledatasource NVARCHAR 指定要在其中创建错误文件的外部数据源的名称。
@firstrow INT 指定要加载的第一行的数字标识符。
@firetriggers BIT 表示目标表上定义的任何插入触发器都将在批量插入操作期间执行。
@formatfiledatasource NVARCHAR 指定应从中加载格式文件的外部数据源的名称。
@keepidentity BIT 指定对身份列使用导入文件中的身份数据。值为 0(表示 false)和 1(表示 true)。
@keepnulls BIT 指定在批量导入操作期间,空列是否应保留 null 值,而不是为列插入任何默认值。值为 0(表示 false)和 1(表示 true)。
@kilobytesperbatch INT 指定每个批次的数据量(以 KB 为单位)。
@lastrow INT 指定要加载的最后一行的数字标识符。
@maxerrors INT 指定在 Cloud SQL 取消操作之前允许的错误数。
@ordercolumnsjson NVARCHAR 指定排序顺序和列(采用 JSON 格式)。例如:

[{"name": "COLUMN_NAME","order": "ORDER"},{"name": "COLUMN_NAME","order": "ORDER"}]

请替换以下内容:

  • COLUMN_NAME:列的名称。
  • ORDER:排序顺序。此参数的值可以是 asc(表示升序)或 desc(表示降序)。
@rowsperbatch INT 指定每个批次的行数。

如需详细了解如何选择批次大小,请参阅性能考虑因素

@tablock BIT 指定在批量插入操作期间获取表锁定。
@format NVARCHAR 指定文件的格式。使用 CSV 作为此参数的值。
@fieldquote NVARCHAR 指定要在 CSV 文件中用作英文引号字符的字符。

如果您未指定值,则 Cloud SQL 会使用 " 作为默认值。

@formatfile NVARCHAR 指定 Cloud Storage 中描述要导入的数据格式的文件的路径。

该路径应采用以下格式:


 s3://storage.googleapis.com/BUCKET_NAME/FILE_PATH
 

替换以下内容:

  • BUCKET_NAME:指定 Cloud Storage 存储桶名称。
  • FILE_PATH:指定存储在 Cloud Storage 存储桶中的文件的路径。
@fieldterminator NVARCHAR 指定 char 和 widechar 数据文件的字段终止符。
@rowterminator NVARCHAR 指定 char 和 widechar 数据文件的行终止符。

SQL Server Audit 功能的存储过程

如需了解如何使用 SQL Server Audit 的功能,请参阅 SQL Server 数据库审核

msdb.dbo.gcloudsql_fn_get_audit_file

语法

msdb.dbo.gcloudsql_fn_get_audit_file

说明

从 SQL Server Audit 功能创建的审核文件中检索数据。

此存储过程接受与 sys.fn_get_audit_file 函数相同的参数。如需详细了解 msdb.dbo.gcloudsql_fn_get_audit_file,请参阅该函数的文档

变更数据捕获 (CDC) 的存储过程

如需详细了解 CDC,请参阅启用变更数据捕获

msdb.dbo.gcloudsql_cdc_enable_db

语法

exec msdb.dbo.gcloudsql_cdc_enable_db databaseName

说明

为数据库启用变更数据捕获。

  • databaseName - 要对其运行此存储过程的数据库的名称。

msdb.dbo.gcloudsql_cdc_disable_db

语法

exec msdb.dbo.gcloudsql_cdc_disable_db databaseName

说明

为数据库停用 CDC。

  • databaseName - 要对其运行此存储过程的数据库的名称。

将 Cloud SQL 用作发布者的外部复制的存储过程

如需详细了解如何发布到外部订阅者或其他 Cloud SQL 实例,请参阅配置外部副本

msdb.dbo.gcloudsql_transrepl_setup_distribution

语法

    exec msdb.dbo.gcloudsql_transrepl_setup_distribution @login,@password

说明

一个用于设置分发数据库的封装容器存储过程。该封装容器会调用以下方法:sp_adddistributorsp_adddistributiondbsp_adddistpublisher

  • login - 用于连接和创建分发数据库的现有登录。
  • password - 在连接到分发者时使用的密码。

msdb.dbo.gcloudsql_transrepl_replicationdboption

语法

    exec msdb.dbo.gcloudsql_transrepl_replicationdboption @db,@value

说明

为使用 sp_replicationdboption 的发布者启用或停用数据库的发布选项。

  • db - 要设置复制选项的数据库。
  • value - 可让您指定 True 以启用发布选项,或指定 False 以停用发布选项。

msdb.dbo.gcloudsql_transrepl_addlogreader_agent

语法

    exec msdb.dbo.gcloudsql_transrepl_addlogreader_agent @db,@login,@password

说明

为使用 sp_addlogreader_agent 的数据库设置日志读取器代理。

  • db - 要发布的数据库。
  • login - 在连接到发布者时使用的登录。
  • password - 在连接时使用的密码。

msdb.dbo.gcloudsql_transrepl_addpublication

语法

    exec msdb.dbo.gcloudsql_transrepl_addpublication @db,@publication

说明

创建事务发布,并充当 sp_addpublication 的封装容器存储过程。

  • db - 正在发布的数据库。
  • publication - 创建的新发布的名称。

msdb.dbo.gcloudsql_transrepl_droppublication

语法

    exec msdb.dbo.gcloudsql_transrepl_droppublication @db,@publication

说明

删除事务发布,并充当 sp_droppublication 的封装容器存储过程。

  • db - 已删除其发布的数据库。
  • publication - 删除的发布的名称。

msdb.dbo.gcloudsql_transrepl_addpublication_snapshot

语法

    exec msdb.dbo.gcloudsql_transrepl_addpublication_snapshot  @db,@publication,@login,@password

说明

为要发布的数据库创建快照代理,充当 sp_addpublication_snapshot 的封装容器存储过程。

  • db - 已删除其发布的数据库。
  • publication - 删除的发布的名称。
  • login - 在连接到发布者时使用的登录。
  • password - 在连接时使用的密码。

msdb.dbo.gcloudsql_transrepl_addpushsubscription_agent

语法

    exec msdb.dbo.gcloudsql_transrepl_addpushsubscription_agent
      @db,@publication,@subscriber_db,@subscriber_login,
        @subscriber_password,@subscriber

说明

创建用于同步推送订阅的新计划代理作业,充当 sp_addpushsubscription_agent 的封装容器存储过程。

  • db - 已发布的数据库。
  • publication - 要为其添加推送订阅代理的发布的名称。
  • subscriber_db - 订阅者的数据库。
  • subscriber_login - 在连接到订阅者时使用的登录。
  • subscriber_password - 在连接到订阅者时使用的密码。
  • subscriber - 订阅者实例的 IP 名称。此值可以指定为 <Hostname>,<PortNumber>

msdb.dbo.gcloudsql_transrepl_addmonitoraccess

语法

    exec msdb.dbo.gcloudsql_transrepl_addmonitoraccess @login

说明

提供对分发数据库上复制相关表的复制监控和 SELECT 语句的访问权限。

  • login - 用于访问复制监控的登录。

msdb.dbo.gcloudsql_transrepl_changedistributor_property

语法

    exec msdb.dbo.gcloudsql_transrepl_changedistributor_property @property,@value

说明

此存储过程会更改 heartbeat_interval,并封装 sp_changedistributor_property。如需了解详情,请参阅 sp_changedistributor_property文档。另请参阅该文档以详细了解 heartbeat_interval 值。

  • property - 分发数据库的属性。
  • value - 为指定的属性提供的值。

msdb.dbo.gcloudsql_transrepl_dropsubscriber

语法

    exec msdb.dbo.gcloudsql_transrepl_dropsubscriber @subscriber

说明

移除订阅者,充当 sp_dropsubscriber 的封装容器存储过程。

  • subscriber - 要删除的订阅者的 IP 名称。此值可以指定为 <Hostname>,<PortNumber>

msdb.dbo.gcloudsql_transrepl_remove_distribution

语法

     exec msdb.dbo.gcloudsql_transrepl_remove_distribution

说明

移除分发设置,充当以下各项的封装容器存储过程:sp_dropdistpublishersp_dropdistributiondbsp_dropdistributor

后续步骤