Вчера моему администратору БД пришлось внести некоторые изменения в правах/владельцах. Предыдущий мой код SqlDependency работал хорошо.
Но теперь есть то, что я считаю проблемой учетных данных (я верю в это, потому что я видел одну небольшую заметку после долгого поиска в Интернете).
Я успешно подключаюсь к MS SQL, используя эту строку подключения:
connectionString = @"user id=billybob;" +
@"password=bigsecret;" +
"server=11.2.133.8;" +
"Trusted_Connection=no;" +
"database=MYDB; " +
"MultipleActiveResultSets=true;" +
"connection timeout=30";
Затем я пытаюсь запустить SqlDependency с помощью:
SqlDependency.Start(connectionString, null);
Но я получаю эту ошибку:
System.Data.SqlClient.SqlException не было обработано HResult=-2146232060 Message=Подзапрос вернул более 1 значения. Это не разрешено, когда подзапрос следует за =, !=, ‹, ‹= , >, >= или когда подзапрос используется как выражение. Заявление было прекращено.
В чем может быть проблема?
Полная трассировка для Килэнни:
Подзапрос вернул более 1 значения. Это не разрешено, когда подзапрос следует за =, !=, ‹, ‹= , >, >= или когда подзапрос используется как выражение. Заявление было прекращено. в System.Data.SqlClient.SqlConnection.OnError (исключение SqlException, логическое значение 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, Boolean& dataReady) at System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async, Int32 timeout, Boolean asyncWrite) at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource
1, строковое имя метода, логическое значение sendToPipe, время ожидания Int32, логическое значение asyncWrite) в System.Data.SqlClient.SqlCommand.ExecuteNonQuery() в SqlDependencyProcessDispatcher.SqlConnectionContainer.CreateQueueAndService (Логический перезапуск) в SqlDependencyProcessDispatcher.SqlConnectionContainer..ctor(SqlConnectionContainerHashHelper hashHelper, String appDomainKey, Boolean useDefaults) в SqlDependencyProcessDispatcher.Start(String connectionString, String& server, DbConnectionPoolIdentity& identity, String& user, String& database, String& queueService, String appDomainKey, SqlQueueService, String appDomainDemainKey, SqlDependencyProcessDispatcher. Boolean& errorOccurred, Boolean& appDomainStart, Boolean useDefaults) в SqlDependencyProcessDispatcher.StartWithDefault(String connectionString, String& server, DbConnectionPoolIdentity& identity, String& user, String & база данных, String& служба, String appDomainKey, диспетчер SqlDependencyPerAppDomainDispatcher, Boolean& errorOccurred, Boolean& appDomainStart) в System.Data.SqlClient.SqlDependency.Start(String connectionString, String queue, Boolean useDefaults)
Это код, где он называется:
Обратите внимание, что ошибка возникает ДО создания запроса!
public void InitialiseDependency(Action onDependencyMethod)
{
this.onDependencyMethod = onDependencyMethod;
SqlDependency.Start(connectionString, null); //<<<< ERROR ON THIS LINE
using (SqlCommand command = new SqlCommand(
"SELECT [Symbol] FROM [dbo].[tbls] WHERE [Status] = 'NEW'",
conn))
{
SqlDependency dependency = new SqlDependency(command);
dependency.OnChange += new OnChangeEventHandler(OnDependencyChange);
using (SqlDataReader reader = command.ExecuteReader())
{
// Process the DataReader.
}
}
}
Subquery returned more than 1 value.
Эта ошибка связана с каким-то запросом. Возможно, проблема не возникала несколько месяцев, но, наконец, возникла, когда появились подходящие условия. Вам следует связаться с разработчиком приложения. Пожалуйста, покажите всю трассировку стека. - person   schedule 23.02.2016SqlDependency.Start(connectionString, null);
. В-третьих, поставьте этот запрос для нас. - person   schedule 23.02.2016