Sql server 基于变量值的分区表-SQL Server 2008

Sql server 基于变量值的分区表-SQL Server 2008,sql-server,sql-server-2008,database-partitioning,Sql Server,Sql Server 2008,Database Partitioning,我是否可以在一个范围内指定,从GETDATE开始,CreatedDate列中的值早于一个月的所有行都应该放在一个分区中,其余的放在另一个分区中,以便我应该查询第二个分区中的最新数据,查询第一个分区中的存档数据?不可以。配分函数必须为。无论何时使用一组特定的输入值调用确定性函数,它们总是返回相同的结果。 不幸的是,GetDate是不确定函数。 不幸的是,您不能使用GetDate,因为GetDate是不确定函数 有关更多详细信息,请参阅 @伊斯梅尔 还有其他选择: 创建位列LastMonth和基于L

我是否可以在一个范围内指定,从GETDATE开始,CreatedDate列中的值早于一个月的所有行都应该放在一个分区中,其余的放在另一个分区中,以便我应该查询第二个分区中的最新数据,查询第一个分区中的存档数据?

不可以。配分函数必须为。无论何时使用一组特定的输入值调用确定性函数,它们总是返回相同的结果。 不幸的是,GetDate是不确定函数。 不幸的是,您不能使用GetDate,因为GetDate是不确定函数

有关更多详细信息,请参阅

@伊斯梅尔 还有其他选择:

创建位列LastMonth和基于LastMonth列的分区函数。在开始使用数据之前,您需要每天更新字段。您不需要每天都这样做,也许是更新您选择的列以标记新数据或更改分区函数的更好方法,您可以选择每周/每月/季度。 我不尝试这种方法,在更新列之后,您可能需要对表进行一些维护以获得完整的性能


另一个可能可行的想法是每月进行分区,并在新的月份开始时更改文件组。例如,如果您希望在快速磁盘f:上保存最新数据,并在s:上保存历史记录,则当martch开始将PartitionMarror移动到s:时,您将在s:上保存PartitionJan,在f:上保存PartitionMarror。不,您不能这样做。配分函数必须为。无论何时使用一组特定的输入值调用确定性函数,它们总是返回相同的结果。 不幸的是,GetDate是不确定函数。 不幸的是,您不能使用GetDate,因为GetDate是不确定函数

有关更多详细信息,请参阅

@伊斯梅尔 还有其他选择:

创建位列LastMonth和基于LastMonth列的分区函数。在开始使用数据之前,您需要每天更新字段。您不需要每天都这样做,也许是更新您选择的列以标记新数据或更改分区函数的更好方法,您可以选择每周/每月/季度。 我不尝试这种方法,在更新列之后,您可能需要对表进行一些维护以获得完整的性能


另一个可能可行的想法是每月进行分区,并在新的月份开始时更改文件组。例如,如果您希望在快速磁盘f:上保存最新数据,在s:上保存历史记录,则当martch开始将PartitionMarror移动到s:时,您将在s:上保存PartitionJan,在f:上保存PartitionMarror,并开始在f:上使用PartitionMartch。

我不认为这是不幸的-如果GetDate始终返回相同的值,很遗憾,Ismael不能按计划设置分区:非常感谢。您能给我一些关于这个场景的更好的选择吗?我不会说这是不幸的-如果GetDate总是返回相同的值,这将是毫无意义的。不幸的是,Ismael不能按计划设置分区:非常感谢。我可以听听你对这种情况下更好的替代方案的建议吗?