Почему инструкция create database database возвращает более одного значения?

#c# #sql-server #database #tsql

#c# #sql-сервер #База данных #tsql

Вопрос:

У меня есть следующий оператор database: (и файлы, доступ и все готово для выполнения этого оператора)

 CREATE DATABASE [test1] ON 
    (FILENAME = N'C:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLDATAtest1.mdf'), 
    (FILENAME = N'C:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLDATAtest1_log.ldf') 
FOR ATTACH
  

И когда я делаю это через c# , он возвращает мне более одного значения.

 public void RunQuery(string query, bool longRunning = false)
{
    using (var cmd = new SqlCommand(query, Connection))
    {
        cmd.CommandTimeout = longRunning ? _longRunningCommandTimeout : _commandTimeout;
        cmd.ExecuteNonQuery();
    }
}
  
 Error: Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
The statement has been terminated

at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
   at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Booleanamp; dataReady)
   at System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async, Int32 timeout, Boolean asyncWrite)
   at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Booleanamp; usedCache, Boolean asyncWrite, Boolean inRetry)
   at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
  

База данных фактически подключена, несмотря на возврат этой ошибки.

И это действительно странно. Потому что обычно это просто сообщение. И более того, когда я выполняю один и тот же запрос (от имени того же пользователя) через MSSMS , он выдает мне только следующее:

 Commands completed successfully.
  

Возможно ли, что create database инструкция возвращает более одного результата?

Комментарии:

1. And when I do it via c# it returns me more than one value. <= Как вы запускаете это на c #? Можете ли вы поделиться этим (желательно минимальным) кодом?

2. Вероятной причиной является ошибка в триггере DDL на уровне сервера. Пожалуйста, не публикуйте один и тот же вопрос несколько раз , поскольку это приводит к дублированию усилий для всех вовлеченных сторон.

3. @DanGuzman — Игорь — это не OP. 🙂

4. Не могли бы вы, пожалуйста, опубликовать запрос в вопросе.

5. Вы пробовали отлаживать свой код ? Вы пробовали использовать SQL Server Profiler? Вы можете сделать оба