【问题标题】:Using Dynamic SQL to ALTER Index使用动态 SQL 更改索引
【发布时间】:2017-07-20 11:17:39
【问题描述】:

是否可以通过动态 SQL 使用 alter index 语句重建索引?如果我将保存查询的@sqlStringSpatial 变量更改为一个简单的选择语句,@i 仍然作为参数,它可以按预期工作,但不能与 ALTER INDEX 一起工作,这可能吗?

DECLARE @sqlStringSpatial AS NVARCHAR(200) = N'ALTER INDEX @i ON dbo.test1910 REBUILD WITH (ONLINE = OFF)';
declare @dSQL as nvarchar(500) = N'@i nvarchar(50)';
DECLARE @indexName AS NVARCHAR(30) = N'Index01Tester';

EXEC sp_executesql @sqlStringSpatial, @dSQL, @i = @indexName;  

【问题讨论】:

    标签: sql-server tsql dynamic-sql


    【解决方案1】:

    你不能参数化identifiers

    DECLARE @indexName AS NVARCHAR(30) = N'Index01Tester';
    
    DECLARE @sqlStringSpatial AS NVARCHAR(200) = N'ALTER INDEX '+quotename(@indexName)+' ON dbo.test1910 REBUILD WITH (ONLINE = OFF)';
    
    EXEC sp_executesql @sqlStringSpatial
    

    【讨论】:

      猜你喜欢
      • 2014-02-20
      • 2015-08-16
      • 2019-06-14
      • 1970-01-01
      • 2019-07-26
      • 2019-01-12
      • 2017-06-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多