EXECUTESQLCOMAND是否可以在其他上下文中访问表?
我构建了一个查询,它涉及连接两个存在于不同数据库中的表。我想在.NET Core 2.1应用程序中运行此查询。以下是我得到的: 查询:EXECUTESQLCOMAND是否可以在其他上下文中访问表?,sql,sql-server,.net-core,Sql,Sql Server,.net Core,我构建了一个查询,它涉及连接两个存在于不同数据库中的表。我想在.NET Core 2.1应用程序中运行此查询。以下是我得到的: 查询: INSERT INTO Database2.dbo.Table2 SELECT * FROM Table1 WHERE Col1 = 5 此查询在SQL Operations studio中运行良好 C: 当我通过.NETCore运行查询时,什么都没有发生。我希望将~1000行写入Database2.dbo.Table2,但会写入0。没有记录错误消息,
INSERT INTO Database2.dbo.Table2
SELECT * FROM Table1
WHERE Col1 = 5
此查询在SQL Operations studio中运行良好
C:
当我通过.NETCore运行查询时,什么都没有发生。我希望将~1000行写入Database2.dbo.Table2,但会写入0。没有记录错误消息,因此.NETCore似乎认为它成功地执行了给定的SQL查询。我假设错误是由我引用数据库2引起的。问题的解决方案是避免在给定上下文中使用ExecuteSqlCommand。因为我并不特别需要EF的任何功能来进行此查询,所以我最终使用了System.Data.SqlClient库中的SqlCommand.ExecuteNonQuery。下面是一个工作示例:
using (SqlConnection con = new SqlConnection(< your connection string >))
{
con.Open();
SqlCommand command = new SqlCommand();
command.CommandText = " SQL STATEMENT HERE ";
command.Connection = con;
command.ExecuteNonQuery();
}
我做了一些.NET工作,但没有核心。这是否需要打开您的连接?我在代码中没有看到这一点。调试时,try块是否会被执行?@JacobH这是正确的语法-我们还有许多其他查询以这种方式运行,它们不会尝试在上下文之外引用表。也许可以尝试使用USE语句而不是多部分标识符?或者翻转数据库,以便在从另一个数据库读取数据时在本地执行插入操作。但是Table1存在于另一个数据库@JacobH中,这不会有任何帮助。是否可以尝试从Table1打印SELECT*,其中Col1=5
using (SqlConnection con = new SqlConnection(< your connection string >))
{
con.Open();
SqlCommand command = new SqlCommand();
command.CommandText = " SQL STATEMENT HERE ";
command.Connection = con;
command.ExecuteNonQuery();
}