Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
EXECUTESQLCOMAND是否可以在其他上下文中访问表?_Sql_Sql Server_.net Core - Fatal编程技术网

EXECUTESQLCOMAND是否可以在其他上下文中访问表?

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。没有记录错误消息,

我构建了一个查询,它涉及连接两个存在于不同数据库中的表。我想在.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。没有记录错误消息,因此.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();
}