管理 tempdb 数据库

本页介绍了 Cloud SQL 中临时数据库的管理方法。

tempdb 数据库是一种保存多个对象的系统数据库,其中包括临时表、存储过程等。在您的实例中,您可以对此数据库执行常见操作。

每次实例重启时,系统都会重新创建 Tempdb 数据库。为了防止用户权限丢失,Cloud SQL 会在实例重启后向 sqlserver 用户提供权限。

概览

sqlserver 用户具有管理 tempdb 数据库选项的 ALTER 权限。

如需详细了解如何管理此资源,请参阅 tempdb 数据库页面。

管理 tempdb 文件

连接到实例后,sqlserver 用户可以管理 tempdb 文件。

文件数

用户对 tempdb 数据库拥有 ALTER 权限,因此可以控制文件数量等设置。以下是一些示例操作:

  • ALTER DATABASE [tempdb] ADD FILE
  • ALTER DATABASE [tempdb] REMOVE

文件大小

以下部分介绍了用于控制 tempdb 数据库中文件大小的方法。

如需详细了解这些方法,请参阅缩减 tempdb 数据库

更改 tempdb 中的文件大小

如需控制 tempdb 数据库中文件的大小,请使用 ALTER DATABASE 语句。如需了解详情,请参阅 ALTER DATABASE (Transact-SQL) 文件和文件组选项

缩减单个文件的大小

msdb.dbo.gcloudsql_tempdb_shrinkfile 是一个存储过程,可用于缩减 tempdb 数据库中的单个文件。

此存储过程提供与 DBCC SHRINKFILE 命令相同的所有优势。

以下是从 Cloud SQL Studio 执行的 msdb.dbo.gcloudsql_tempdb_shrinkfile 存储过程及其参数的使用示例:

  1. 默认选项

    msdb.dbo.gcloudsql_tempdb_shrinkfile @filename = 'FILENAME'

    其中:

    • FILENAME:要缩减的文件的名称。例如 tempdev

    此命令会执行以下 SQL Server 命令:

    • USE tempdb
    • DBCC SHRINKFILE (@filename)
  2. EMPTYFILE

    msdb.dbo.gcloudsql_tempdb_shrinkfile @filename = 'FILENAME', @empty_file=EMPTY_FILE_INT

    其中:

    • EMPTY_FILE_INT:一个整数值,介于 0 和 1 之间。如果为 1,则 EMPTYFILE 会作为选项传递。此选项的优先级高于其他参数。

    此命令会执行以下 SQL Server 命令:

    • USE tempdb
    • DBCC SHRINKFILE (@filename, EMPTYFILE)
  3. 目标大小

    msdb.dbo.gcloudsql_tempdb_shrinkfile @filename = 'FILENAME', @target_size=TARGET_SIZE_INT

    其中:

    • TARGET_SIZE_INT:一个整数,表示文件的目标大小(以兆字节为单位)。将任何大于或等于零的值传递给 DBCC SHRINKFILE 命令。例如 10

    此命令会执行以下 SQL Server 命令。整数 10 已作为示例包含在内:

    • USE tempdb
    • DBCC SHRINKFILE (@filename, 10)
  4. 仅限目标大小和截断

    msdb.dbo.gcloudsql_tempdb_shrinkfile @filename = 'FILENAME', @target_size=10, @truncateonly=TRUNCATE_ONLY_INT

    其中:

    • TRUNCATE_ONLY_INT:接受整数值 0 或 1。 如果设为 1,则 TRUNCATEONLY 会作为选项传递。如果传递了 TRUNCATEONLY,系统会忽略目标大小。此选项的优先级高于 NOTRUNCATE

    此命令会执行以下 SQL Server 命令:

    • USE tempdb
    • DBCC SHRINKFILE (@filename, 10, TRUNCATEONLY)
  5. 目标大小和无截断选项

    msdb.dbo.gcloudsql_tempdb_shrinkfile @filename = 'FILENAME', @target_size=10, @no_truncate=NO_TRUNCATE_INT

    其中:

    • NO_TRUNCATE_INT:接受整数值 0 或 1。 如果设为 1,则 NOTRUNCATE 会作为选项传递。

    此命令会执行以下 SQL Server 命令:

    • USE tempdb
    • DBCC SHRINKFILE (@filename, 10, NOTRUNCATE)

后续步骤