2012-10-09 3 views
0

이 구문 오류를 없애는 방법에 대한 아이디어가 있으십니까? 전체 절차의 마지막 paranthesis에 있습니다. 나는 그것이 무엇인지 놓치고있는 것처럼 보일 수 없다. 실행하려고하면 다른 오류가 발생하지 않습니다.SQL 구문 오류 최종 REBUILD WITH()

CREATE PROCEDURE pRebuildOrReorg 
(
    @db VARCHAR(50) = 'AdventureWorksLT2012', 
    @table VARCHAR(50) = 'SalesLT.Customer', 
    @indexName VARCHAR(50) = 'IX_Customer_EmailAddress' 
) 
AS 
DECLARE @objID INT 
DECLARE @dbID SMALLINT 
DECLARE @indexID SMALLINT 
DECLARE @avgFrag INT 
DECLARE @cmd VARCHAR(100) 
DECLARE @message VARCHAR(100) 

-- 1. find the object id of the desired table 
SET @objID = OBJECT_ID(@table) 
SET @dbID = DB_ID(@db) 
SET @IndexID = (SELECT index_id FROM sys.indexes WHERE name = @indexName) 
-- 2. View the statistics for all indexes of the table 
SELECT @avgFrag = avg_fragmentation_in_percent 
FROM sys.dm_db_index_physical_stats(DB_ID('AdventureWorksLT2012'), 
    OBJECT_ID('SalesLT.Customer'), 
@IndexID, NULL , 'DETAILED') 

if @avgFrag >= 30 
BEGIN SET @cmd = 'ALTER INDEX ' + @indexName + ' ON ' + @table + ' STATISTICS_NORECOMPUTE = OFF)' 
EXEC (@cmd) 
SET @message = 'Reorganized Index ' + @indexName 
ALTER INDEX PK_StoreContact_CustomerID_ContactID 
    ON AdventureWorks.Sales.StoreContact 
REORGANIZE 
END 

else if @avgFrag < 30 
BEGIN SET @cmd = 'ALTER INDEX ' + @indexName + ' ON ' + @table + ' STATISTICS_NORECOMPUTE = OFF)' 
EXEC (@cmd) 
SET @message = 'Rebuilt Index ' + @indexName 
ALTER INDEX IX_StoreContact_ContactID 
    ON AdventureWorks.Sales.StoreContact 
REBUILD WITH(
fillfactor = 70, 
online = ON 
) 
+0

구문 오류? – Wh1T3h4Ck5

답변

2

개인 구문 확인 및 디버깅 서비스에 오신 것을 환영합니다.

마지막 줄 다음에 을 새 줄에 추가하십시오.

향상된 IntelliSense 및 오류 검색 기능을 갖춘 SQL Server Management Studio 2012를 다운로드 했습니까?