2016-06-07 47 views
0

我正在開發一個項目,爲我們的項目團隊創建工具,以便快速啓動擁有部分或全部20+數據庫的開發和測試環境,但僅限於特定數據他們需要爲他們的項目。環境可能是開發人員計算機上的物理服務器,虛擬機或本地實例。生產數據庫都是2008 R2,但我們將移至2014年,因此我們需要支持這兩個數據庫。從2008 R2到2014的遷移過程中的兼容性級別

我正在開發一個腳本來創建一組標準的登錄和數據庫用戶,並分配了特定的角色。這些必須是特定於版本的,以說明現在已被棄用的與角色相關的2008存儲過程。每個團隊恢復的特定數據庫都會有所不同,因此該腳本使用sys.databases上的遊標並在WHILE循環中執行其工作,該WHILE循環的頂部使用USE,最後使用FETCH NEXT。

大多數數據庫的is_auto_update_statistics_async設置爲0,但包括每個人的默認數據庫在內的一些數據庫都將其設置爲1.因此,USE語句將更改分配遊標時存在的SET上下文,從而導致FETCH NEXT失敗。我第一次嘗試糾正這個問題,就是在FETCH NEXT之前發出SET AUTO_UPDATE_STATS_ASYNC ON,但是導致錯誤 - 即使在2014本地實例中('AUTO_UPDATE_STATS_ASYNC'不是可識別的SET選項)。

我有一個解決方案,但研究時,我注意到compatibility_level在原來的2008 R2數據庫和恢復到2014本地實例的數據庫中都是相同的(100)。

錯誤以及兼容性級別保持不變的事實表明數據庫在還原到2014實例時沒有真正遷移?

如果是這樣,在恢復後會增加兼容性級別嗎?

回答

0

從我在你的文章中可以看出的情況來看,它可能只是一個語法錯誤,首先是AUTO_UPDATE_STATISTICS_ASYNC而不是AUTO_UPDATE_STATS_ASYNC

其次,SET AUTO_UPDATE_STATISTICS_ASYNC是不是一個有效的SET選項(如ANSI_NULLS等),它是一個ALTER DATABASE設置,因此應使執行:

ALTER DATABASE [DatabaseName] SET AUTO_UPDATE_STATISTICS_ASYNC ON 
+0

衛生署! 我在腳本中有AUTO_UPDATE_STATISTICS_ASYNC,但應該使用ALTER。謝謝! – JeffInTampa

相關問題