Sql 如何更改数据库中每个表的索引
我使用SQL Server 2008 R2,我需要为数据库中的每个表重建索引 使用此脚本,我收到一个错误Sql 如何更改数据库中每个表的索引,sql,sql-server-2008,sql-server-2008-r2,Sql,Sql Server 2008,Sql Server 2008 R2,我使用SQL Server 2008 R2,我需要为数据库中的每个表重建索引 使用此脚本,我收到一个错误 USE myDb GO EXEC sp_MSForEachTable 'ALTER INDEX ALL ON ? REBUILD' 错误: ALTER INDEX失败,因为以下集合选项的设置不正确:“QUOTED_IDENTIFIER”。验证设置选项是否正确 适用于索引视图和/或计算列上的索引 和/或筛选索引和/或查询通知和/或XML数据 类型方法和/或空间索引操作 知道怎么修吗?谢谢你
USE myDb
GO
EXEC sp_MSForEachTable 'ALTER INDEX ALL ON ? REBUILD'
错误:
ALTER INDEX失败,因为以下集合选项的设置不正确:“QUOTED_IDENTIFIER”。验证设置选项是否正确
适用于索引视图和/或计算列上的索引
和/或筛选索引和/或查询通知和/或XML数据
类型方法和/或空间索引操作
知道怎么修吗?谢谢你,SQL傻瓜(Michelle Ufford)有一个很棒的脚本可以为你做这件事——所有的脚本都完成了,并且经过了很多用户的测试
这是一项伟大的工作-它允许您定义您需要的碎片级别
- 无所事事
- 重新组织索引
- 重建索引
不要重新发明轮子-这是我决定用来提问的简单方法。代码来源:
查看此链接:这应该对您有用。谢谢Shark,但我想了解我的命令中有什么问题。我会考虑你的资源谢谢!谢谢马克的帮助resource@marc_s你介意把实际答案包括在内吗?我无法访问链接的网站,不幸的是,这个答案几乎一文不值stands@Breeze:抱歉,脚本超过1000行-太长,无法在此处发布。您可以尝试通过这个直接下载URL获取它:谢谢链接。尽管这是一个古老的脚本,但对于我来说,它仍然非常有效!
-- Rebuild eve Index for every Table in the Database.
-- Resource: http://blog.sqlauthority.com/2009/01/30/sql-server-2008-2005-rebuild-every-index-of-all-tables-of-database-rebuild-index-with-fillfactor/
USE [YourDbName]
GO
-- Show Fragmentation sample on YourTable Index.
select avg_fragmentation_in_percent, avg_fragment_size_in_pages, fragment_count, avg_page_space_used_in_percent
from sys.dm_db_index_physical_stats (DB_ID(), object_id('[dbo].[YourTableName]'), NULL, NULL, 'DETAILED')
-- Cursor going over each table and rebuilding every index of database.
DECLARE @TableName VARCHAR(255)
DECLARE @sql NVARCHAR(500)
DECLARE @fillfactor INT
SET @fillfactor = 80
DECLARE TableCursor CURSOR FOR
SELECT OBJECT_SCHEMA_NAME([object_id])+'.'+name AS TableName
FROM sys.tables
OPEN TableCursor
FETCH NEXT FROM TableCursor INTO @TableName
WHILE @@FETCH_STATUS = 0
BEGIN
SET @sql = 'ALTER INDEX ALL ON ' + @TableName + ' REBUILD WITH (FILLFACTOR = ' + CONVERT(VARCHAR(3),@fillfactor) + ')'
EXEC (@sql)
FETCH NEXT FROM TableCursor INTO @TableName
END
CLOSE TableCursor
DEALLOCATE TableCursor
GO