在Microsoft.SqlServer.Management.Smo.ScriptingOptions中无法找到ScriptForCreateDrop属性

时间:2019-04-05 13:47:11

标签: c# sql-server powershell msdn

我正在编写一个脚本,该脚本可以在数据库(视图,表..)中拖放对象并创建对象 一切正常...但是我在Microsoft.SqlServer.Management.Smo.ScriptingOptions dll中找不到ScriptForCreateDrop。

此属性在microsoft的官方文档中:https://docs.microsoft.com/en-us/dotnet/api/microsoft.sqlserver.management.smo?view=sql-smo-140.17283.0

您曾经遇到过这种情况吗?你知道我为什么找不到它吗?已经尝试安装该dll的最新版本(来自nuget)

谢谢。

2 个答案:

答案 0 :(得分:0)

您可能安装了错误的nuget软件包/版本。

尝试安装此nuget软件包

Microsoft.SqlServer.SqlManagementObjects

答案 1 :(得分:0)

即使在最新的SMO中也似乎存在错误。 V150.18178.0 https://feedback.azure.com/forums/908035-sql-server/suggestions/38383138--smo-scriptingoptions-scriptforcreatedrop-true

我能够通过反射解决此问题并手动设置属性:

ScriptingOptions scrp = new ScriptingOptions();
var field =
scrp.GetType().GetField("scriptingPreferences", BindingFlags.NonPublic | BindingFlags.Instance);
ScriptingPreferences sp = (ScriptingPreferences)field.GetValue(scrp);
sp.Behavior = ScriptBehavior.DropAndCreate;
field.SetValue(scrp, sp);