使用 SqlCommand.ExecuteNonQuery() 创建#temp table

Creating #temp table using SqlCommand.ExecuteNonQuery()

您好,我正在尝试使用 SqlCommand.ExecuteNonQuery 创建一个#temp table。当我执行非查询时没有发生错误,但也没有创建 table 。如果我尝试创建一个普通的 table 它工作正常。如何使用 C# 的 SqlCommand Class 创建 #temp table。

有效的查询:

    string createTempTable = $@"CREATE TABLE [dbo].[Holdings](
                                [Fund] [varchar](25) NULL,
                                [PercentFund] [float] NULL,
                                [CommittedCapital] [float] NULL,
                                [DryPowder] [float] NULL,
                                [SDCashBalance] [float] NULL,
                                [PendingTrades] [float] NULL,
                                [PendingCapital] [float] NULL,
                                [MgmtFee] [float] NULL,
                                [AdjustedCash] [float] NULL,
                                [AsOfDate] [datetime] NULL
                            );";
    //SqlCommand cmd = new SqlCommand(createTempTable, conn);
    //cmd.ExecuteNonQuery();

    SQL.NonQuery(createTempTable, dbName, serverName, false, 300);


public static void NonQuery(string query,
                            string databaseName = "MyDataBase",
                            string serverAddress = "MYServerAddress",
                            bool useServiceAcct = false,
                            int commandTimeout = 30)
{
    string connString = GetConnectionString(serverAddress, databaseName, useServiceAcct);
    using (SqlConnection sqlConn = new SqlConnection(connString))
    using (SqlCommand cmd = new SqlCommand(query, sqlConn))
    {
        sqlConn.Open();
        cmd.CommandTimeout = commandTimeout;
        cmd.ExecuteNonQuery();
    }
}

似乎不​​起作用但未给出错误的查询:

string createTempTable = $@"CREATE TABLE [dbo].[#Holdings](
                            [Fund] [varchar](25) NULL,
                            [PercentFund] [float] NULL,
                            [CommittedCapital] [float] NULL,
                            [DryPowder] [float] NULL,
                            [SDCashBalance] [float] NULL,
                            [PendingTrades] [float] NULL,
                            [PendingCapital] [float] NULL,
                            [MgmtFee] [float] NULL,
                            [AdjustedCash] [float] NULL,
                            [AsOfDate] [datetime] NULL
                        );";
//SqlCommand cmd = new SqlCommand(createTempTable, conn);
//cmd.ExecuteNonQuery();

SQL.NonQuery(createTempTable, dbName, serverName, false, 300);

正如@jonesopolis 在评论中指出的那样,table 会在您关闭连接时消失。如果您正在尝试创建一个可供另一个连接使用的临时文件 table,那么您可以使用带有双井号的全局临时文件:##Holdings。对两者的讨论很好:Local vs Global SQL Server Temporary Tables.