使用动态 SQL 更改索引
Using Dynamic SQL to ALTER Index
是否可以通过 Dynamic SQL 使用 alter index 语句重建索引?如果我将保存查询的 @sqlStringSpatial 变量更改为一个简单的 select 语句,@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;
你不能参数化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
是否可以通过 Dynamic SQL 使用 alter index 语句重建索引?如果我将保存查询的 @sqlStringSpatial 变量更改为一个简单的 select 语句,@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;
你不能参数化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