1

我有一个 WinForms 应用程序,它根据给定的表动态创建表,例如:

SELECT * INTO TempTable FROM MyTable WHERE 1=2

我希望使用上述语法Temp tables在特定条件下创建它们。filegroup

在文件组下创建表的语法是:

CREATE TABLE [dbo].[TempTable](

            [RECORDID] [numeric](10, 0) NOT NULL,
            --etc etc

) ON [TempFileGroup] TEXTIMAGE_ON [TempFileGroup]

是否可以使用我上面的语法在特定文件组下创建表?

4

2 回答 2

1

我希望使用上述语法在特定文件组下创建这些临时表

SQL Server 2017+你可以使用ON filegroup语法。

INTO 子句

SELECT...INTO在默认文件组中创建一个新表,并将查询的结果行插入其中。

[ INTO new_table ]
[ ON filegroup]

文件组

指定将在其中创建新表的文件组的名称。指定的文件组应该存在于数据库中,否则 SQL Server 引擎会引发错误。仅从 SQL Server 2017 开始支持此选项。

来自 MSDN 的示例:

创建一个新表作为另一个表的副本并将其加载到指定的文件组

ALTER DATABASE [AdventureWorksDW2016] ADD FILEGROUP FG2;
ALTER DATABASE [AdventureWorksDW2016]
ADD FILE
(
NAME='FG2_Data',
FILENAME = '/var/opt/mssql/data/AdventureWorksDW2016_Data1.mdf'
)
TO FILEGROUP FG2;
GO
SELECT *  INTO [dbo].[FactResellerSalesXL] ON FG2 from [dbo].[FactResellerSales]
于 2017-06-22T13:00:40.170 回答
0

BOL指出

SELECT...INTO 在默认文件组中创建一个新表

(重点补充)

因此,除非您可以找到创建的表并使用下面的参数语法对其进行更改,否则新创建的表将在默认文件组中创建。

移动到 { partition_scheme_name ( column_name [ 1, ... n] ) | 文件组 | “默认” }

适用于:SQL Server 2008 到 SQL Server 2016、SQL 数据库 V12。

指定一个位置来移动当前在聚集索引的叶级中的数据行。表被移动到新位置。此选项仅适用于创建聚集索引的约束。

于 2016-04-12T13:25:37.617 回答