Ama*_*mam 5 sql-server-2008 sql-server filegroups
在我的一个生产数据库中,我有一个包含 3 个数据文件的文件组,这些文件位于 3 个不同的磁盘上。此文件组上有 50 多个表。
如何确定 3 个数据文件之间 50 个表中每一个的位置?我需要知道每个表的聚集索引驻留在哪个数据文件上。
例子 :
Table A : Datafile 1 : FG1
Table B : Datafile 2 : FG1
Table C : Datafile 1 : FG1
Table D : Datafile 3 : FG1
Run Code Online (Sandbox Code Playgroud)
Rem*_*anu 13
文件组中的对象将使用文件组中的所有数据文件。FG1 中的任何表都平等地驻留在 Datafile1、Datafile2 和 Datafile3 上。如果需要控制放置,则需要创建不同的文件组。要从文件组中删除文件,请使用DBCC SHRINKFILE EMPTYFILE.
小智 -2
即使您的数据分布在任意数量的数据文件中,但您仍然可以使用 INFORMATION_SCHEMA.TABLES 来获取表列表。
表格
概述 INFORMATION_SCHEMA.TABLES 视图允许您获取有关数据库中所有表和视图的信息。默认情况下,它将显示数据库中每个表和视图的此信息。
说明 可以从 SQL Server 实例中的任何数据库调用此视图,并将返回该特定数据库中数据的结果。
该视图返回的列如下:
列名称 数据类型 描述
- TABLE_CATALOG nvarchar(128) 表限定符。
- TABLE_SCHEMA nvarchar(128) 包含表的架构的名称。
- TABLE_NAME sysname 表名称。
- TABLE_TYPE varchar(10) 表的类型。可以是视图或基表。
(来源:SQL Server 2005 联机丛书)
以下是从 AdventureWorks 数据库中提取的数据示例。该数据是使用以下查询提取的:
SELECT * FROM INFORMATION_SCHEMA.TABLES
Run Code Online (Sandbox Code Playgroud)
要仅显示表列表,您可以使用以下查询:
SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'
Run Code Online (Sandbox Code Playgroud)
要仅显示仅包含视图的列表,您可以使用以下查询:
SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'VIEW'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4314 次 |
| 最近记录: |