Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何更改数据库中每个表的索引_Sql_Sql Server 2008_Sql Server 2008 R2 - Fatal编程技术网

Sql 如何更改数据库中每个表的索引

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数据 类型方法和/或空间索引操作 知道怎么修吗?谢谢你

我使用SQL Server 2008 R2,我需要为数据库中的每个表重建索引

使用此脚本,我收到一个错误

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