ฉันมีประสบการณ์ที่คล้ายกันกับการใช้ SMO ผ่าน C # กับ stack trace:
[1896] System.IndexOutOfRangeException: Index was outside the bounds of the array.
[1896] at Microsoft.SqlServer.Management.Smo.BitStorage.SetBit(Int32 itemIndex, BitIndex bitIndex, Boolean value)
[1896] at Microsoft.SqlServer.Management.Smo.SqlSmoObject.AddObjectPropsFromDataReader(IDataReader reader, Boolean skipIfDirty, Int32 startColIdx, Int32 endColIdx)
[1896] at Microsoft.SqlServer.Management.Smo.SqlSmoObject.ImplInitialize(String[] fields, OrderBy[] orderby)
[1896] at Microsoft.SqlServer.Management.Smo.SqlSmoObject.Initialize(Boolean allProperties)
[1896] at Microsoft.SqlServer.Management.Smo.SqlSmoObject.OnPropertyMissing(String propname, Boolean useDefaultValue)
[1896] at Microsoft.SqlServer.Management.Smo.PropertyCollection.RetrieveProperty(Int32 index, Boolean useDefaultOnMissingValue)
[1896] at Microsoft.SqlServer.Management.Smo.PropertyCollection.GetValueWithNullReplacement(String propertyName, Boolean throwOnNullValue, Boolean useDefaultOnMissingValue)
[1896] at Microsoft.SqlServer.Management.Smo.Information.get_MasterDBPath()
ปรากฎว่าเวอร์ชัน CLR / NCLI / SMO ของฉันคือ 10.50.1600.1 การอัปเกรดเป็น 10.53.6000.34 ได้รับการแก้ไขแล้ว - ทำให้ 2008R2 SMO สามารถทำหลายสิ่งกับเซิร์ฟเวอร์ปี 2012 และ 2014 ได้
รับจากชุดคุณลักษณะ
https://www.microsoft.com/en-gb/download/details.aspx?id=44272