【问题标题】:C# SMO Executenonquery failed for database数据库的 C# SMO Executenonquery 失败
【发布时间】:2013-09-18 13:28:28
【问题描述】:

我的代码行(我还是菜鸟。); 我试图在 C# 上导出表,所以在搜索并尝试了几个小时后我遇到了这个问题

private void Button_Click(object sender, EventArgs e)
{
    Server server = new Server();

    Database sourceDB = server.Databases["KaynakDB"];
    Table table = sourceDB.Tables["AnaTablo"];

    Database targetDB = server.Databases["KopyaDB"];

    foreach (String query in table.Script())
        try
        {
            targetDB.ExecuteNonQuery(query);
        }
        catch (Exception asd)
        {
            MessageBox.Show(asd.Message);
        }
} 

错误信息是

FailedOperationException was unhandled

An unhandled exception of type 'Microsoft.SqlServer.Management.Smo.FailedOperationException' 
occurred in Microsoft.SqlServer.Smo.dll

当我转到“详细信息”页面时,它显示 “数据库“KopyaDB”的 ExecuteNonQuery 失败。”

“try-catch”也是这么说的。

我错过了什么吗?

【问题讨论】:

  • 为什么要使用 Microsoft.SqlServer.Management?你在哪里设置连接字符串?
  • 你能概括一下你想用这段代码做什么吗?
  • @Kami 我正在尝试将我的表从源数据库复制到副本中(不使用 SQL 的导入和导出向导。)。
  • @giammin ,连接字符串是默认的(本地(我也尝试过输入它)),我只是忘了删除它。 (我的意思是图书馆。)
  • @DearCenkay 查看异常内部以查看失败的原因

标签: c# sql smo


【解决方案1】:

table.Script() 返回查询的单个行的集合,因此您可能希望先将它们存储在 StringBuilder 中,然后作为一个整体执行查询。

var sb = new StringBuilder();
foreach(var line in table.Script()){
    sb.AppendLine(line);
}
targetDB.ExecuteNonQuery(sb.ToString());

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-13
    • 1970-01-01
    • 1970-01-01
    • 2018-01-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多