2012-04-29 38 views
2

我拉我的頭髮這裏,我不明白是怎麼回事
我有以下幾點:Ascmd.exe過程停留在OLAP創建

  1. 的Windows Server 2008 R2 64位
  2. SQL Server 2008 R2的64位

當我運行ascmd.exe它給人的XML文件,以建立OLAP數據庫,大多數的過程正好被卡住的時間和控制檯窗口打開後,即使十分鐘沒有進一步的消息。
但是,如果我簽入SQL Server Managment,我可以看到OLAP數據庫已創建。然後在其他時間(相同的機器,相同的場景,相同的快照)成功。 什麼會導致這種奇怪的行爲?

我試着到處尋找,但沒有發現任何類似的問題
我試圖與它的最新版本(版本10.0.87.5)

更換ascmd.exe工具,我不知道什麼造成這種情況,請幫忙!

謝謝!

更新: 請有人嗎?這是非常重要

更新: 我想我就可以了進展,但無法解釋的行爲。 我已經查看了Ascmd的代碼,並且我發現由於某種原因跟蹤文件(日誌文件)沒有啓動,因此代碼進入了永久循環部分並且沒有出去(我已經添加打印的代碼,以檢查它是否是深陷其中,我已經注意到,它被卡住while (!TraceStarted) { Thread.Sleep(1); }

private static void WaitForTraceToFinish() 
    { 
     int delay = Int32.Parse(TraceTimeout, CultureInfo.CurrentCulture); 
     TraceTimeoutCount = TraceTimeoutCountReset = delay * PollingInterval; // TraceTimeoutCount is in 1/4 seconds 
     Console.WriteLine("TraceTimeoutCount is : " + TraceTimeoutCount); 
     Console.WriteLine("Did Trace Start Already ? : " + TraceStarted); 
     // Wait for trace to start to flow 
     while (!TraceStarted) { Thread.Sleep(1); } // loop every 20ms waiting for trace to start 
     // Wait BeginEndBlockCount becomes 0 or TraceTimeoutCount expires 
     while (TraceTimeoutCount > 0) 
     { // loop forever until TraceFinished 
      Console.WriteLine("TraceTimeoutCount is : " + TraceTimeoutCount); 
      Console.WriteLine("PollingInterval is : " + PollingInterval); 
      Console.WriteLine("1000/PollingInterval = " + 1000/PollingInterval); 
      if (BeginEndBlockCount == 0) return; 
      Thread.Sleep(1000/PollingInterval); // wait a polling interval 
      Console.WriteLine("TraceTimeoutCount is : " + TraceTimeoutCount); 
      TraceTimeoutCount--; 
      Console.WriteLine("TraceTimeoutCount is : " + TraceTimeoutCount); 
     } 
     Console.WriteLine("Got out from trace"); 
     // TraceTimeoutCount expired -- just exit 
    } 

有誰知道爲什麼跟蹤文件未啓動 是否與Windows服務器2008年硬安全規則?

我不能刪除跟蹤文件,因爲它要求我們 有什麼建議?謝謝!

回答

1

如果知道Windows Server 2008 + SQL Server 2008中的管理權限可能會導致這些錯誤,那麼令人沮喪 以管理員身份運行解決了我的問題,並且OLAP創建過程沒有卡住