筆者最近使用Export-SPMetadataWebServicePartitionData 從開發環境導出Metadata ,然後使用Import-SPMetadataWebServicePartitionData將Metadata 備份文件導入到使用SQL server High Availability 的SharePoint 2013 Farm環境的測試環境中,具體導出,導入的命令請參考 SharePoint 2013/2010 Farm間遷移 managed metadata service.
但是使用Import-SPMetadataWebServicePartitionData導入時,遇到如下錯誤
Import-SPMetadataWebServicePartitionData : Cannot bulk load because the file
"\\...\Script\ECMGroup.dat" could
not be opened. Operating system error code 5(Access is denied.).
+ Import-SPMetadataWebServicePartitionData $svc.Id -ServiceProxy $proxyName
-Path ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~
+ CategoryInfo : InvalidData: (Microsoft.Share...cePartitionData:
SPCmdletImportM...cePartitionData) [Import-SPMetadataWebServicePartitionDa
ta], FaultException`1
+ FullyQualifiedErrorId : Microsoft.SharePoint.Taxonomy.Cmdlet.SPCmdletImp
ortMetadataWebServicePartitionData
筆者Google一圈,發現網上的解釋無非以下幾個:
1. 要使用網路路徑 \\...\Script\ECMGroup.dat
2. 要將該共享目錄放置在SQL server服務器上(在DB1上)
3. 要給SQL server service 可以讀寫共享目錄的權限
這些筆者都照做了,還是包一樣的錯誤。
Import-SPMetadataWebServicePartitionData的本質是使用SQL 的Bulk來批量導入數據,於是筆者使用下列語句進行測試:
use [Service_DB]
Bulk insert [dbo].[Table_1]
from "\\...\Script\ECMGroup.dat"
發現連接SQL HAG cluster的時候報錯爲:
Msg 4861, Level 16, State 1, Line 2
Cannot bulk load because the file "\\...\Script\ECMGroup.dat" could not be opened. Operating system error code 5(Access is denied.).
於是筆者將共享目錄設置在DB2上,再運行以上命令,成功了
於是筆者也 Import-SPMetadataWebServicePartitionData的參數改道DB2上的共享目錄,果然成功了。
後來進一步發現,這是因爲當時DB2是整個HAG cluster的主節點。
相關參考:
http://blogs.msdn.com/b/taj/archive/2011/03/20/import-spmetadatawebservicepartitiondata-error-in-multi-server-deployment.aspx