我有两个大表的SQL Server 2008 Ent和OLTP数据库.如何在不中断服务的情况下将此表移动到另一个文件组?现在,在此表中,每秒插入约100-130条记录和30-50条记录.每个表有大约100M记录和六个字段(包括一个字段地理).
我通过谷歌寻找解决方案,但所有解决方案都包含"创建第二个表,从第一个表插入行,删除第一个表,bla bla bla".
我可以使用分区功能来解决这个问题吗?谢谢.
我们的数据库目前为64 Gb,我们的一个应用程序开始失败,并出现以下错误:
System.Data.SqlClient.SqlException:无法为'cnv.LoggedUnpreparedSpos'.'PK_LoggedUnpreparedSpos'数据库中的对象分配空间,'travelgateway'因为'PRIMARY'文件组已满.通过删除不需要的文件,删除文件组中的对象,向文件组添加其他文件或为文件组中的现有文件设置自动增长来创建磁盘空间.
我仔细检查了一切:在一个单一的文件组的所有文件都允许有合理的增量(100 MB的数据文件,日志文件10%)为自动增长,超过100 GB的可用空间是可用于数据库,tempdb是设置为自动增长,其驱动器上有足够的可用硬盘空间.
为了解决问题,我将第二个文件添加到文件组,错误已经消失.但我对这整个局势感到不安.
这里的问题在哪里,伙计们?
我刚刚创建了一个辅助文件组,并希望将一些表移动到它,然后将其设置为只读.
我不知道怎么做?
我只是用它ALTER blah blah TO MyFileGroup?
在SQL Server 2008中,我想将数据库中的所有非聚集索引移动到辅助文件组.最简单的方法是什么?
我是一名热心的开发人员 - 但是时不时地,客户没有一个像样的DBA来处理这些问题,所以我被要求决定....
在处理合理大小的SQL Server数据库(比Northwind或AdventureWorks更大的数据库)时,您的策略/最佳实践是什么? - 您使用多个文件组吗?如果是这样:多少?为什么?
您决定何时摆脱"一个文件组的一切"方法的标准是什么:
如果您使用多个文件组,您使用了多少个?一个用于数据,一个用于索引,一个用于日志?数据的数量(多少)?您选择的原因是什么 - 为什么要使用确切数量的文件组:-)
sql-server database-design sql-server-2005 filegroup sql-server-2008
在 SQL Server 2005 上创建新数据库时,我总是忽略此选项,因为我们可以忽略一些我们不理解的内容并保持原样。(我不是那么喜欢 DBA)
所以现在我很好奇它是关于什么的。
根据您的经验,您认为我们什么时候需要将辅助数据文件添加到我的数据库中,为什么需要它?
我正在使用SQL Server 2008.我的数据库大小近2GB.90%的是一个表(根据sp_spaceused),我需要的不是我的大部分工作.
我想知道是否有可能采用这个表,并将其备份在一个单独的文件中,允许我比这个更频繁地传输重要数据.
我的猜测是最简单的方法是创建一个新数据库,在那里创建表,将表内容复制到新数据库,删除表关系,删除表,创建指向另一个数据库的视图并使用该视图在我的应用程序中
但是,我想知道你是否有任何关于我现在可能不知道的不同策略的指示.
我想不出为什么需要在文件组中包含多个文件的任何原因。我之所以这样想,是因为我们可以从T-SQL(最终用户)级别控制文件组,但是不能从T-SQL(最终用户)级别控制文件组的单个文件。为什么仍然需要文件有任何意见或想法?
预先感谢乔治
标题很清楚,我创建了一个新的文件组"ArchiveFileGroup":
ALTER DATABASE MyDataBase
ADD FILEGROUP ArchiveFileGroup;
GO
Run Code Online (Sandbox Code Playgroud)
我想创建一个名为:arc_myTable的表,以便存储来自这个的旧数据:myTable
我使用了以下查询:
CREATE TABLE [dbo].acr_myTable(
[Id] [bigint] NOT NULL,
[label] [nvarchar](max) NOT NULL,
)on ArchiveFileGroup
Run Code Online (Sandbox Code Playgroud)
我不确定它是否是正确的方法,我不知道创建FileGroup的位置以检查它是否包含表.
我正在尝试在 SQL 中对一个大表进行分区。它的大小为 15 TB,包含数百万条记录。主要思想是通过创建新的文件组将即将到来的数据保存到不同的磁盘上,其中当前磁盘无法再扩展。
我创建了所需的文件组、文件、分区架构和分区函数,但是当我创建聚集索引时,它占用了太多空间(超过 200GB)并且仍在运行,所以我停止了它。
我的问题:有没有一种方法可以对现有的大表进行分区,而无需创建占用太多空间的聚集索引?或者有没有办法将新的数据保存到不同的磁盘?
我收到以下错误:
消息1101,级别17,状态12,行1
由于文件组"PRIMARY"中的磁盘空间不足,无法为数据库"CTL"分配新页面.通过删除文件组中的对象,向文件组添加其他文件或为文件组中的现有文件设置自动增长来创建必要的空间.
数据库的属性如下:
File Name Autogrowth
CTL By 10 percent, unrestricted growth
CTL_Indexes By 1 MB, unrestricted growth
Run Code Online (Sandbox Code Playgroud)
我在磁盘上剩余60 GB的空间.
会是什么问题?
filegroup ×11
sql-server ×9
backup ×1
database ×1
file ×1
indexing ×1
partitioning ×1
sql ×1
t-sql ×1