【问题标题】:Impossible to find ScriptForCreateDrop property in Microsoft.SqlServer.Management.Smo.ScriptingOptions在 Microsoft.SqlServer.Management.Smo.ScriptingOptions 中找不到 ScriptForCreateDrop 属性
【发布时间】:2019-08-27 10:38:42
【问题描述】:

我正在编写一个在数据库中删除和创建对象的脚本(视图、表..) 一切正常...但我在 Microsoft.SqlServer.Management.Smo.ScriptingOptions dll 中找不到 ScriptForCreateDrop。

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

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

谢谢。

【问题讨论】:

  • 老实说,我不确定这里的问题是什么。我从 Nuget 安装了最新版本的 SMO,然后我创建了一个新的 Class 和 Sub 并编写了此代码 Dim scriptingOptions As New ScriptingOptions() scriptingOptions.ScriptForCreateDrop = True 我没有收到任何错误。 SMO 版本是14.100.0.0

标签: c# sql-server powershell msdn


【解决方案1】:

即使在最新的 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);

【讨论】:

    【解决方案2】:

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

    尝试安装这个 nuget 包

    Microsoft.SqlServer.SqlManagementObjects

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-05
      • 2023-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多