1. CLR Procedure
SqlMsmq.dll需要重新注冊.並且目錄需要改到.net Framework 4.0目錄中
drop proc MSMQSend drop assembly [Message];
CREATE assembly Message AUTHORIZATION dbo from 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\SqlMsmq.dll' with permission_set = unsafe GO
CREATE PROCEDURE MSMQSend @queuePath nvarchar(200), @messageLabel nvarchar(300), @messageBody nvarchar(MAX) AS EXTERNAL NAME Message.[SqlMsmq.SqlMsmq].SendMessage; GO
|
2. Service Broker
SSB 支持2012版本與2008版本的互相通訊.不受版本的影響.
兩個instance的Service Broker可能出現的情況:
a) 當Cluster Nodes Move到另外一個節點以后,由於作為source 的conversation handle已經被重置,同時還未發送成功的消息(即還停留在sys.transmission_queue中的消息也會被清空),所以沒有辦法使用以前的conversation了.所以在升級以前需要做一些手工處理.
i. 在升級Current Node前,需要先防止再往Service Broker的發送隊列中添加消息.
ii. 清理DialogPool中的緩存: Truncate table SSBInitiator.dbo.DialogPool(WmsDialogPool,WmsTarget.dbo.WmsDialogPool);
3. Linked Server
Linked Server由於Provide的修改,原來使用的SQLNCLI10需要顯示地指定分布式事務(無論是在查詢或者更新的時候).所以在升級為2012以后,需要把linked Server重置配置一下.將Provide設置成SQLOLEDB.
4. Agent Job
正在執行的Agent Job,由於cluster node的move,將會被cancel掉.此時,將不會發出agent job失敗的mail.所以在升級完成以后,需要檢查一下,當下是不是有什么agent job被cancel掉了.
5. 語法上的注意事項
如下語句,在本地發現了一個bug:
;WITH result AS( SELECT TOP(10) * FROM [dbo].[Product] AS p WITH(NOLOCK) ) SELECT * FROM [result] |
由於with result as是Execute中新增的子句,當cte使用這樣的別名的時候,就會出現錯誤:
Msg 102, Level 15, State 1, Line 2
Incorrect syntax near 'result'.