Создание таблицы #temp с использованием SqlCommand.ExecuteNonQuery () - PullRequest
0 голосов
/ 03 февраля 2020

Здравствуйте. Я пытаюсь создать таблицу #temp с помощью SqlCommand.ExecuteNonQuery. Когда я выполняю запрос без запроса, ошибка не возникает, но таблица также не создается. Если я пытаюсь создать нормальную таблицу, она работает нормально. Как создать таблицу #temp, используя класс SqlCommand C#.

Запрос, который работает:

    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);

1 Ответ

2 голосов
/ 03 февраля 2020

Как отмечает @jonesopolis в комментарии, таблица исчезает при закрытии соединения. Если вы пытаетесь создать временную таблицу, которая будет доступна для другого соединения, вы можете использовать глобальную временную таблицу с двойными хеш-метками: ##Holdings. Хорошее обсуждение двух: Локальный против Глобального SQL Временные таблицы сервера .

...