在SQL Server 2008 R2中重建链接服务器上的索引

时间:2014-02-05 12:40:42

标签: sql sql-server sql-server-2008 tsql

我正在尝试创建一个存储过程,该过程检索我的链接服务器列表,构建其数据库列表,并使用一定级别的碎片和一定数量的页面重建任何表索引。

我遇到的一个问题是当我实际执行rebuild命令时。我的代码是:

SET @cmd = 'ALTER INDEX' + QUOTENAME(@index) + ' ON ' + QUOTENAME(@servername) + '.' + QUOTENAME(@dbname) + '.' + QUOTENAME(@schema) + '.' + QUOTENAME(@table) +   ' REBUILD;'

EXECUTE sp_sqlexec @cmd

我得到的错误是:

“找不到对象” ServerName.Databasename .dbo。 IndexName “因为它不存在或您没有权限”

我已经替换了服务器,数据库和索引名称,但错误消息中正确显示了四部分标识符。

我想知道是否可以在链接服务器上重建索引,如果可以,则需要哪些权限。其他人都试过这种事吗?

由于

1 个答案:

答案 0 :(得分:0)

编辑:

我想我已经明白了。如果其他人遇到此问题,请尝试以下操作:

    SET @cmd = '
 EXEC(''ALTER INDEX ' + QUOTENAME(@index) + ' ON ' + @dbname + '.' + QUOTENAME(@schema) + '.' + QUOTENAME(@table) +  ' REBUILD'') AT ' + QUOTENAME(@servername) + ' '

EXECUTE sp_sqlexec @cmd