我正在尝试创建一个存储过程,该过程检索我的链接服务器列表,构建其数据库列表,并使用一定级别的碎片和一定数量的页面重建任何表索引。
我遇到的一个问题是当我实际执行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 “因为它不存在或您没有权限”
我已经替换了服务器,数据库和索引名称,但错误消息中正确显示了四部分标识符。
我想知道是否可以在链接服务器上重建索引,如果可以,则需要哪些权限。其他人都试过这种事吗?
由于
答案 0 :(得分:0)
编辑:
我想我已经明白了。如果其他人遇到此问题,请尝试以下操作:
SET @cmd = '
EXEC(''ALTER INDEX ' + QUOTENAME(@index) + ' ON ' + @dbname + '.' + QUOTENAME(@schema) + '.' + QUOTENAME(@table) + ' REBUILD'') AT ' + QUOTENAME(@servername) + ' '
EXECUTE sp_sqlexec @cmd